版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北京理工大学软件工程实践汤铭端中国航天科工集团公司204所第四讲软件设计内容n包括软件结构设计和软件详细设计n软件设计的概念n软件设计的过程n软件设计的方法n软件设计的产品目的n掌握软件设计基本概念n掌握软件设计过程n了解基本软件设计方法(SC+流程图)n了解软件设计说明的内容条目设计n设计:为了能够足够详细地定义一种设备、一个处理或一个系统,以便保证其物理实现,而应用各种技术和原则的过程n设计者的目标是生成一个随后要构造的实体的一种模型或表示n开发模型的过程综合了基于构造类似实体的经验的直觉和判断、一系列指导模型演化路径的原则和直观推断、一系列判断质量的标准以及导出最终设计表示的迭代过程软件
2、设计的任务n数据设计:将分析时创建的信息域模型变换为实现软件所需的数据结构n结构设计:定义软件系统各主要部件之间的关系n接口设计:描述软件内部、软件和协作系统之间以及软件与人之间如何通信n过程设计:把系统结构部件转换成软件单元的过程性描述软件设计视图数据设计过程设计结构设计概要设计详细设计管理角度技术观点软件设计的重要性质量n设计是在软件开发中形成质量的环节n设计是能将用户需求转化为完整的软件产品或系统的唯一方法n设计是软件工程和软件维护的基础软件设计的过程n软件设计是一个迭代的过程n先进行高层次的结构设计n后进行低层次的过程设计n穿插进行数据设计和接口设计良好设计的特征(设计目标)n设计必须
3、实现所有包含在分析模型中的明示需求,并且必须满足客户希望的所有潜在需求n设计对于软件的编码、测试、维护人员必须是可读的、可理解的n设计应该提供软件的完整面貌,包括从实现角度所见的数据、功能、流程设计的指南1 设计应该展示一种层次化结构2 设计应该模块化,即逻辑地划分成完成特定功能和子功能的构件3 设计应该包括对数据、结构、界面和部件的清楚表述4 设计应该导出适于实现目的和由公认的数据模式导出的数据结构5 设计应该导出具有独立功能特征的模块6 设计应该导出降低模块和外部环境间连接复杂度的接口7 设计应该通过使用可重复的方法来得到,这些方法被来源于软件需求分析的信息所驱动设计原则n设计过程不应该受
4、“隧道视野”的限制n设计对于分析模型应该是可追踪的n设计不应该从头做起n设计应该缩短软件和现实世界的“智力距离”n设计应该表现出一致性和集成性n设计应该构造以适应修改n设计应该构造以使得即使遇到异常的数据、事件或操作条件时也能够平滑、轻巧地降级n设计不是编码,编码不是设计n在创建设计时就应该可以评估质量,而不是在事情完成之后n应该复审设计以减少概念性错误设计概念n抽象n求精n模块化n软件结构体系n控制层次n结构划分n数据结构n软件过程n信息隐藏设计的独立性判别n内聚:模块相对功能密度的度量n耦合:模块间相对独立性的度量内聚n内聚指的是一个模块内部各组成部分的处理动作的组合强度,又称块内联系。n
5、软件结构设计的设计原则是,要求每一个模块的内部都具有很强的内聚性,它的各个组成部分彼此都密切相关,是为了完成一个共同的功能而组合在一起的。减弱模块之间的耦合和提高模块内的内聚性,是两个相辅相成的设计原则。G.Myers的内聚七等级n偶然内聚:模块内各成分无实质性的联系,只是偶然地被凑到一起。n逻辑内聚:模块内部各组成部分的处理动作在逻辑上相似,但功能却彼此不同或无关。n时间内聚:将若干在同一个时间带内进行的工作集中在一个模块内,但这些工作彼此无关。n过程内聚:模块内部包含的各个成分按照某种确定的顺序进行,但所做工作没有什么关系。n通讯内聚:模块内的各个组成部分都使用相同的输入数据或产生相同的输
6、出数据。n顺序内聚:模块中各个组成部分顺序执行,前一个成分的输出就是后一个成分的输入。n功能内聚:模块内的各个组成部分全都为完成同一个功能而存在,共同完成一个单一的功能,并且只完成一个功能。高内聚的要求n避免使用低内聚的模块,多用中高内聚、特别是功能内聚的模块,n遵守“一个模块,一个功能”原则,它是衡量模块独立性的最高标准耦合n耦合(coupling)指的是两个模块之间的相互依赖关系,又称块间联系。n模块之间的联系越多或越复杂,它们之间的依赖程度就越高,每一个模块的独立性就越低。n要求尽可能地减弱系统中模块之间的耦合程度,提高每一个模块的独立性,这是因为:n)模块之间的耦合程度越弱,相互影响就
7、越小,产生连锁反应的概率就越低;n)在修改一个模块时,要能使修改范围控制在最小限度以内;n)在对一个模块进行维护的时候,不必担心任何其它模块的内部运行程序是否会受到影响。G.Myers的耦合七等级n非直接耦合:调用和被调用模块之间不存在直接的数据联系。n数据耦合:调用和被调用模块之间存在简单变量这样的数据传递。n特征耦合:调用和调用模块之间存在诸如数组这样的数据结构的数据传递。n控制耦合:耦合的模块之间传递的不是数据信息,而是控制信息,或称开关量或标志量。n外部耦合:允许多个模块访问同一个全局变量。n公共耦合:允许多个模块访问同一个全局性数据结构。n内容耦合:允许一个模块直接调用另一个模块中的
8、数据。n非直接耦合、数据耦合、特征耦合属于弱耦合。非直接耦合是最希望的情况。低耦合的要求控制耦合是一种中等程度的耦合。应尽可能少用。外部耦合和公共耦合是较强程度的耦合。尽管有时无法避免,但要特别注意、严加控制。内容耦合是耦合程度最强的耦合,极大增强了软件的复杂性,给维护带来严重困难,是“病态联系”,应禁止使用。实际完全可以避免。数据设计n选择需求定义和规格说明过程中提出的数据对象的逻辑表示n数据设计的任务n确定输入、输出文件的详细数据结构n结合算法设计,确定算法所必须的逻辑数据结构及其操作n确定对逻辑数据结构所必须的那些操作的程序模块,限制和确定各个数据设计决策的影响范围n需要与操作系统或调度
9、程序接口所必须的控制表进行数据交换时,确定其详细的数据结构和使用规则n数据的保护性设计:防卫性、一致性、冗余性设计数据设计的原则n用于功能和行为的系统分析原则也应用于数据n应该标识所有的数据结构以及其上的操作n应当建立数据字典,并用于数据设计和程序设计n低层的设计决策应该推迟到设计过程的后期n只有那些需要直接使用数据结构内部数据的模块才能看到该数据的表示n应该开发一个由有用的数据结构和应用于其上的操作组成的库n软件设计和程序设计语言应该支持抽象数据类型的规格说明和实现结构设计n开发一个模块化的程序结构n表示出模块之间的控制关系n将程序设计和数据结构相结合n为数据在程序中的流动定义接口结构设计的
10、任务n采用某种设计方法,将一个复杂的系统按功能划分为模块的层次结构n确定模块之间的调用关系n确定每个模块的功能,建立与已确定的软件需求的对应关系n确定模块之间的接口,即模块间传递的信息,并设计模块接口的信息结构n评估模块划分的质量及导出模块结构的规则SC-结构图结构图(Structure Chart )n描述软件系统的层次和分块结构关系。n在结构图中可以看到模块与模块之间的联系与通讯。n基本符号:基本符号:n结构图的图示符号以用矩形表示的模块n用模块间带箭头的连线表示的调用关系n在调用关系边上用短箭头表示的模块间信息传递关系。SC使用说明使用说明a.为每一个成分(模块或数据)适当地命名使人们能
11、直观理解。b.一个模块在结构图中只能出现一次以避免修改时出错成错误。c.尽可能将整个画在一张纸上以便于整体理解。d.一般习惯是:输入模块在左,输出模块在右,计算模块居中。e.结构图和习惯使用的程序流程图是完全不同的。程序有层次性和过程性两方面的特点,通常应该先考虑层次特性,再考虑过程特性。结构图描述的是程序的层次特性,即某个模块负责管理哪些模块,这些模块又依次管理什么模块等。结构图示例结构图示例报表加工计算合法性检验印出报表信息编辑检验读入编辑印出表头印出表尾计算(8)(1)(2)(3)(3)(2)(5)(5)(2)(5)(6)(2)(6)(7)(8)(9)(8)面向数据流的结构设计过程1 建
12、立数据流类型2 指明流的边界3 将DFD映射到程序结构4 用“因子化”的方法定义控制的层次结构5 用设计测量和启发信息对结构进行求精流程图开始细化/修改软件需求规格说明中的数据流图是变换型吗?变换分析事物分析将映射得来的初始结构图改进为最终结构图对最终结构图进行评审结束是否从数据流图过渡到结构图DFD类型传入传入部分变换中心传出部分(a a)变换型结构)变换型结构传出变换接受事务分析动作1动作2动作3接受部分事务中心(b)事务型结构转换主模块输入模块主加工模块输出模块(a)事务控制模块接受模块动作发送模块动作1模块动作1模块动作1模块(b)变换映射设计步骤(P.262-268)1 复审顶层图2
13、 复审和细化DFD3 确定DFD含有变换流还是事物流特征4 划分输入和输出流的边界,隔离变换中心5 进行“第一级分解”6 进行“第二级分解”7 用设计度量对软件结构的“初稿”进行精化事物映射设计步骤(P.268-272)1 复审顶层图2 复审和细化DFD3 确定DFD含有变换流还是事物流特征4 标识事物中心和每条动作路径上的流特征5 将DFD映射到一个适合与于进行事物处理的程序结构上6 分解和改进事物中心和每条工作路径的结构7 用设计度量对软件结构的“初稿”进行精化SC的修改1)减少块间联系,降低耦合度:可从方式、作用、数量等方面着手,其中最常用的是减少模块间传递的参数个数;2)消除管道性模块
14、,提高内聚度:管道性模块的块内联系很弱,只是像管道一样将一些参数从主模块传送到它的几个下层模块,对这样的模块,应予以消除;3)适当考虑系统将来可能发生的变化;4)注意模块的大小:限制模块大小是降低复杂性的手段之一;5)适当调整调用和被调用的次数,即深度、宽度、扇出和扇入都要适当。一个模块调用或被调用过多,往往是设计不好的迹象;6)整体考虑问题:即尽可能研究整张结构图,而不是只分别考虑一张结构图的各个部分。设计准则1 评估初始软件结构以降低耦合提高内聚2 尽量减少高扇出的结构;当深度增加时争取提高扇入3 将模块的影响限制在模块的控制范围内4 评估模块接口以降低复杂度和冗余,并提高一致性5 定义功
15、能可以预测的模块,但避免对模块过分限制6 通过避免“病态连接”力争“受控入口”的模块面向数据结构的Jackson方法文件记录数据项1数据项2数据项3处理文件处理记录处理项1处理项2处理项3可靠性安全性设计n应根据系统的可靠性要求,按照可靠性设计准则开展设计工作,并在必要时,进行容错、避错等专门的可靠性设计工作。要特别注意对软件出错处理的设计工作,不仅要设计对硬件等软件外系统出错时的处理,而且还要在假定最终软件产品必定还会有错的情况下,进行软件出错的处理设计n在体系结构设计中应充分考虑系统对软件的安全性需求,进行安全性分析,确定安全性关键的软件部件,采取相应的安全性设计措施。接口设计n设计软件模
16、块间的接口n设计模块和其它非人的信息生产者和消费者的接口n设计人(用户)和计算机之间的接口(人机界面)过程设计n单独考虑每个模块n确定模块内部的详细执行过程,包括局部数据组织、控制流、每一步具体处理要求和各种实现细节等n目的是确定应该怎样来具体实现所要求的系统基本的控制结构流程图控制流加工步骤逻辑条件NS图(Nassi-Shneiderman1973)任务1任务2任务3条件ELSETHEN条件=1=2=NA1A2A3A4循环条件循环体循环条件循环体IF_THEN_ELSECASEDO_WHILEDO_UNTILPAD(Problem Analysis Diagram 1973)ABAB条件WH
17、ILEAUNTILAA1AnA2条件A3决策表决策表n矩阵的每一列均可以看成一条在什么条件下进行什么操作的处理规则n决策表按下列步骤制定:1)列出与一个具体过程有关的全部操作。2)列出该过程执行期间的所有条件或作出的判定3)找出每个可能的组合,将各组特定的条件与特定操作相结合,并消去那些不可能发生的条件组合。4)规定处理规则,即指出在什么样的一组条件下将采取什么样的操作。对满足某些条件组合下应做的操作,在相应位置上标以“”号。所有条件所有条件组合所有处理与条件组合相应的处理决策表(Decision Table)123456789国内旅客TTTTFFFF头等舱TFTFTFTF残疾旅客FFTTFF
18、TT行李重量30TFFFFFFFF免费(W-30)2(W-30)3(W-30)4(W-30)5(W-30)8(W-30)10决策树行李费计算行李重量30行李重量30国内旅客国内旅客国内旅客外籍旅客国内旅客外籍旅客残疾旅客(W-30)2正常旅客(W-30)4残疾旅客(W-30)3正常旅客(W-30)6残疾旅客(W-30)4正常旅客(W-30)8残疾旅客(W-30)5正常旅客(W-30)10一律免费PDL(Program Design Language)n顺序n条件:IF/THEN/ELSE/ENDIFn循环:DO WHILE/ENDDOn循环:REPEAT UNTIL/ENDREPEATn分支:CASE_OF/WHEN/SELECT/WHEN/SELECT/ENDCASE过程设计工具比较流程图图图语言决策表(树)容易使用好好好很好尚好逻辑表示尚好好好好很好易编码尚好好好很好好易维护不好不好尚好好好自动处理不好不好尚好很好很好结构化构造不好很好好好不适用数据表示不好不好不好好不好块结构不好好尚好好不适用逻辑验证不好尚好尚好尚好很好使用频率高低低中等低软件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年深圳市福田区荔园教育集团附属幼儿园公开招聘短期教师备考题库含答案详解
- 中国电建集团贵州工程有限公司2026届秋季招聘150人备考题库及完整答案详解一套
- 2025年新疆晨玖建设工程有限责任公司市场化选聘工作人员备考题库及1套完整答案详解
- 简约企业年终工作总结汇报模板
- 中国人民人寿保险股份有限公司重庆市分公司2026年度校园招聘备考题库及参考答案详解1套
- 2025年复旦大学附属华东医院《老年医学与保健》专职编辑招聘备考题库带答案详解
- 2025年重庆两江新区民心佳园小学校物业项目经理招聘备考题库及一套完整答案详解
- 2025年浙江省经济建设投资有限公司招聘备考题库完整答案详解
- 2025年关于公开招聘派遣至莆田市城厢区交通运输局非在编工作人员的备考题库及完整答案详解一套
- 2025年中南大学湘雅基础医学院非事业编制人员招聘备考题库及答案详解参考
- 2025秋苏教版(2024)小学科学二年级第一学期期末质量检测卷附答案
- 制鞋工人岗位培训
- 黑龙江省哈尔滨市2025-2026学年九年级上学期期中语文试题(含答案及解析)
- 购物中心应急预案流程图
- 离婚协议(2026年版本)
- 安全员c证考试真题库及答案
- 舟山事业编考试题及答案
- 2025年中小学生趣味百科知识竞赛题库及答案
- 2025年低空经济行业碳排放与环境影响报告
- 银行理财经理先进工作事迹材料
- git内部培训课件
评论
0/150
提交评论