软件工程SoftwareEngineering五.总体设计软件工程需求分析:解决系统做什么?总体设计:解决怎样做?五.总体设计软件工程5.1总体设计的概念总体设计(SummaryDesign)又称为概要设计或初步设计.通过这个阶段的工作将划分为组成系统的物理元素——程序(Program)、文件(File)、数据库(DataBase)、人工过程和文档(Document)等等,但是每个物理元素仍然处于黑盒子(BlackBox)级,这些黑盒子里的具体内容将在以后仔细设计.总体设计阶段的另一项重要任务是:•设计软件的结构•确定系统中每个程序是由哪些模块组成•确定模块相互间的关系五.总体设计软件工程5.2总体设计的过程总体设计过程分为两个阶段:1)系统设计阶段:确定系统的实现方案2)结构设计阶段:确定软件结构五.总体设计软件工程5.2总体设计的过程•设想供选择的方案•选取合理的方案•推荐最佳的方案•功能分解•设计软件结构•数据库设计•制定测试计划•书写文档•审核和复审五.总体设计软件工程5.2.1设想供选择的方案分析员考虑各种可能的实现方案(Project),并且力求从中选出最佳方案.在总体设计阶段开始时只有系统的逻辑模型,分析员有充分的自由比较不同的物理实现方案,可以从需求分析得到的数据流图入手.常用的方法是:设想在数据流图处理分组的各种可能的方法,抛弃技术上行不通的方法,余下的方法作为可能实现的策略,并且可以启发供选择的物理系统.五.总体设计软件工程5.2.2选取合理方案从上一步提供的方案中选取,至少选取低成本,中等成本和高成本的三种方案.对于每个合理的方案分析员都应该准备下列四份资料:1)系统流程图2)组成系统的物理元素的清单3)成本/效益分析4)实现这个系统的进度计划五.总体设计软件工程5.2.3推荐最佳方案分析员应该综合分析对比各种合理的方案,推荐一个最佳的方案,并且为推荐的方案制定详细的实现计划.用户和有关的技术专家审查推荐的最佳系统,如果确定该系统符合用户的需要,并且是在现有条件下完全能够实现的,则请使用部门负责人进一步审批.在接受分析员所推荐的方案之后,系统设计完成,进入总体设计过程的下一个重要阶段----结构设计.五.总体设计软件工程5.2.4功能分解为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库).对程序(特别是复杂的大型程序)的设计,通常分为两个阶段完成:结构设计(StructureDesign):是总体设计阶段的任务,确定程序由哪些模块组成,以及这些模块之间的关系.过程设计(ProcessDesign):是详细设计阶段的任务,确定每个模块的处理过程.为确定软件结构,首先从实现角度把复杂的功能进一步分解.功能分解导致数据流图进一步细化,同时使用图形工具描述算法.五.总体设计软件工程5.2.5设计软件结构即结构设计,包括确定系统各模块间的关系.通常程序中的一个模块完成一个适当的子功能,而一个程序包含若干个模块,因此考虑把模块组织成良好的层次系统.顶层模块调用它下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的基本功能.软件结构可以用层次图或结构图表示.有些软件的结构可以通过细化的数据流图映射得到.五.总体设计软件工程5.2.6数据库设计对于需要使用数据库的系统,工程师需要对数据库进行设计.包括,数据库表结构,数据存储类型,数据查询,数据备份,数据安全,数据维护,数据库访问权限设计等.五.总体设计软件工程5.2.7制定测试计划在软件开发的早期阶段考虑测试(Testing)问题,能促使软件设计人员在设计时注意提高软件的可测试性.五.总体设计软件工程5.2.8书写文档1)系统说明2)用户手册3)测试计划4)详细的实现计划5)数据库设计结果五.总体设计软件工程5.2.9审核与复审最后应该对总体设计的结果进行严格的技术审查,通过之后再由使用部门从管理和应用的角度进行复审.五.总体设计软件工程5.3软件设计的概念和原理•模块化•抽象•逐步求精•信息隐蔽和局部化•模块独立五.总体设计软件工程5.3.1模块化模块(Modular)是数据说明,可执行语句等程序对象的集合,它是单独命名的而且可通过名字来访问.模块化就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能满...