设计工程
什么是软件设计工程*
软件设计开始于软件需求分析和规约之后,将需求转换为软件系统的重要环节,分析怎样做的问题,包含两个阶段:软件体系结构设计和部件级设计
软件设计的任务:*
软件设计的输入是软件分析模型,使用一种设计方法,软件分析模型中通过数据、功能和行为模型所展示的软件需求信息被传送给设计阶段,产生数据\类设计、体系结构设计、接口设计、部件级设计
软件设计原则,遵循什么原则进行设计:*
1.抽象化和逐步求精:
抽象:控制复杂性的基本策略。将注意力集中在某一层进行考虑,忽略低层次的细节
抽象的过程由特殊到一般,上层概念是下层概念的抽象,下层概念是上层概念的细化
主要的抽象手段:过程抽象和数据抽象
过程抽象(算法步骤):任何完成明确定义功能的操作都可以看作一个单个实体
数据抽象(类的定义):定义数据类型,和施加该类型的操作
逐步求精:把问题求解过程分解成若干个阶段,每步都比上一步更加精化
2.模块化:
模块:数据说明,可执行语句等程序的集合单独命名
模块化:系统分解和抽象的过程,划分成较小的相互独立但又相互关联的部件
3.信息隐藏:
每个模块的实现细节对于其他模块来说应该是隐蔽的
块中包含的信息,不允许其他不需要这些信息的模块使用
4.模块独立
模块独立:模块完成独立的功能并且其他模块的接口简单,
模块独立的重要性
模块的独立性可以由两个指标来衡量:内聚度与耦合度
内聚:是一个模块内部各个元素彼此结合的紧密程度的度量
耦合:模块之间的相互独立性的度量,耦合度取决于:接口的复杂程度、调用模块的方式、通过接口的信息类型
模块
模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,在软件的体系结构中,模块是可组合、分解和更换的单元。
模块化
模块化指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
信息隐蔽
信息隐蔽指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的。
模块独立性
模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
内聚性
内聚性又称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
偶然内聚
偶然内聚指一个模块内的各处理元素之间没有任何联系。
逻辑内聚:
逻辑内聚指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
时间内聚
时间内聚指需要同时执行的动作组合在一起形成的模块。
通信内聚
通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。
顺序内聚
顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。
功能内聚
功能内聚指模块内所有元素共同完成一个功能,缺一不可。因此模块不能再分割。
耦合性
耦合性也称块间关系,指软件系统结构中各模块间相互联系紧密程度的一种度量。
无直接耦合
无直接耦合指两个模块之间没有直接关系,它们分别从属于不同模块的控制和调用,它们之间不传递任何信息。
数据耦合
数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中值传递。
标记耦合
标记耦合指两个模块之间传递的是数据结构。
控制耦合
控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调用模块通过该控制变量的值有选择地执行块内某一功能。
公共耦合
公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合。公共数据环境可以是全程变量或数据结构、共享的通信区、内存的公共覆盖区及任何存储介质上的文件、物理设备等。
内容耦合
内容耦合指一个模块直接调用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。
软件体系结构设计:*
发展过程:单主机结构、客户\服务器结构(C\S)、浏览器\服务器结构(B\S)
部件级设计技术*
结构化程序设计方法:
1.图形表示法
程序流程图、N-S图、PAD
2.判定表
判定表:又称判断表,是一种图形工具,适合于描述加工判断的条件较多,各条件又相互组合的逻辑功能,它共分四大部分:条件、状态、决策方案和决策规则。
3.设计性语言PDL
什么是模块间的耦合性?有哪几种耦合性?简述降低模块间耦合度的方法。
模块间的耦合性是根据模块的外部特征提出的,是对软件系统结构中各模块间相互联系紧密程度的一种度量,也称块间关系。耦合程度由低到高分为6种:
① 无直接耦合(不传递任何消息)。
② 数据耦合(传递的是值)。
③ 标记耦合(传递的是数据结构)。
④ 控制耦合(传递的是控制变量,例如开关、标志等)。
⑤ 外部耦合(传递的是I/O环境)
⑥公共耦合(传递的是在公共数据环境中的数据)。
⑦ 内容耦合(传递的是一个模块的内部数据,往往出现在汇编语言中)。
模块间联系越紧密,其耦合性越强,模块的独立性越差。提高模块独立性,降低模块间耦合度的措施是:
① 在耦合方式上降低模块间接口的复杂性。
· 模块接口方式不采用直接引用(内容耦合),而采用调用方式(例如过程语句调用);
· 模块接口信息通过参数传递且传递信息的结构尽量简单,不用复杂数据结构(例如过程、指针等),参数个数不宜过多。
② 在传递信息类型上尽量使用数据耦合,避免控制耦合,慎用或有控制地使用公共耦合。