软件系统复杂,分而治之,每个部分就叫组件。组件对内隐藏职责的实现细节,对外通过接口和系统其他部分交互满足自己的目标。基于组件的软件开发就是在理解系统将要做什么后,捋出需求,把需求全都映射到组件,设计实现和测试配置发布。假定一个酒店管理系统,组件如下图:为顾客和员工提供的功能组件有订房,入住和离店。顾客屏幕和员工屏幕展示信息,预订和房间组件维护在数据存储中的信息。
1-1 酒店管理系统的组件基于组件开发的软件系统可以从2个维度理解,横向维度是系统能完成的功能点和纵向组件。一个功能点通常跨越多个组件,而每个组件通常也是承载多个功能点的部分实现。
1-2 组件的缠绕和分散上图三个功能点,订房间,入住客人和客人离店,每个功能点都横跨多个组件,称为tangling缠绕,一个组件包含有多个功能点的部分称为分散scattering. 功能点的实现在组件里没有严格分离,扩展系统的时候,扩展的组件也不能完全从要扩展的组件完全隔离开来。
2-3 含认证和排队扩展的预定系统增加排队排队功能,顾客订房功能若没有满足条件的房源是进入列表排队。扩展的排队列表组件对订房组件扩展,多少要在订房组件某个地方插入些代码,称为侵入式代码。系统加入新功能点,这种侵入式代码让人异常痛苦。
英文concern表示系统需要提供的功能点也称痛点,requirement则指系统内部需要实现的点. 功能点(痛点)表示软件系统外部对系统的关注点,需求表示软件系统内部一个开发环节,对每一个功能点(痛点)的需求,分析,设计,实现,测试,发布,配置环节都分离到完全独立的模块里,是本书介绍AOSD想要的效果,所有独立的功能点(痛点)模块最后通过组合机制合成一个可执行的运行程序。
用例技术能帮助痛点在开发过程的分离与组合。
1-4 扩展,扩展点和扩展集 1-5 序列光栅 1-6 扩展用例排队列表 2-1 类与痛点矩阵 2-2 预定操作 2-3 含认证和排队的预定操作 3-1 酒店管理系统的用例 3-2 从用例到类 4-1 元素结构和用例片段 4-2 酒店管理系统的用例和类 4-3 组合点用例实现的用例片段 4-4 扩展用例 4-5 组合基本用例和扩展用例的实现 4-6 迭代式组合用例模块
网友评论