? ? 軟件系統(tǒng)復雜,分而治之涕蚤,每個部分就叫組件宪卿。組件對內(nèi)隱藏職責的實現(xiàn)細節(jié),對外通過接口和系統(tǒng)其他部分交互滿足自己的目標万栅∮蛹兀基于組件的軟件開發(fā)就是在理解系統(tǒng)將要做什么后,捋出需求烦粒,把需求全都映射到組件次绘,設計實現(xiàn)和測試配置發(fā)布。假定一個酒店管理系統(tǒng)撒遣,組件如下圖:為顧客和員工提供的功能組件有訂房邮偎,入住和離店。顧客屏幕和員工屏幕展示信息义黎,預訂和房間組件維護在數(shù)據(jù)存儲中的信息禾进。
? ? 基于組件開發(fā)的軟件系統(tǒng)可以從2個維度理解,橫向維度是系統(tǒng)能完成的功能點和縱向組件廉涕。一個功能點通承涸疲跨越多個組件,而每個組件通常也是承載多個功能點的部分實現(xiàn)狐蜕。
? ? 上圖三個功能點宠纯,訂房間,入住客人和客人離店层释,每個功能點都橫跨多個組件婆瓜,稱為tangling纏繞,一個組件包含有多個功能點的部分稱為分散scattering. 功能點的實現(xiàn)在組件里沒有嚴格分離贡羔,擴展系統(tǒng)的時候廉白,擴展的組件也不能完全從要擴展的組件完全隔離開來。
? ? 系統(tǒng)增加排隊排隊功能乖寒,顧客訂房功能若沒有滿足條件的房源是進入列表排隊猴蹂。擴展的排隊列表組件對訂房組件擴展,多少要在訂房組件某個地方插入些代碼楣嘁,稱為侵入式代碼磅轻。系統(tǒng)加入新功能點,這種侵入式代碼讓人異常痛苦逐虚。
? ? 英文concern表示系統(tǒng)需要提供的功能點也稱痛點聋溜,requirement則指系統(tǒng)內(nèi)部需要實現(xiàn)的點. 功能點(痛點)表示軟件系統(tǒng)外部對系統(tǒng)的關注點,需求表示軟件系統(tǒng)內(nèi)部一個開發(fā)環(huán)節(jié)痊班,對每一個功能點(痛點)的需求勤婚,分析摹量,設計涤伐,實現(xiàn)馒胆,測試,發(fā)布凝果,配置環(huán)節(jié)都分離到完全獨立的模塊里祝迂,是本書介紹AOSD想要的效果,所有獨立的功能點(痛點)模塊最后通過組合機制合成一個可執(zhí)行的運行程序器净。
? ? 用例技術(shù)能幫助痛點在開發(fā)過程的分離與組合型雳。