好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第04章设计工程.ppt

79页
  • 卖家[上传人]:z****
  • 文档编号:259257993
  • 上传时间:2022-02-25
  • 文档格式:PPT
  • 文档大小:709.50KB
  • / 79 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单击此处编辑母版标题样式单击此处编辑母版副标题样式*1软件工程 第4章 设计工程内容摘要软件设计工程概述软件设计原则 软件体系结构设计部件级设计技术 设计规约与设计评审2复旦大学计算机科学与工程系 软件工程课程内容摘要 软件设计工程概述软件设计工程概述软件设计原则 软件体系结构设计部件级设计技术 设计规约与设计评审3复旦大学计算机科学与工程系 软件工程课程软件设计工程概述 软件需求分析解决“做什么”的问题,软件设计过程则解决“怎么做”的问题软件设计是把软件需求变换成软件表示的过程,它主要包含两个阶段:软件体系结构设计阶段和部件级设计对比:早期的软件设计局限于数据结构和算法层面上,抽象层次比较低4复旦大学计算机科学与工程系 软件工程课程为什么要进行软件系统设计软件系统实现的高层方案 软件系统越来越复杂,需要将其划分为若干部分分而治之模块化不同的小组或开发者负责不同的部分然后在系统层面上进行集成 负责不同部分的开发者对于其它模块需要了解的信息越少越好抽象与信息隐藏 这些部分之间还需要定义清晰、明确的接口接口设计5复旦大学计算机科学与工程系 软件工程课程软件系统设计的重要性 软件系统设计是开发者之间的分工和合作和基础 设计方案是决定系统质量的主要因素 设计方案可以借鉴成熟的设计经验 设计方案完成后需要经过质量分析和评审 好的设计方案不仅能很好地支持当前需求的实现,而且能减小未来的系统维护(理解、修改、扩展)成本6复旦大学计算机科学与工程系 软件工程课程软件设计的任务 在软件分析模型中的需求信息(数据、功能和行为)基础上,产生软件系统各个层次上的设计方案7复旦大学计算机科学与工程系 软件工程课程 数据/类设计:将分析-类模型变换成类的实现和软件实现所需要的数据结构 体系结构设计:体系结构设计定义了软件的主要结构元素以及相互之间的关系 接口设计:接口设计描述了软件内部、软件和协作系统之间以及软件同人之间如何通信 部件级设计:部件级设计将软件体系结构的结构性元素变换为对软件部件的过程性描述8复旦大学计算机科学与工程系 软件工程课程设计任务1数据/类设计 基础:在类和CRC中定义的数据对象和关系(实体及实体关系)以及数据字典中描述的详细数据内容(详细信息)数据设计的过程 为在需求分析阶段所确定的数据对象选择逻辑表示 确定对逻辑数据结构所必需的那些操作的程序模块9复旦大学计算机科学与工程系 软件工程课程设计任务2体系结构设计 定义软件的整体结构:软件部件、外部可见的属性和它们之间的关系体系结构设计:可以从系统规约、分析模型和分析模型中定义的子系统的交互导出10复旦大学计算机科学与工程系 软件工程课程设计任务3接口设计 接口设计主要包括三个方面 UI:用户和计算机间的接口(界面) 和外部系统、设备、网络或信息生产者和消费者(比如外部实体)之间的接口外部系统接口:银行网上支付接口设备接口:读卡器、扫描枪、传感器接口信息接口:需要导入/导出的数据接口 设计软件内部各个部件间的接口11复旦大学计算机科学与工程系 软件工程课程设计任务4部件级设计 部件级设计完整地描述每个软件部件的内部细节 部件整体的处理和执行流程 部件内本地数据对象的数据结构 部件内处理过程的算法从类为基础的模型、流模型、行为模型中得到的信息是部件设计的基础 12复旦大学计算机科学与工程系 软件工程课程软件设计的(质量)目标 满足用户需求 必须实现分析模型中所有的显式需求 必须满足用户希望的所有隐式需求可读、可理解:设计必须是可读、可理解的,使得将来易于编程、易于测试、易于维护全面性:应从实现角度出发,给出与数据、功能、行为相关的软件全貌13复旦大学计算机科学与工程系 软件工程课程衡量设计的技术原则-1 分层的设计结构:从而建立软件系统的分层控制结构模块化:从逻辑上将软件划分为完成特定功能或子功能的部件数据与过程:设计既包含数据抽象,也包含过程抽象14复旦大学计算机科学与工程系 软件工程课程衡量设计的技术原则-2 高内聚:建立具有独立功能特征的模块低耦合:尽量降低模块与外部环境之间的接口复杂度系统化/方法化:设计应能根据软件需求分析获取的信息,建立可驱动、可重复的方法15复旦大学计算机科学与工程系 软件工程课程软件设计的过程-1 制定设计规范 通过阅读系统需求说明书确定设计目标以及这些目标的优先顺序 设计方法:结构化、面向对象 设计文档的编制标准 基本的实现规范:代码的信息形式、与硬件及操作系统的接口规约、命名规则16复旦大学计算机科学与工程系 软件工程课程软件设计的过程-2迭代展开、不断细化的系统设计 体系结构和接口设计 数据/类设计 部件级(过程)设计编写设计文档设计评审17复旦大学计算机科学与工程系 软件工程课程内容摘要软件设计工程概述 软件设计原则软件设计原则 软件体系结构设计部件级设计技术 设计规约与设计评审18复旦大学计算机科学与工程系 软件工程课程软件设计的基本原则抽象:考虑高层问题时忽略低层细节逐步求精:不断接近问题的完整解模块化:将系统划分为相对独立但又有所关联的多个部分信息隐藏:对其它模块隐藏内部细节模块独立:模块功能相对独立高内聚/低耦合19复旦大学计算机科学与工程系 软件工程课程抽象控制复杂性的基本策略抽象过程:从特殊到一般的过程,上层概念是下层概念的抽象,下层概念是上层概念的精化和细化软件开发过程的每一步都是对较高一级抽象的解作一次具体化的描述 与实现无关的需求考虑特定实现技术的设计、将每个模块逐一编码实现20复旦大学计算机科学与工程系 软件工程课程过程抽象与数据抽象 过程抽象:功能角度的抽象 使用者将功能体作为单个功能看待 这些功能实际上是由一系列更低级的功能或代码来实现的 过程抽象例:函数、功能性的类/对象 数据抽象 定义数据类型和施加于该类型对象的操作 限定了对象的取值范围,只能通过这些操作修改和观察数据 例如面向对象的person类封装实际年龄,public接口上开放的是转换为老年/中年/青年/少年后的年龄段信息21复旦大学计算机科学与工程系 软件工程课程逐步求精 把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法常与分层抽象的思想相结合 抽象使得设计者能够描述过程和数据而忽略低层的细节 求精有助于设计者在设计过程中揭示低层的细节 高层抽象将在下层不断精化,最终得到软件实现 22复旦大学计算机科学与工程系 软件工程课程模块化(分解) 按照设计原则将系统划分为若干个较小的模块 相互独立但又相互关联 实际上是系统分解和抽象的过程 模块是相对独立的程序体 是数据说明、可执行语句等程序对象的集合 单独命名的,并且可以通过名字来访问 例如:类、过程、函数、子程序、宏等 23复旦大学计算机科学与工程系 软件工程课程通过模块化降低开发复杂度 C(x):问题x的复杂性E(x):解决问题x所需工作量对于两个问题p1 和p2:1) 如果C(p1)C(p2) 那么 E(p1)E(p2)问题越复杂解决问题所需要的花费更多2) C(p1+p2)C(p1)+C(p2)因此E(p1p2)E(p1)+E(p2)将复杂问题分解成可以多个子问题分别解决会更加容易(模块化思想的依据)24复旦大学计算机科学与工程系 软件工程课程模块化例:智能灌溉 总体设计:将系统划分为传感器、灌溉决策和灌溉设备控制三个模块,定义好相互之间的数据和控制接口 传感器模块:接受传感器收集的温度、湿度、土壤等各种数据 灌溉决策:根据种植经验和收集到的数据判断灌溉决策 灌溉设备控制:根据决策控制灌溉设备进行灌溉降低整体复杂度:可以分而治之而且可以由具备不同专业知识的开发者分别承担25复旦大学计算机科学与工程系 软件工程课程误区:无限制地进行模块化分?如果我们无限制地划分软件,开发它所需的工作量会变得小到可以忽略?结论:NO 模块数量增加时,只是使各个子模块的工作量之和有所减小 然而开发工作量还有很大一部分来自于模块间的接口和集成 除了技术上的接口和集成,还包括人与人之间的沟通 集成和沟通的开销到了一定程度就会成为开发工作量的主要部分26复旦大学计算机科学与工程系 软件工程课程结论:适度的模块化 模块数增加时,模块间的关系也随之增加,接口和集成的工作量也随之增加 结论:寻找最佳模块化程度平衡点27复旦大学计算机科学与工程系 软件工程课程信息隐藏每个模块都尽量对其他模块隐藏自己的内部实现细节 模块内部的数据和过程不允许其它不需要这些信息的模块使用 定义和实施对模块的过程细节和局部数据结构的存取限制 典型的信息隐藏:面向对象的访问控制符信息隐藏是实现抽象/模块化机制的基本支撑28复旦大学计算机科学与工程系 软件工程课程模块独立(高内聚/低耦合) 模块独立是模块化的根本要求 模块完成独立的功能:明确可辨识 高内聚:内部结构紧密 低耦合:模块间关联和依赖程度尽可能小,与其他模块的接口简单 符合信息隐蔽和信息局部化原则29复旦大学计算机科学与工程系 软件工程课程模块独立的重要性模块的开发者专注于某一个相对独立的部分不用过多关心其他模块修改和bug影响的范围被局部化单个模块更容易复用独立的模块更易于维护和测试30复旦大学计算机科学与工程系 软件工程课程模块独立性的指标内聚度与耦合度内聚(cohesion):一个模块内部各个元素彼此结合的紧密程度尽量高耦合(coupling):模块之间相互关联的程度尽量低31复旦大学计算机科学与工程系 软件工程课程内聚度的七个层次-1 巧合内聚(偶然内聚):将几个模块中的相同程序代码段独立出来建立的模块(无明显独立性) 逻辑内聚:完成一组逻辑相关任务的模块,由控制型参数来确定执行哪一种功能 时间内聚:模块中的多个任务必须在一段时间内先后执行(无明确的过程约束)32复旦大学计算机科学与工程系 软件工程课程内聚度的七个层次-2 过程内聚:模块内的多个任务必须按指定的过程执行 通信内聚:模块内所有处理元素都集中在某个数据结构的一块区域中(例如对课程进行选、退课和查询) 顺序内聚:指一个模块完成多个功能,这些功能又必须顺序执行(更加单一的过程内聚) 功能内聚 :指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不可分割的(单个功能)33复旦大学计算机科学与工程系 软件工程课程耦合度的七个层次-1内容耦合:一个模块可以直接访问另一个模块的内部数据或内部功能公共耦合:多个模块共同访问某些公共数据元素外部耦合:多个模块间需要遵循同样的外部约束,例如通信协议、数据格式等34复旦大学计算机科学与工程系 软件工程课程耦合度的七个层次-2 控制耦合:模块间的交互参数包含控制信息,可影响另一个模块的执行逻辑 标记耦合:模块间传递特定的数据结构 数据耦合:模块间仅传递简单数据 非直接耦合:两个模块可以相对独立工作35复旦大学计算机科学与工程系 软件工程课程模块独立性:高内聚低耦合模块独立性的模块:高内聚低耦合的模块 一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高 模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱36复旦大学计算机科学与工程系 软件工程课程内容摘要软件设计工程概述软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术 设计规约与设计评审37复旦大学计算机科学与工程系 软件工程课程软件体系结构设计 软件体系结构关注系统的一个或多个结构,包含软件部件、部件对外可见的属性以及部件间的关系 体系结构的作用 方便利益相关人员的交流 有利于系统设计的前期决策 可传递、易于理解的系统级抽象38复旦大学计算机科学与工程系 软件工程课程39复旦大学计算机科学与工程系 软件工程课程体系结构发展过程-1单主机结构 界面、数据和程序集中在单台主机上 不需要考虑多用户并发操作的问题C/S(Client/Server)结构 常见的服务器端体现为关系数据库 客户端负责显示和业务逻辑处理 在部署和扩展性方面存在不足:系统升级需要一一更新所有客户端40复旦大学计算机科学与工程系 软件工程课程体系结构发展过程-2B/S(Browser/Server)结构 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.