- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]清华软件工程课件第04章 设计工程
软件工程 软件工程 第4章 设计工程 内容摘要 软件设计工程概述 软件设计原则 软件体系结构设计 部件级设计技术 设计规约与设计评审 内容摘要 软件设计工程概述 软件设计原则 软件体系结构设计 部件级设计技术 设计规约与设计评审 软件设计工程概述 软件需求分析解决“做什么”的问题,软件设计过程则解决“怎么做”的问题 软件设计是把软件需求变换成软件表示的过程,它主要包含两个阶段:软件体系结构设计阶段和部件级设计 软件设计的任务 使用一种设计方法,软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息被传送给设计阶段,产生数据/类设计、体系结构设计、接口设计、部件级设计 数据/类设计:将分析-类模型变换成类的实现和软件实现所需要的数据结构 体系结构设计:体系结构设计定义了软件的整体结构 接口设计:接口设计描述了软件内部、软件和协作系统之间以及软件同人之间如何通信 部件级设计:部件级设计将软件体系结构的结构性元素变换为对软件部件的过程性描述 1)数据/类设计 在类和由CRC中定义的数据对象和关系以及数据字典中描述的详细数据内容提供了数据设计活动的基础 数据设计的过程包括以下两步 : 首先,为在需求分析阶段所确定的数据对象选择逻辑表示,需要对不同结构进行算法分析,以便选择一个最有效的设计方案; 然后,确定对逻辑数据结构所必需的那些操作的程序模块,以便限制或确定各个数据设计决策的影响范围。 2)体系结构设计 体系结构设计定义了软件的整体结构,它由软件部件、外部可见的属性和它们之间的关系组成。 体系结构设计表示可以从系统规约、分析模型和分析模型中定义的子系统的交互导出。 3)接口设计 接口设计主要包括三个方面: 设计软件模块间的接口 设计模块和其他非人的信息生产者和消费者(比如外部实体)之间的接口 设计人(用户)和计算机间的接口 4)部件级设计 部件级设计将软件体系结构的结构性元素变换为对软件部件的过程性描述。 从类为基础的模型、流模型、行为模型中得到的信息是部件设计的基础。 软件设计的目标 在进行软件设计的过程中,我们要密切关注软件的质量因素。 McGlanghlin 软件设计过程的目标: 1)设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。 2)设计必须是可读、可理解的,使得将来易于编程、易于测试、易于维护。 3)设计应从实现角度出发,给出与数据、功能、行为相关的软件全貌。 衡量设计的技术标准 1) 设计出来的结构应是分层结构,从而建立软件成份之间的控制。 2) 设计应当模块化,从逻辑上将软件划分为完成特定功能或子功能的部件。 3) 设计应当既包含数据抽象,也包含过程抽象。 4) 设计应当建立具有独立功能特征的模块。 5) 设计应当建立能够降低模块与外部环境之间复杂连接的接口。 6) 设计应能根据软件需求分析获取的信息,建立可驱动、可重复的方法。 软件设计的过程 1) 制定规范 2) 体系结构和接口设计 3) 数据/类设计 4) 部件级(过程)设计 5) 编写设计文档 6) 设计评审 内容摘要 软件设计工程概述 软件设计原则 软件体系结构设计 部件级设计技术 设计规约与设计评审 抽象化与逐步求精 抽象,是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。 抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层概念是上层概念的精化和细化。 软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述 软件设计中主要抽象手段有:过程抽象和数据抽象 过程抽象(也称功能抽象)是指任何一个完成明确定义功能的操作都可被使用者当作单个实体看待,尽管这个操作实际上是由一系列更低级的操作来完成的 数据抽象是指定义数据类型和施加于该类型对象的操作,并限定了对象的取值范围,只能通过这些操作修改和观察数据 逐步求精 逐步求精,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法 抽象使得设计者能够描述过程和数据而忽略低层的细节,而求精有助于设计者在设计过程中揭示低层的细节 模块化 模块化,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件,实际上是系统分解和抽象的过程。 模块是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过名字来访问 例如,过程。函数、子程序、宏等 设C(x)是描述问题x 复杂性的函数,E(x)是解决问题x 所需工作量(按时间计算)的函数。对于两个问题p1 和p2,如果 C(p1)>C(p2) (4.1a) 那么 E(p1)>E(p2) (4.1b) 即问题越复杂,解决问题所需要的花费更多。 通过对人解决问题的实验,又存在另
文档评论(0)