《软件工程与计算(卷二)》-Chapter8-软件设计基础
A级:
软件设计:是关于软件对象的设计,是一种设计活动,具有设计的普遍特性。
软件设计的核心思想:分解和抽象。
分解是横向上将系统分割为几个相对简单的子系统以及各子系统之间的关系。
分解之后每次只需关注经过抽象的相对简单的子系统以及相互之间的关系,从而降低了复杂度。
抽象则是在纵向上聚焦各子系统的接口(与实现相对)。接口是各子系统之间交流的契约,是整个系统的关键所在。
软件工程设计的三个层次和主要思想:高层、中层、低层设计。
高层设计:体系结构设计,关注部件、连接件和配置
中层设计:关注组成构件的模块的划分、导入和导出、过程之间调用关系或者类的协作。
低层设计:深入模块和类的内部,关注具体的数据结构、算法、类型、语句和控制结构等。
软件设计的方法:
结构化设计
面向对象设计
数据结构为中心设计
基于构件的设计
形式化方法设计
常见的设计视角
组合视角:关注功能分解和构造
逻辑视角:静态结构(类、接口及其之间的关系)
依赖视角:互联
信息视角:持久化信息
接口视角:服务的定义,服务的访问
软件设计过程的四个活动:设计出发点,建立候选方案,生成最终方案,评价
B级:
中低层设计的问题:过于依赖细节,无法有效抽象部件的整体特性
设计(名词):一个对象的规格说明。
设计(动词):在一个环境中创建对象的规格说明。
C级:
软件设计过程的四个活动:设计出发点,建立候选方案,生成最终方案,评价
描述软件设计的模型,通常可以分为两类:
静态模型
静态模型是通过快照的方式对系统中时间不变的属性进⾏行描述。通常描述的是状态,而不是行为。
比如:一个数字的列表是按大小排序好的。
动态模型。
动态模型通常描述的是系统⾏行为和状态转移。
比如:排序的过程中如何进行排序。
工程设计与艺术设计
理性主义和经验主义
软件设计的演化性、决策性(跳跃性过程),约束满足(随着设计进行而逐渐发现,约束会发生变化)与多样性