您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 软件工程03-05面向过程的软件设计方法和第四章总体设计4学时
1第四章概要设计2一、软件设计的目标和任务1、目标软件设计的目标是根据用信息域常用的表示方法把软件需求,功能和性能等需求规格说明书中计算机语言描述的用户的需求完全地翻译成计算机程序设计语言能看懂的东西。①数据设计侧重于数据结构的定义,就是把需求分析里面的层次方框图或warnier图表示的数据结构以及参考数据字典里面的内容从程序设计角度上看怎样设计数据结构更合理。3一、软件设计的目标和任务1、目标②系统结构设计定义软件系统各主要成份之间的关系。③过程设计。把结构成份转换成软件的过程性描述。4开发阶段的信息流把需求翻译成文档562、软件设计的任务①概要设计(系统设计),将软件需求转化为数据结构和软件的系统结构。概要设计由技术总监,部门经理和项目经理来做的,有可能会加一两个核心程序员。一、软件设计的目标和任务72、软件设计的任务详细设计(过程设计),通过对结构表示进行细化,得到软件的详细的数据结构和算法。一、软件设计的目标和任务89具体设计过程设计阶段高层设计阶段架构设计用户界面设计数据库设计模块设计实现与测试需求开发概要设计详细设计10角色名称主要职责项目总监负责审批设计的相关文档,在公司级别协调设计过程中需要的技术支持项目经理负责分配设计任务,追踪设计阶段进度,在项目组内协调设计过程中所需资源,参与设计文档的同行评审系统分析员完成相关的设计任务,编写设计文档,修改设计评审中发现的问题项目组开发人员代表参与设计文档的同行评审其他项目经理参与设计文档的同行评审其他项目系统分析员参与设计文档的同行评审质量保证员检查设计过程及设计阶段产生的文档,跟踪发现的问题的解决情况11软件设计过程1、制定规范在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。阅读和理解软件需求说明书,确认用户要求能否实现,明确实现的条件,从而确定设计的目标,以及它们的优先顺序。根据目标确定最合适的设计方法。规定设计文档的编制标准。规定编码的信息形式,与硬件,操作系统的接口规约,122.软件系统结构的总体设计①采用某种设计方法,将系统按功能划分成模块的层次结构②确定每个模块的功能。③建立与已确定的软件需求的对应关系④确定模块间的调用关系⑤确定模块间的接口⑥评估模块划分的质量软件设计过程133.处理方式设计①确定实现系统功能需求所必需的算法,评估算法的性能。②确定满足系统性能需求所必需的算法和模块间的控制方式。a.周转时间b.响应时间c.吞吐量d.精度③确定外部信号的接收发送形式。软件设计过程144.数据结构设计①确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计。②确定输入,输出文件的详细的数据结构。③结合算法设计,确定算法所必需的逻辑数据结构及其操作。④确定对逻辑数据结构所必需的那些操作的程序模块(软件包)软件设计过程15⑤限制和确定各个数据设计决策的影响范围⑥若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则⑦数据的保护性设计a.防卫性设计:在软件设计中就插入自动检错,报错和纠错的功能b.一致性设计:a)保证软件运行过程中所使用的数据的类型和取值范围不变b)在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏c.冗余性设计:针对同一问题,由两个开发者采用不同的程序设计风格不同的算法设计软件,当两者运行结果之差不在允许范围内时,利用检错系统予以纠正,或使用表决技术决定一个正确结果。16数据库设计数据库设计设计准备逻辑设计物理设计安全性设计撰写文档保护性设计设计优化设计评审迭代17数据库设计举例说明用户角色权限1-n1-n所属平台部门或岗位人员角色权限岗位角色对应角色权限对应人员角色对应人员权限对应(平台)人员平台对应人员岗位授权业务范围具体业务人员岗位对应灵活权限分配改变以前业务绑定人的模式18数据库设计(续)195.可靠性设计①可靠性设计也叫做质量设计②在运行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护6.编写概要设计阶段的文档①概要设计说明书②数据库设计说明书③用户手册④制定初步的测试计划软件设计过程20概要设计说明书1、引言编写目的背景参考资料2、结构模型架构描述3、功能设计模块子模块操作流程图4、数据结构数据库设计数据字典217.概要设计评审①可追溯性:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求②接口:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内③风险:确认该设计在现有技术条件下和预算范围内是否能按时实现④实用性:确认该设计对于需求的解决方案是否实用⑤技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达软件设计过程227.概要设计评审⑥可维护性:确认该设计是否考虑了方便未来的维护⑦质量:确认该设计是否表现出良好的质量特征⑧各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么⑨限制:评估对该软件的限制是否现实,是否与需求一致⑩其它具体问题:对于文档、可测试性、设计过程..等进行评估8、在详细设计①确定软件各个组成部分内的算法以及各部分的内部数据组织②选定某种过程的表达形式来描述各种算法。③进行详细设计的评审软件设计过程23二、概要设计的过程1.设想供选择的方案。技术上最高层的几个人,考虑需求规格说明书,以及之前的可行性报告里面都提到几个可行性的方案,做总体设计的人是一个公司里面技术最强的人。2.选取合理的方案①系统流程图。完全从软件角度来画系统的流程。②组成系统的物理元素清单。物理元素一般是系统,子系统,模块,子模块,函数,子函数③成本/效益分析。就是有不同的开发路线,选择那一条开发路线安全性要好,开发软件质量也还可以,最省钱。④开发进度和计划。24二、概要设计的过程3.推荐最佳方案。4.功能分解。把一个功能分成多个小模块,然后每一个块之间怎么样进行沟通。5.设计软件结构。6.数据库设计。7.制定测试计划。8.书写文档①系统说明②用户手册③测试计划④详细的实现计划⑤数据库设计结果9.审查和复查25三、软件设计的概念和原理1.自顶向下,逐步细化2.软件结构(搭出一个大框架)3.程序结构4.结构图5.模块化(模块化思想,把软件分成多个模块)6.抽象(通过抽象完成模块之间对外的一个黑盒装置)7.信息屏蔽和局部化8.模块独立26三、软件设计的概念和原理1.自顶向下,逐步细化将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。2.软件结构①软件结构包括两部分。程序的模块结构和数据的结构。②软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了。27283.程序结构。表明了程序各个部件(模块)的组织情况,是软件的过程表示。4.结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递三、软件设计的概念和原理29三、软件设计的概念和原理5.模块化的概念①软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。②把问题/子问题的分解与软件开发中的系统/子系统或模块/子模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。③公式30计划采购收料发料仓储配送价格管理供应商管理合同管理综合统计管理采购管理库存管理决策平台管理平台业务平台报价询价招标管理计划管理质检管理检验付款编码管理编码经济运营查询经济运营报表经济运营分析结算管理供应商频道商务频道商务平台分解到二级模块图31三、软件设计的概念和原理成本成本/模块最小成本区接口成本软件总成本模块数目模块化和软件成本32三、软件设计的概念和原理6.抽象软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法.①过程的抽象a.在软件需求分析阶段,用“问题所处环境的为大家所熟悉的术语”来描述软件的解决方法。b.在从概要设计到详细设计的过程中,抽象化的层次逐次降低。②数据抽象它实际上是跟数据结构相关连的,前面讲的层次方框图和Warnier图实际上就是一种数据结构的抽象,在面向对象里还会有进一步的数据抽象的方法。33例开发一个CAD软件时的三种抽象层次(1)过程抽象抽象层次Ⅰ.用问题所处环境的术语来描述这个软件:该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个CAD软件实现……。抽象层次Ⅱ.任务需求的描述。CADSOFTWARETASKSuserinteractiontask;2-Ddrawingcreationtask;graphicsdisplaytask;drawingfilemanagementtask;end.在这个抽象层次上,未给出“怎样做”的信息,不能直接实现。34抽象层次Ⅲ.程序过程表示。以2-D(二维)绘图生成任务为例:PROCEDURE:2-DdrawingcreationREPEATUNTIL(drawingcreationtaskterminates)DOWHILE(digitizerinteractionoccurs)digitizerinterfacetask;DETERMINEdrawingrequestCASE;line:linedrawingtask;rectangle:rectangledrawingtask;circle:circledrawingtask;……二维画图又分为以下CASE,案例,任务的集合35(2)数据抽象在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。例如,在CAD软件中,定义一个叫做drawing绘图的数据对象。可将drawing规定为一个抽象数据类型,定义它的内部细节为:TYPEdrawingISSTRUCTUREDEFINDnumberISSTRINGLENGTH(12);geometryDEFIND……notesISSTRINGLENGTH(256);BOMDEFINDENDdrawingTYPE;宏36数据抽象drawing本身由另外一些数据抽象,如geometry、BOM(billofmaterials)构成定义drawing的抽象数据类型之后,可引用它来定义其它数据对象,而不必涉及drawing的内部细节例如,定义:blue-printISINSTANCEOFdrawing;或schematicISINSTANCEOFdrawing;7.信息屏蔽和局部化模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。37三、软件设计的概念和原理8.模块独立(Module)①模块:又称“组件”。它一般具有如下三个基本属性:功能:描述该模块实现什么功能。逻辑:描述模块内部怎么做状态:该模块使用时的环境和条件在描述一个模块时,还必须按模块的外部特性与内部特性分别描述模块的外部特性模块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整个系统造成的影响模块的内部特性完成其功能的程序代码和仅供该模块内部使用的数据内部特征是内部数据,比如说两个数据进行交换,交换时要定义一个临时变量做数据交换。38三、软件设计的概念和原理②模块独立是模块化、抽象、信息屏蔽和局部化概念的直接结果。每个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。③衡量模块独立程度的定性标准----内聚、耦合a.耦合是模块之间的互相连接
本文标题:软件工程03-05面向过程的软件设计方法和第四章总体设计4学时
链接地址:https://www.777doc.com/doc-153173 .html