《软件设计基础ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件设计基础ppt课件.ppt(68页珍藏版)》请在三一办公上搜索。
1、第三讲:软件设计基础,董威,文艳军,陈振邦国防科技大学计算机学院,软件设计与体系结构,2,内容,3.1软件设计的基本概念3.2软件设计过程3.3软件设计的质量3.4软件体系结构设计3.5高可信软件设计3.6软件设计规格说明3.7软件设计评审,3,软件设计,软件设计主要针对需求分析过程得到的软件需求规格说明,综合考虑各种制约因素,探求切实可行的软件解决方案并最终给出方案的逻辑表示,包括文档、模型等。软件设计基本概念是过去数十年里陆续提出的,软件设计者根据这组概念进行设计决策。,4,(1)抽象与逐步求精,“抽象”是一个心理学概念,它要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。
2、 “逐步求精” 可视为一种早期的自顶向下设计策略,其主要思想是,针对某个功能的宏观描述用逐步求精的方法不断地分解,逐步确立过程细节,直至该功能用程序语言描述的算法实现为止。 在软件设计过程中,抽象与逐步求精是一般都是结合起来进行应用。,5,抽象与逐步求精,6,(2)模块化与信息隐藏,把软件划分为可独立命名和访问的部件,每个部件称为一个模块,当把所有模块组装到一起时则获得满足问题需要的一个解。 模块化使得开发活动更加简单的一个重要因素是模块的信息隐藏,即一个模块的开发者不必看到其它模块的内部,只需知道其接口即可,这使得每个模块的开发人员所要处理的复杂性显著降低。,7,模块数量与成本,8,内聚与耦
3、合,内聚是前述信息隐藏和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧密程度。 耦合是对软件结构中模块间关联程度的一种度量。耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过接口传送数据的多少等。 追求高内聚、低耦合。,9,内容,3.1软件设计的基本概念3.2软件设计过程3.3软件设计的质量3.4软件体系结构设计3.5高可信软件设计3.6软件设计规格说明3.7软件设计评审,10,(1)软件设计的一般过程,软件设计可能是一个多次反复的过程,所以,软件设计一般都可以被看作是迭代的过程。 迭代有两层含义:第一层含义是,针对给定的需求模型,通过多次从抽象到具体的设计过程,得出
4、足够精细的设计模型以供软件实现之用。在需求模型发生变化并更新完成后,第一层含义的设计过程再随之展开,直至获得最终的目标软件产品 。,11,软件设计的迭代,12,软件设计的一般过程,13,(2)软件设计的主要活动,在设计过程中,对设计活动进行计划应该最早进行,然后按照计划实施体系结构设计、界面设计、模块/子系统设计、数据模型设计、过程/算法设计等活动。,14,1)软件设计计划,软件设计计划的任务是:明确设计过程的输入制品并使其处于就绪状态,定义设计过程的目标、输出制品及其验收准则,确定覆盖设计过程中各个阶段的全局性设计策略,分配设计过程相关人员的职责,针对设计过程中的活动制订工作计划。,15,2
5、)体系结构设计,软件体系结构设计的目标是建立软件系统的体系结构,有时也称“顶层架构”。这种架构既要明确定义软件各子系统、关键构件、关键类的职责划分及协作关系,同时也要描绘它们在物理运行环境下的部署模型。此外,顶层架构还必须针对软件系统全局性、基础性的技术问题给出技术解决方案,这种方案往往构成目标软件系统的体系结构的技术基础设施。,16,软件结构有关概念,17,3)界面设计,用户界面设计的目标是,为用户使用目标软件系统以实现其所有业务需求而提供友好的人机交互界面。 软件界面设计需要考虑以下因素 :适用于软件功能 易理解性 一致性 灵敏性 容错性 人性化 国际化 个性化 合理的布局 和谐的色彩,1
6、8,4)模块/子系统设计,子系统和模块的区别:一个子系统独立构成系统,不依赖其它子系统提供的服务。 一个模块通常是一个能提供一个或多个服务的系统部件。它能利用其它模块提供的服务,一般不被看成一个独立的系统。 由于模块和子系统都是软件组成部分,它们一般都有层次结构,相互之间存在接口,其设计方法有很多类似的方面,因此我们统一称为模块设计。,19,模块设计的目标,模块设计的目标是,确定模块的具体接口定义,并设计模块的内部结构,即,设置包含于其中的(更小粒度的)模块、构件和设计类,明确它们之间的协作关系,确保它们能够协同实现高层模块接口规定的所有功能和行为。在进行模块设计时,要尽量保持模块的功能独立性
7、,遵循“高内聚、低耦合”的设计思想。此外,还要力求将模块的影响限制在模块的控制范围内,使得软件日后的修改和维护工作更加简单。,20,5)过程/算法设计,过程/算法设计的任务就是对模块内部的工作和执行过程进行描述,给出有关处理的精确说明,例如事件的顺序、确切的决策位置、循环操作以及数据的组成等。 软件结构与软件过程相互关联,软件结构中任何模块的所有从属模块必将被引用出现在该模块的过程说明中。因此,软件过程对应的结构设计亦构成一个层次结构。,21,6)数据模型设计,我们把数据结构设计、数据库设计、甚至数据文件设计等统一称为数据模型设计。 在数据模型设计中有一个重要概念:持久数据操作,它包括写入、查
8、询、更新和删除四类基本操作以及由它们复合而成的业务数据操作。 在很多软件系统中,数据是其核心,因此,对数据元素的格式、结构、访存、表示等机制进行良好建模和优化,是提高软件设计质量和系统性能的基础,对软件系统的应用具有重要意义。,22,内容,3.1软件设计的基本概念3.2软件设计过程3.3软件设计的质量3.4软件体系结构设计3.5高可信软件设计3.6软件设计规格说明3.7软件设计评审,23,软件设计质量的重要性,软件设计是软件开发过程中的核心活动,软件设计的质量不但对最终软件产品的质量起着决定性作用,还对软件开发过程以及软件日后在使用过程中维护的难易程度有着重要的影响。高质量的软件设计,能够有效
9、缩短软件开发时间,减少开发成本,提高最终软件产品质量。,24,软件设计的质量要素,结构良好充分性可行性简单性实用性灵活性健壮性可移植性可复用性标准化,25,内容,3.1软件设计的基本概念3.2软件设计过程3.3软件设计的质量3.4软件体系结构设计3.5高可信软件设计3.6软件设计规格说明3.7软件设计评审,26,(1)软件体系结构设计方法概述,软件体系结构的设计方法是指通过一系列的设计活动,获得满足系统功能性需求、并且符合一定非功能性需求约束的软件体系结构模型。目前存在多种体系结构设计方法,它们的侧重点有所不同。 在实际应用过程中,这些体系结构设计方法并不是绝对互斥的,根据需要,有可能综合运用
10、不同体系结构设计方法的思想,得到最终所需的设计结果。,27,1)多视图建模,28,2)基于评估与转换的设计方法,29,转换方式,使用合适的体系结构风格和模式,或者设计模式来改进体系结构设计。把非功能需求转化为功能性解决方案,该功能性方案可以与问题域无关,但可以满足质量属性的要求。采用“分而治之”的方式,可以把系统级的质量需求分配到子系统或模块中,或者把质量需求分解为多个与功能相关的质量需求,分解后的质量需求能够比较容易得到满足。,30,3)模式驱动的设计方法,31,体系结构风格的分类,32,4)领域特定的软件体系结构设计,领域特定的软件体系结构(Domain Specific Software
11、 Architecture,DSSA)是领域工程的核心部分,领域工程分析应用领域的共同特征和可变特征,对刻画这些特征的对象和操作进行选择和抽象,形成领域模型,并进一步生成DSSA。领域特定的软件体系结构借鉴领域中已经成熟的软件体系结构,实现解决方案在某个领域内的复用。虽然这些系统实例的细节会有不同,但共同的体系结构在开发新系统时是能够复用的。,33,DSSA与体系结构风格的区别,DSSA与软件体系结构风格是从不同角度出发研究问题的两种结果,前者从问题域出发,而后者从解决域出发。DSSA只在某个特定领域中进行经验知识的提取、总结与组织,但可以同时使用多种软件体系结构风格;而一种软件体系结构风格所
12、呈现的公共结构和设计方法可以扩展到多个应用领域。DSSA的体系结构表示和工具一般只适用于一个较小的范围,在其它领域中是不适用并难以复用的。,34,5)软件产品线方法,软件产品线指一组具有公共的、可管理特征(系统需求)的软件系统,这些系统满足特定的市场需求或者任务领域需求,并且按照预定义的方式基于公共的核心资产(Core Assets)集合开发得到。 软件产品线主要由两部分组成:核心资产库产品集合,35,软件产品线过程模型,36,新产品形成步骤,从公共资产库中选取合适的构件;使用预定义的变化机制进行裁剪,如参数化、继承等;必要时增加新的构件;在整个产品线范围内共同的体系结构指导下,进行构件组装,
13、形成系统。,37,6)其它软件体系结构设计方法,基于目标图推理的体系结构设计方法 基于属性的体系结构设计方法 一些常用的软件开发方法学中也包含了软件体系结构的设计,例如:面向数据流的软件开发方法面向对象的软件开发方法面向方面的软件开发方法,38,(2)软件体系结构设计步骤,开发软件顶层架构 搜索并选取可用设计资产 设计技术支撑方案 确定设计元素 开发软件部署模型 设计并发机制 构建软件体系结构模型 评审软件体系结构模型,39,内容,3.1软件设计的基本概念3.2软件设计过程3.3软件设计的质量3.4软件体系结构设计3.5高可信软件设计3.6软件设计规格说明3.7软件设计评审,40,(1)可信软
14、件的特点,计算机系统的缺陷很大一部分是由于软件的问题引发的。纵观软件应用的发展历史,国际上由于软件可信性问题所导致的重大灾难、事故和严重损失屡见不鲜,软件的可信性问题已经成为一个相当普遍的问题。 所谓“可信软件”,是指软件系统的运行行为及其结果总是符合人们的预期,且在受到干扰(包括操作错误、环境影响、外部攻击等)时仍能提供连续的服务。,41,可信属性,可靠性(Reliability):在规定的环境下和规定的时间内,软件无失效运行的概率;可靠安全性(Safety):软件运行不引起危险、灾难的能力;保密安全性(Security):软件系统对数据和信息提供保密性、完整性、可用性、真实性保障的能力;可
15、生存性(Survivability):软件在受到攻击或失效出现时连续提供服务并在规定时间内恢复所有服务的能力;实时性(Real Time):软件在指定的时间内完成反应或提交输出的能力。,42,成本可信曲线,43,(2)容错设计,为了保证高可信系统即使在极端条件下也能按其规格说明执行,对硬件和软件同时采用容错计算非常重要。 为了保护软件免受软件故障的影响,软件逻辑和数据也必须被备份。 软件容错设计是使得软件能发现失效危险并从临失效状态恢复的软件设计技术,有两种主要的软件容错设计方法:恢复块(Recovery Blocks)N-版本(N-version)编程,44,1)恢复块技术,45,2)N-
16、版本编程,46,设计多样性,当不同的开发者采用不同方法实现相同的需求时,一个合理的假设是不同版本的软件不大可能包含相同的缺陷,因此,也就不会产生相同的失效。设计多样性可以通过以下多种方式达到:使用不同的设计方法来实现需求。使用不同的程序设计语言来完成实现。使用不同的开发工具,且在不同的开发环境中完成。明确要求在实现某些关键过程时使用不同的算法。,47,(3)软件失效模式和影响分析,软件失效模式和影响分析(Failure Model and Effects Analysis,FMEA)主要是在软件开发阶段的早期,通过识别软件失效模式,研究分析各种失效模式产生的原因及其造成的后果,寻找消除和减少其
17、有害后果的方法,以尽早发现潜在的问题,并采取相应的措施,从而提高软件的可靠性和安全性。,48,相关概念,软件失效(software failure)。软件失效就是泛指程序在运行中丧失了全部或部分功能、出现偏离预期的正常状态的事件。软件失效模式(software failure mode)。软件失效模式是指软件失效的不同类型,通常用于描述软件失效发生的方式以及对设备运行可能产生的影响。软件失效的影响(software failure effect)。软件失效的影响是指软件失效模式对软件系统的运行、功能或状态等造成的后果。,49,软件系统级FMEA过程,50,(4)软件故障树分析,软件故障树分析(
18、Fault Tree Analysis,FTA)就是在软件系统设计过程中,通过对可能造成系统故障的各种因素(包括硬件、软件、环境、人为因素等)进行分析,画出逻辑框图(即故障树),从而确定系统故障原因的各种可能组合,采取相应的纠正措施,提高系统可靠性的一种设计分析方法。,51,故障树的构造过程, 广泛收集并分析有关技术资料 选择顶事件 生成故障树 简化故障树,52,(5)形式化方法,形式化方法是关于在计算系统的开发中进行严格推理的理论、技术和工具,它主要包括形式规约技术(Formal Specification)和形式验证技术(Formal Verification)。形式规约技术使用具有严格数
19、学定义语法和语义的语言刻画软件系统及其性质,可以尽早发现需求和设计中的错误、歧义、不一致和不完全。 形式化验证是在形式化规约的基础上建立软件系统及其性质的关系,即分析系统是否具有所期望性质的过程,主要分为两类:模型检验(Model Checking)和定理证明(Theorem Proving)。,53,形式化方法,模型检验技术是通过搜索待验证软件系统模型的有穷状态空间来检验系统的行为是否具备预期性质的一种有穷状态系统自动验证技术。定理证明技术是将软件系统和性质都用逻辑方法来规约,基于公理和推理规则组成的形式系统,以如同数学中定理证明的方法来证明软件系统是否具备所期望的关键性质。,54,(6)净
20、室方法,净室软件工程(Clean-room Software Engineering)将形式化方法的规范、设计和验证与可靠性认证的统计测试有效地结合起来。它将软件开发视作严格的工程化开发,软件的正确性是通过数学上可靠的设计方法来保障。,55,净室软件工程的要点,在统计质量控制下的增量式开发。 基于数学原理的软件开发。 基于统计原理的软件测试。,56,(7)嵌入式和实时软件设计,按照IEEE的定义,嵌入式系统是作为某个更大规模系统组成部分之一的计算机系统,按照其所属系统的某些要求来进行执行。一般说来,嵌入式系统是计算机软件与硬件的综合体,通常具有专用的功能,并作为某个设备或机器的组成部分,用来控
21、制、监测、辅助其运作。嵌入式系统已经普遍应用在与人类生活密切相关的各种电子产品、电器中,并在航空、汽车等领域的控制系统中起到关键作用。,57,嵌入式软件的特征,嵌入式软件一般用于单一任务。嵌入式软件有多种类型的处理器体系结构支持。嵌入式软件的资源约束更加严格。嵌入式软件需要更高的可靠性和安全性。嵌入式软件对反应性和实时性要求很高。嵌入式软件通常固化存储。,58,嵌入式系统的设计过程,59,嵌入式系统中的一般软件结构,60,无操作系统的嵌入式软件设计,前后台系统 中断(事件)驱动系统 巡回服务系统 基于定时器的巡回服务系统,61,有操作系统的嵌入式软件设计,分时系统 实时系统 非抢占式系统 抢占
22、式系统,62,内容,3.1软件设计的基本概念3.2软件设计过程3.3软件设计的质量3.4软件体系结构设计3.5高可信软件设计3.6软件设计规格说明3.7软件设计评审,63,软件设计规格说明,软件设计过程中的各个活动的结果最终应该文档化,形成正式的软件设计规格说明,作为软件设计的输出。形成的软件设计规格说明将被评审,并作为后续软件实现活动的依据。 软件设计规格说明并没有统一的格式,例如IEEE标准、ISO标准以及我国的国家标准、各行业标准所建议的格式都不尽相同。 使用不同的软件设计方法学所得到的设计模型也会有很大区别,导致设计规格说明的结构也会明显不同 。,64,内容,3.1软件设计的基本概念3
23、.2软件设计过程3.3软件设计的质量3.4软件体系结构设计3.5高可信软件设计3.6软件设计规格说明3.7软件设计评审,65,设计评审,设计评审的目标是,确保设计规格说明书能够实现所有的软件需求,及早发现设计中的缺陷和错误,并确保设计模型已经精化到合格的软件实现工程师能够构造出符合软件设计者期望的目标软件系统。 评审分正式与非正式两种方式。,66,设计评审关注的内容,设计模型是否能够充分地、无遗漏地支持所有软件需求的实现;设计模型是否已经精化至合理的程度,可以确保合格的软件实现工程师能够构造出符合软件设计者期望的目标软件系统;设计模型的质量属性,即,设计模型是否已经经过充分的优化,以确保依照设计模型构造出来的目标软件产品能够表现出良好的软件质量属性。,67,设计评审的原则,对产品进行评审,而不是开发人员。要有针对性,不要漫无目的。进行有限的争辩。阐明问题所在,但不要试图去解决问题。要求事先准备,如果评审人没有准备好,则取消会议并重新安排时间。为被评审的产品开发一个检查表。确定软件元素是否遵循其规格说明或标准,记录任何不一致的地方。列出发现的问题、给出的建议和解决该问题的负责人。坚持记录并进行文档化。,68,谢谢,
链接地址:https://www.31ppt.com/p-1421449.html