• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            我要啦免费统计


            2008-05-04 作者:suishi123 出處:CSDN
             

            框架是:

            • 應(yīng)用或子系統(tǒng)的設(shè)計
            • 表示為:
            • 一組抽象類和
            • 這些類中對象的協(xié)作方法

            用框架來創(chuàng)建應(yīng)用通過:

            • 建立一個新的子類
            • 組合對象
            • 修改運(yùn)行中的程序

            (編輯腳本)

            逆向控制

            子程序庫

            用戶程序調(diào)用可重用的代碼.

            用戶設(shè)計程序結(jié)構(gòu).

            框架

            重用代碼調(diào)用客戶程序

            主要由重用代碼(框架)決定程序結(jié)構(gòu)

            框架應(yīng)用的部件

            新的類使用組件的步組L

            • 建立組件
            • 連接組件
            • 參數(shù)化組件

            測試框架

            類 - Test, TestResult, TestSuite

            通過創(chuàng)建 Test的子類來使用。

            定義 instance methods 來 配置、運(yùn)行測試

            定義 class methods 來建立一個測試單元

            Model/View/Controller

            Classes - Model, View, Controller, ApplicationModel, ValueModel, etc.

            Use by using GUI builder to make a screen; the GUI builder automatically builds an ApplicationModel and a window-spec that later gets interpreted to build a window.

            HotDraw

            Classes - Figure, Drawing, Handle, Tool, DrawingEditor

            Subclass DrawingEditor, Figure, rarely Drawing

            Parameterize Handle, Tool.

            There is a graphical tool for defining new Tools.

            White-box vs. Black-box

            White-box

            用戶化通過定義子類強(qiáng)調(diào)繼承

            必須了解內(nèi)部結(jié)構(gòu)

            設(shè)計簡單容易

            學(xué)習(xí)困難,需要更多的編程

            Black-box

            通過配置用戶化

            強(qiáng)調(diào)多態(tài)

            必須了解接口

            設(shè)計復(fù)雜、困難

            學(xué)習(xí)容易,需要較少的編程

            框架設(shè)計的第一規(guī)則

            相關(guān)的原則

            框架是抽象: 人們從實際的應(yīng)用中歸納出來

            設(shè)計重用的代碼需要疊代

            框架編碼領(lǐng)域知識

            框架的客戶是程序員(譯者:最終還是應(yīng)用的客戶)

            從實際案例中歸納

            人們思考是具體的,不是抽象的.

            通過研究具體的例子抽象被徹底的發(fā)現(xiàn)

            歸納:

            • 找出名稱不同的相同事物,
            • 通過參數(shù)化排除差異,
            • 把大的事物分解成小的部分以發(fā)現(xiàn)類似的組件, 并且
            • 分類相似的事物.

            發(fā)現(xiàn)抽象類

            抽象類的發(fā)現(xiàn)是通過歸納具體類.

            定義類共有的SuperClass:

            • 定義操作的公共接口
            • 把具有相同實現(xiàn)的操作轉(zhuǎn)移到SuperClass
            • 把實現(xiàn)不同的操作定義為抽象操作
              (continued)
            • 定義公共接口(interface)
              • 重命名操作使各個類有相同的操作名
              • 重新排列參數(shù)、修改參數(shù)類型等.
              • 重構(gòu) 操作

            框架需要迭代

            能夠重用的代碼需要多次迭代.

            軟件工程基本規(guī)則

            如果程序沒有測試, 他將不能工作.

            結(jié)論: 還沒被重用的軟件是不能重用的.

            框架編碼領(lǐng)域知識

            框架解決特定的一組問題.

            Not always application-domain specific, but domain specific. (GUI, distribution, structured drawing editor, business transaction processing, workflow)

            客戶是程序員

            框架的目的是更容易的構(gòu)建應(yīng)用.

            適用這些標(biāo)語為程序員:

            客戶總是正確的.

            我們是客戶驅(qū)動.

            理解你的客戶.

            實例驅(qū)動的設(shè)計

            歸納是迭帶的.

            小的改變是最多的.

            少數(shù)大的改變代表看待問題的新方法.

            更快的歸納:

            • 接受不同的意見
            • 解釋/辯護(hù) 當(dāng)前的設(shè)計

            開發(fā)框架的理想的方法

            1) 分析問題域

            • 學(xué)習(xí)眾所周知的抽象.
            • 收集用框架編寫的例子程序. (最少 4 or 5).

            設(shè)計框架的理想方法

            2) 設(shè)計覆蓋例子的抽象.

            3) 通過編寫這些例子來測試框架.

            • 每個例子都是相互獨立的程序.
            • 履行一個測試意味著開發(fā)一個軟件.

            抽象設(shè)計

            設(shè)計階段: 尋找共性, 描述每個想法.

            用設(shè)計模式

            • 暗示需要經(jīng)驗

            靈活性和洞察力是有用的, 而且進(jìn)展是困難的.

            設(shè)計模式

            設(shè)計模式使設(shè)計更接近黑盒.

            怎樣表示對象的變化

            • Strategy -- 算法
            • Prototype -- 產(chǎn)品
            • State -- 對象的狀態(tài)
            • Mediator – 對象相互調(diào)用的方法

            設(shè)計模式的使用

            模式使設(shè)計更復(fù)雜.

            模式使設(shè)計更有彈性.

            你需要這種彈性嗎?

            這復(fù)雜性是否值得?

            在兩個模式中做選擇時選擇使設(shè)計更簡單的.

            為什么理想永遠(yuǎn)是理想

            分析領(lǐng)域需求分析個別的例子,已經(jīng)是非常困難的.

            • 即使例子已經(jīng)被分析也僅僅實用.
            • 分析和實現(xiàn)例子是工程的很大一部分成本.
            • 人們需要匯集例子實現(xiàn)的反饋.

            開發(fā)框架的好辦法

            精選兩個相似的應(yīng)用.

            包括在相同領(lǐng)域有經(jīng)驗的開發(fā)者.

            一個框架組

            兩個應(yīng)用組

            • 框架組
              交換軟件意見
              考慮其他的應(yīng)用
              解釋教受框架
            • 應(yīng)用組
              盡力重用框架
              抱怨框架如何難于使用

            開發(fā)框架的典型方法

            注意到許多應(yīng)用是相似的.

            用面向?qū)ο蟮恼Z言開發(fā)領(lǐng)域中的下一個應(yīng)用.

            把軟件劃分為可重用和不可重用兩部分.

            開發(fā)下一個應(yīng)用盡可能的重用可重用的部分.

            驚奇! 框架的重用性不好.

            修改.

            開發(fā)下一個盡可能重用的軟件.

            重用的副作用

            相互沖突的目標(biāo)

            • 按時交付系統(tǒng)
            • 重用

            重用的花費(fèi)是昂貴的

            堅持重用是困難的

            重用的有利的一面

            框架使用者利用框架開發(fā)者的經(jīng)驗.

            僅增加有價值的特性.

            幫助防止框架太復(fù)雜、太抽象.

            另一種策略

            定義框架 – 原形幾個小的應(yīng)用.

            創(chuàng)建真實應(yīng)用.

            重構(gòu)框架和老的應(yīng)用.

            過程摘要

            以想得到的應(yīng)用的例子開始

            疊代的開發(fā)抽象

            通過創(chuàng)建應(yīng)用來測試

            細(xì)節(jié)

            1) 三個例子

            2) White-box 框架

            3) 組件庫

            4)熱點( Hot Spots)

            5) 扁平化對象

            (continued)

            6) 平滑對象

            7) Black-box 框架

            8) Visual Builder

            9) 語言工具

            http://st-www.cs.uiuc.edu/users/droberts/evolve.html

            應(yīng)用產(chǎn)生器

            Black-box 更容易:

            用a picture描述應(yīng)用

            從 a picture產(chǎn)生代碼

            可視化編程語言使非程序員也能創(chuàng)建應(yīng)用.

            黑盒框架的缺點

            黑盒框架趨向于有:

            • 更多種類的對象
            • more artificial kinds of objects(真不知怎么描述?)
            • 對象間更復(fù)雜的關(guān)系
            • 更多對象

            不完善的框架強(qiáng)迫你調(diào)試更復(fù)雜的系統(tǒng).

            模版和重構(gòu)

            重構(gòu)

            • 在不影響功能的情況下改變程序結(jié)構(gòu).
            • 修改重用問題的方法.
            • 創(chuàng)建一個彈性的 "hot spot"
            • 經(jīng)常應(yīng)用一個模版

            重構(gòu)幫助發(fā)現(xiàn)組合

            框架設(shè)計提示

            用對象組合代替繼承

            多使用模版 /少泛化

            框架應(yīng)該打破限制

            戰(zhàn)略

            開發(fā)框架是昂貴的,想清楚再做.

            • 框架開發(fā)需要長的周期.
            • 好的框架能給你帶來競爭優(yōu)勢.

            從簡單開始.

            • 有 OOP經(jīng)驗
            • 選擇訓(xùn)練好的抽象
            • 先建一個小的框架
            • 歸納已經(jīng)存在的系統(tǒng)
            • 起先保持小的用戶群

            客戶是至關(guān)緊要的

            進(jìn)早的找到用戶,并聽取他們的反饋.

            是你最初的客戶成功.

            最初的客戶是開發(fā)小組的一部分.

            重用的環(huán)節(jié)

            現(xiàn)實: Projects may customize the initial framework, and start competing streams of development.

            處理疊代

            不要說框架是有用的除非你的客戶這么說.

            當(dāng)框架演化時保持小的客戶群.

            一個成功的框架必須不斷發(fā)展來適應(yīng)新的用戶需求.

            不要不停的修補(bǔ). 有計劃的發(fā)布版本 并協(xié)調(diào)客戶.

            文檔和練習(xí)

            框架文檔的價值在

            • 怎樣使用
            • 怎么擴(kuò)展 /他如何工作

            重用的程序一定要是可理解的.

            精練的文檔使框架更重用.

            文檔以例子為基礎(chǔ).

            文檔和練習(xí)必須經(jīng)過測試.

            Documenting system shows how to change it.

            Framework developers must be intimately involved.

            NIH vs. TILI

            Problem with reuse is NOT fault of customer.

            Software is not as reusable as it is claimed.

            It is hard to make software reusable.

            可重用的設(shè)計是困難的

            • 對于應(yīng)用領(lǐng)域 框架必須是抽象并強(qiáng)大的
            • 必須是可定制的對于用戶
            • 必須容易理解
              • 簡單是至關(guān)重要的
              • 需要好的文檔
            posted on 2011-12-22 23:23 閱讀(397) 評論(0)  編輯 收藏 引用 所屬分類: life
            7777精品久久久大香线蕉| 久久人妻AV中文字幕| 久久综合九色综合97_久久久| 成人妇女免费播放久久久| 久久亚洲国产欧洲精品一| 青青久久精品国产免费看| 无码人妻精品一区二区三区久久久| 精品蜜臀久久久久99网站| 久久九九久精品国产| 色偷偷久久一区二区三区| 久久国产精品国产自线拍免费| 青草久久久国产线免观| 丰满少妇人妻久久久久久| 色诱久久av| 欧美日韩中文字幕久久伊人| 久久精品亚洲AV久久久无码| 91久久精品国产免费直播| 国产91色综合久久免费| 久久99国产一区二区三区| 99久久综合狠狠综合久久| 亚洲国产精品无码久久久秋霞2 | 久久婷婷人人澡人人| 久久精品国产亚洲AV无码偷窥| 久久综合久久鬼色| 99久久综合狠狠综合久久| 久久久国产精品福利免费| 久久久久AV综合网成人| 久久精品国产亚洲av麻豆图片 | 久久国产精品免费| 久久香蕉国产线看观看乱码| 97精品久久天干天天天按摩| 色诱久久久久综合网ywww| 亚洲av成人无码久久精品| 欧美精品国产综合久久| 2021久久精品免费观看| 亚洲国产成人精品久久久国产成人一区二区三区综| 777午夜精品久久av蜜臀| 久久久久久毛片免费看 | 久久人人爽人人爽人人爽| 国产高清美女一级a毛片久久w | 中文字幕热久久久久久久|