总体设计【软件工程总结】

1、总体设计过程主要由两个阶段组成:系统设计阶段、结构设计阶段。

    1)设想供选择的方案:抛弃需求分析阶段得出的数据流图中在技术上行不通的分组方法,余下的方法作为可能的方案。

    2)选取合理的方案:至少选出低成本、中等成本和高成本三种方案,对于每种方案都要准备一下四份资料:

        ①系统流程图

        ②组成系统的物理元素清单

        ③成本/效益分析

        ④实现这个系统的进度计划

    3)推荐最佳方案:之后进入总体设计的一下阶段——结构设计

    4)功能分解:分析数据流图中的每一个处理的功能,若过分复杂,必须将其分解为一系列易于理解的简单功能。

    5)设计软件结构:对于程序的每个子功能,设计出对应的模块,并把模块组织成良好的层次系统,模块自顶向下调用模块,最下层模块完成最具体的功能,可用层次图或结构图来描绘。

    6)设计数据库

    7)制定测试计划:提高软件的可测试性。

    8)手写文档:记录总体设计的结果:

        ①系统说明

        ②用户手册

        ③测试手册

        ④详细地实现计划

        ⑤数据库设计结果

    9)审查和复审:经过严格的技术审查后,再由客户从管理的角度进行复审。

2、设计原理

    1)模块化:即把程序划分为独立命名且可独立访问的模块,每个模块完成一个子功能。注意,随着模块数量的增加,每个模块的规模减小,使得开发单个模块的工作量减少,但是,设计模块间接口所需要的工作量也将增加。所以,模块数量要合理。模块化原理使软件结构清晰,易于设计和理解。

    2)抽象:当考虑任何问题的模块化解法时,可以提出许多抽象的层次。软件工程的每一步都是对软件解法的抽象层次的一次精化,下面讲的逐步求精也与抽象紧密相连。

    3)逐步求精:是人类解决复杂问题的基本方法,也是软件工程技术的基础,逐步求精可定义为“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑”,是一个细化的过程。抽象和求精是互补的,抽象使得设计者能说明过程和数据,同时忽略底层细节;求精则帮助设计者在设计过程中逐步揭示出底层细节。

    4)信息隐藏和局部化:信息隐藏指出,设计一个模块时,使得其它模块不需要的一些信息不可访问。局部化即把一些关系密切的软件元素物理地放得彼此靠近,局部化有助于信息隐藏。如此,当软件需要维护时,信息隐藏使得引入的错误影响软件其它部分的可能性减小。

    5)模块独立:是模块化、抽象、信息隐藏和局部化概念的直接结果。模块独立度有两个定性指标

        ①耦合:衡量不同模块彼此间互相依赖的紧密程度,取决于模块间接口的复杂度,进入或访问一个模块的点,以及接口的数据。我们应追求耦合度弱的系统,耦合度强烈会加大软件复杂度。

        ②内聚:衡量一个模块内各个元素彼此结合的紧密程度。我们应追求高内聚的系统,一个模块中的任务彼此间关系紧密。

3、启发规则:开发人员在长期实践中积累起来的丰富经验。

    1)改进软件结构提高模块独立性。

    2)模块规模应当适中。

    3)深度、宽度、扇出和扇入都应适当:它们分别是软件结构中控制的层数、同一层次上的规模总数的最大值、一个模块直接调用的模块数目、直接调用一个模块的上级模块数目。

    4)模块的作用域应该在控制域之内。

    5)力争降低模块接口的复杂度

    6)设计单入口、单出口的模块

    7)模块功能应当可以预测

4、描绘软件结构的图形工具:层次图和HIPO图、结构图。

你可能感兴趣的:(软件工程)