第八章 设计概念
1.分析模型到设计模型
8.2 设计过程
1.可以指导良好设计演化的3个特征:(1)设计必须实现所有包含在需求模型中的明确需求,而且必须满足利益相关者期望的所有隐含需求。(2)对于那些生成代码的人和那些进行测试以及随后维护软件的人而言,设计必须是可读的、可理解的指南。(3)设计必须提供软件的全貌,从实现的角度说明数据域、功能域和行为域。
2.质量属性:FURPS,功能性、易用性、可靠性、性能、可支持性
8.3 设计概念
1.抽象
2.体系结构,指软件的整体结构和这种结构为系统提供概念完整性的方式。需要给出的:结构特性、外部功能特性、相关系统族
3.模式,承载了已证实的解决方案的精髓
4.模块化
5.信息隐蔽,给出接口
6.功能独立,高内聚性和低耦合性
7.细化,对抽象细节的详细说明
8.重构,重构之后要检查冗余、没有使用的设计元素、低效的或不必要的算法、拙劣的或不恰当的数据结构以及其他设计不足
面向对象的设计概念
1.设计类:(1)用户接口类(2)业务域类(3)过程类(4)持久类(5)系统类
2.继承
3.信息message
4.多态性
8.4 设计模型
1.
2.设计模型元素
(1)数据设计元素,数据模型->数据结构,数据模型->数据库体系结构
(2)体系结构设计元素,来自a.应用域信息,b.特定的需求模型元素,c.体系结构风格
(3)接口设计元素,重要元素有用户界面、外部接口和内部接口
(4)构件元素
(5)部署元素
第九章 体系结构设计
1.什么是体系结构?
程序或计算系统的软件体系结构是指系统的一个或者多个结构,它包括软件构件、构件的外部可见属性以及它们之间的相互关系。
2.体系结构为什么重要?
(1)软件体系结构的表示有助于对计算机系统开发感兴趣的各方开展交流
(2)体系结构突出了早期的设计决策,这些决策对随后所有的软件工程工作有深远的影响,同时对系统作为一个可运行实体的最后成功有重要作用。
(3)体系结构“构建了一个相对小的、易于理解的模型,该模型描述了系统如何构成以及其构件如何一起工作”。
9.3 体系结构风格
1.每种风格描述一种系统类别,系统类别有:(1)完成系统需要的某种功能的一组构件(2)能使构件间实现“通信、合作和协调”的一组连接件;(3)定义构件如何集成为系统的约束(4)语义模型,能使设计者通过分析系统组成成分的已知属性来理解系统的整体性质。
2.体系结构风格的简单分类:(1)以数据为中心的体系结构(2)数据流体系结构(3)调用和返回体系结构(4)面向对象体系结构(5)层次体系结构(6)客户端/服务器体系结构(7)分布式对象DOC
3.体系结构模式:(1)并发性,应用程序必须并行处理多个任务(2)数据的持久存储(3)分布式
9.4 体系结构设计
1.软件必须放在环境中,须定义外部实体
2.定义原型。原型是表示核心抽象的类或模式,该抽象对于目标系统体系结构的设计非常关键。
3.将体系结构精化为构件
4.描述系统实例
9.5 分析体系结构设计
1.收集场景
2.引出需求、约束和环境描述
3.描述那些已经被选择用于解决场景和需求的体系结构风格/模式
4.通过单独地考虑每个属性来评估质量属性。
5.针对特定的体系结构风格,确定质量属性对各种体系结构属性的敏感性
6.使用第5步进行的敏感性分析鉴定候选体系结构
9.6 使用数据流进行体系结构映射
1.一般的映射方法:(1)分离输入和输出流的边界;transaction流,分离出变换中心(3)按要求加入控制模块(4)使用有效的模块化概念优化生成的程序结构
2.变换流和事务流的不同。
第十章 构件级设计
1.什么是构件?
构件是系统中模块化的、可部署的和可替换的部件,该部件封装了实现并暴露了一组接口。
面向对象的观点:构件包括一组协作的类
传统的观点:一个构件就是程序的一个功能要素,程序由处理逻辑及实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。
10.2 设计基于类的构件
1.基本设计原则:(1)开闭原则OCP,即模块应该对外延具有开放性,对修改具有封闭性。(2)Liskov替换原则,LSP,即子类可以替换它们的基类(3)依赖倒置原则DIP,即依赖于抽象而非具体实现(4)接口分离原则ISP,即多个用户专用接口比一个通用接口好(5)单一责任原则SRP,即每个模块或类都应对软件功能的单个部分负责,并且职责完全用类进行封装(6)的米特尔法则LoD或最小公布原则LSP(7)发布复用等价性原则REP(8)共同封装原则CCP(9)共同复用原则CRP
2.构件级设计指导方针:1.构件2.接口3.依赖与继承
3.内聚性意味着构件或者类只封装那些相互关联密切,以及与构件或类自身有密切关系的属性和操作。(1)功能内聚(2)分层内聚(3)通信内聚
4.耦合是类之间彼此联系程度的一种定性度量。
10.3 实施构件级设计
1.标识出所有与问题域相对应的设计类
2.确定所有与基础设施域相对应的设计类
3.细化所有不需要作为可复用构件的设计类。
a.在类或构件协作时说明消息的细节。
b.为每个构件确定适当的接口
c.细化属性,并且定义实现属性所需要的数据类型和数据结构
d.详细描述每个操作中的处理流。
4.说明持久数据源(数据库和文件)并确定管理数据源所需要的类
5.开发并且细化类或构件的行为表示。
6.细化部署图以提供额外的实现细节。
7.考虑每个构件级设计表示,并且时刻考虑其他可选方案。
对象约束语言OCL
1.context
2.property
3.operation
4.keywords
N-S Design
程序设计语言
第十一章 用户界面设计
1.黄金规则:(1)用户操纵控制(2)减轻用户记忆负担(3)保持界面一致
2.用户界面设计模型:(1)用户模型(2)设计模型(3)心理模型(4)实现模型
界面分析
理解问题就意味着了解(1)通过界面和系统交互的人(2)最终用户为完成工作要执行的任务(3)作为界面的一部分而显示的内容(4)任务处理的环境
1.用户分析
2.任务分析和建模
3.显示内容分析
界面设计步骤
1.使用界面分析中获得的信息,定义界面对象和动作。
2.定义那些导致用户界面状态发生变化的事件,并对行为建模。
3.描述每个界面状态,就像最终用户实际看到的那样。
4.简要说明用户如何从界面提供的界面信息来解释系统状态。
设计问题
1.响应时间
2.帮助设施
3.错误处理
4.菜单和命令标记
5.应用系统的可访问性
6.国际化