教学课件·软件设计与体系结构.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《教学课件·软件设计与体系结构.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学 课件 软件设计 体系结构
- 资源描述:
-
1、23(1)什么是软件 计算机软件是与计算机系统操作有关的程序、规程、规则及任何与之有关的文档及数据,即:计算机软件 程序 数据 文档 软件是逻辑产品而不是物理产品,因此软件在开发、生产、维护和使用等方面与硬件相比均存在明显的差异。4计算机软件的应用领域和类型 系统软件 实时软件 嵌入式软件 科学和工程计算软件 事务处理软件 人工智能软件 个人计算机软件 上述分类存在交叉5(2)软件危机 大型软件开发项目经常出现预算超支、软件交货时间延迟、软件质量差、维护困难、在软件维护过程中很容易引进新的错误、软件的可移植性差、软件很少能够复用等问题;工业界为维护软件支付的费用甚至占全部硬件和软件费用的40%
2、75%;许多重要的大型软件开发项目在耗费了大量的人力和财力之后,由于离预定目标相差甚远不得不宣布失败。6软件危机的原因(1/2)用户对软件需求的描述不精确,可能存在遗漏、二义性、错误等。甚至在软件开发过程中,用户还提出修改软件功能、界面、支撑环境等方面的要求,导致需求不断变化。软件开发人员对用户需求的理解与用户的本来愿望有差异,这种差异必然导致开发出来的软件产品与用户要求不一致。大型软件项目需要组织一定的人力共同完成,但多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确,有时还会产生误解。7软件危机的原因(2/2)软件项目开发人员不
3、能有效地、独立自主地处理大型软件的全部关系和各个分枝,因此容易产生疏漏和错误。缺乏有力的方法学和工具方面的支持,过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化。软件产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。一旦人们采用先进的组织形式、开发方法和工具提高了软件的开发效率和能力,新的、更大更复杂的问题又摆在人们面前。8(3)软件工程的概念 软件工程的定义有不同的表述方式,典型的定义包括:软件工程是将系统的、规范的、可度量的方法应用于软件的开发、运行和维护过程,以及对上述方法的研究。软件工程是用工程、科学和数学的原则与方法,研制、维护计算机软件的有关技
4、术及管理方法。9软件工程的要素 方法方法软件工程软件工程 工具工具 过程过程10(4)软件工程的目标与原则 目标:可修改性 有效性 可靠性 可理解性 可维护性 可复用性 可适应性 可移植性 可追踪性 11软件工程的原则 抽象(Abstraction)信息隐藏(Information Hiding)模块化(Modularity)局部化(Localization)一致性(Consistency)完全性(Completeness)可验证性(Verifiability)1213软件生存周期可行性研究可行性研究需求分析需求分析概要设计概要设计详细设计详细设计软件构造软件构造单元测试单元测试集成测试集成测
5、试确认测试确认测试使用与维护使用与维护退役退役14“V-模型”可行性研究可行性研究需求分析需求分析概要设计概要设计详细设计详细设计软件构造软件构造软件的使用软件的使用确认测试确认测试集成测试集成测试单元测试单元测试1516软件开发过程模型 软件生命周期包含了软件从概念形成到最终退役的所有活动,而对于一个具体的软件项目,开发人员更加关注的是开发过程中包含的活动以及其具体安排。软件开发过程模型给出了软件开发中各个活动之间的关系,它是软件开发过程的概括,是软件工程的重要内容。能为软件工程管理提供里程碑和进度表,为软件开发过程提供原则和方法。17(1)瀑布模型可行性研究可行性研究需求分析需求分析概要设
6、计概要设计详细设计详细设计软件构造软件构造单元测试单元测试集成测试集成测试确认测试确认测试使用与维护使用与维护18(2)快速原型模型初步需求初步需求分析分析快速设计快速设计构造原型构造原型用户评估原用户评估原型(新需求)型(新需求)原型改进原型改进产品开发产品开发开始开始结束结束19(3)螺旋模型20统一软件开发过程RUP2122设计的定义描述某个事物如何被制造出来的图样或模式;形成上述图样或模式的艺术;对人造产品中组成部分的一种安排,将对产品在实践中的可用性具有影响;人的头脑中的一种规划;等等。软件设计就可以看作是“对软件将如何被开发出来的一种描述”。如果把设计作为一个动词,那么软件设计就是
7、“得到这种描述的活动或过程”。23(1)软件设计的重要性 软件设计是对软件需求的直接体现 软件设计为软件实现提供直接依据 软件设计将综合考虑软件系统的各种约束条件并给出相应方案 软件设计的质量将决定最终软件系统的质量 及早发现软件设计中存在的错误将极大减少软件修复和维护所需的成本 24(2)软件设计的特征 软件设计的开端是出现某些新的问题需要软件来解决 软件设计的结果是给出一个方案 软件设计包含一系列的转换过程 产生新的想法或思路对软件设计非常重要 软件设计的过程是不断解决问题和实施决策的过程 软件设计也是一个满足各种约束的过程 多数软件设计是一个不断演化的过程 25(3)软件设计的要素 目标
8、描述 设计约束 产品描述 设计原理 开发规划 使用描述 软件设计过程实际上就是逐渐形成这些要素的过程,而不同的软件开发方法可能会通过不同的方式和技术来达到该目标。一个良好的软件设计结果应该包含对上述要素的准确描述。2627(1)软件体系结构的定义 什么是体系结构:建筑的艺术或科学,特别是在考虑美感和实用因素的情况下,设计人类使用的大型建筑物所需的技巧和实践。建筑风格,建筑物、组织机构、结构的一种样式、规矩或风格。体系结构的特征 体系结构是一种对复杂系统的抽象表示。体系结构是复杂系统的一种结构化模型,描述其组成部件及部件之间的关系。体系结构是具有特定工程目标的模型。28软件体系结构的定义 软件体
9、系结构是软件系统的结构,包含软件元素、软件元素外部可见的属性以及这些软件元素之间的关系。软件体系结构是软件系统的基本组织,包含构件、构件之间、构件与环境之间的关系,以及相关的设计与演化原则。软件体系结构的风格(style)描述某一特定领域中系统组织方式的惯用模式,反映了领域中众多系统所共有的结构和语义特性。29(2)软件体系结构的发展历程 1970年代中后期,随着结构化软件开发方法的出现与广泛应用,软件开发中出现了概要设计与详细设计,为将来软件体系结构的出现和发展建立了基础,到1990年代,面向对象技术已成为软件开发的主流技术,对大型软件系统进行设计、开发和维护的需要促使人们从更高的抽象层次关
10、注软件,软件体系结构也在这一阶段得到广泛关注。1990年代后期,基于构件的软件开发逐渐受到重视和推广,软件体系结构已经作为一个明确的文档和中间产品存在于软件开发过程中。30(3)软件体系结构的内容 软件体系结构的描述 软件体系结构的设计方法 软件体系结构的分析方法 软件体系结构的复用 31董威,文艳军,陈振邦国防科技大学计算机学院3334(1)UML的发展历程 多种面向对象分析与设计方法的存在不利于面向对象方法的发展,也给用户的选择带来一些困惑。1994年Booch和Rumbaugh首先将各自先前的研究成果统一起来,于1995年10月发布了UM 0.8 经过Booch、Rumbaugh和Jac
11、obson三人的共同努力,于1996年发布UML 0.9,并从此将UM命名为UML。UML结束了“模型论战”,融合了众多优秀的面向对象建模方法以及软件工程方法,消除了因建模方法相互独立带来的诸多不便。35UML 2.0 对象管理组织(Object Management Group,OMG)采纳UML作为其标准建模语言,并通过严格有序的OMG过程对其进行修订和维护。2003年6月宣告完成了UML 2.0:Infrastructure(底层结构)Superstructure(上层结构)OCL(对象约束语言)Diagram Interchange(图形交换)36UML 2.0与MDA UML 2.0
12、另一个显著特征就是加强了对模型驱动体系(Model Driven Architecture,MDA)的支持。MDA的目标是要实现从UML模型到最终代码的自动化生成,它将系统功能规范与该功能在某个特定平台上的实现规范分开,由同一个基础模型可以为不同的中间件平台产生应用程序。由于UML 2.0便于为不同领域(如金融、航空和通信等领域)、不同的平台(如COBRA、J2EE、.NET)、不同的开发方法和开发过程(如RUP、Agile敏捷方法)定制UML方言,从而有利于模型驱动的软件开发。37(2)UML的特点和用途 为使用者提供了统一的、表达能力强大的可视化建模语言,以描述应用问题的需求模型、设计模型
13、和实现模型。提供对核心概念的扩展机制,用户可加入核心概念中没有的概念和符号,可为特定应用领域提出具体的概念、符号表示和约束。独立于实现语言和方法学,但支持所有的方法学,覆盖了面向对象分析和设计的相关概念和方法学。独立于任何开发过程,但支持软件开发全过程。提供对建模语言进行理解的形式化基础,用元模型描述基本语义,OCL描述良定义规则,自然语言描述动态语义。增强面向对象工具之间的互操作性,便于不同系统间的集成。支持较高抽象层次开发所需的各种概念,如协同、框架、模式和构件等,便于系统的重用。38(3)UML 2.0的建模机制 结构建模:类图 包图 对象图 构件图 组合结构图 部署图行为建模:行为建模
14、:活动图活动图顺序图顺序图通信图通信图交互概览图交互概览图时序图时序图状态图状态图用例图用例图39UML 2.0的建模机制4041面向对象方法 面向对象方法的基础在于观察到客观世界中的应用问题都是由实体及其相互关系构成的,那么显然可以将客观世界中与应用问题有关的实体(包括其属性和操作)抽象为问题空间中的对象。面向对象开发方法通过提供对象、对象间消息传递等语言机制让软件开发人员在解空间中直接模拟问题空间中的对象及其行为,从而削减了语义断层,拉近了问题空间与解空间的距离,从而简化了软件工程师为问题寻找解的工作,并为软件开发活动提供了直观、自然的语言支持和方法学指导。42(1)基本概念 对象 类 继
15、承 聚集 多态 消息面向对象=对象+类+继承+聚集+多态+消息 43(2)面向对象方法的优势 简化软件开发过程 支持软件复用 改善软件结构 4445结构建模 结构建模常常也被称为静态建模,主要用来描述系统中包含的元素以及元素之间的关系。结构建模中的视图可以对各个层次和阶段的软件进行刻画,例如软件设计、软件实现、系统部署等等。这些模型对系统的逻辑结构或物理结构进行描述,并不涉及系统的动态行为和过程。UML 2.0中的结构建模包括类图、包图、对象图、构件图、组合结构图和部署图 46(1)类图 类图是UML中最基本、也是最重要的一种视图,它用来刻画软件中类等元素的静态结构和关系。面向对象软件的最终实
16、现体现为多个类的实现与组织,因此类图与面向对象软件实现之间的映射最为直观,对软件结构的设计至关重要,是软件实现要遵循的主要规格说明。47类48抽象类49接口50依赖关系 两个类之间存在依赖关系,表明一个类使用或需要知道另一个类中包含的信息。51关联关系 两个类之间存在关联关系,表明这两个类的实例之间存在语义上的联系。52整体部分关系 聚集关系 构成关系53泛化(继承)关系54实现关系 实现关系表示一个元素是对另一个元素的实现 55关联类 关联类用来记录与关联有关的信息,提供与关联有关的操作。56(2)包图 包图在UML中可以看作是类图的一部分。包用来对一组元素进行划分,是对复杂模型的一种分而治
17、之的层次划分,因此也常常用来描述一个复杂系统逻辑上的子系统划分。57包58导入关系59合并关系60(3)对象图 对象图可以看作类图的实例,对象之间的连接(link)是类之间关联关系的实例。61(4)构件图 由于基于构件的软件开发日益受到重视,UML 2.0对构件图进行较大的改进。构件的根本特征在于它的封装性和可复用性,其内部结构被隐藏起来,只通过接口向外部提供服务或请求外部的服务。通过明确构件对运行环境的假设(即接口定义),可以将构件封装起来,尽可能的独立,从而为复用提供支持。构件图用来描述系统中存在的构件、构件具有的接口、以及各个构件怎样通过接口连接起来形成一个完整的系统。62构件63接口
18、提供接口(Provided Interface)需求接口(Required Interface)64装配连接子 把一个构件的服务和另一构件的需求连接起来 65委托连接子 把复杂构件的外部接口与内部子构件的接口映射起来 66(5)组合结构图 组合结构图通过内部结构、端口、协作等概念来描述复杂系统在运行时,系统、对象、协作实例等元素之间的结构关系。组合结构图中可以使用类图、对象图、构件图中的有关图元,但也有自己独特的建模元素,67组合结构图中的端口68组合结构 组合结构图可用来描述系统及其组成部分,组成部分的描述类似于对象图中的对象,但组合结构图可以说明该部分属于哪个系统。69协作 组合结构图能够
19、描述表示系统功能行为的协作(Collaboration)及其内部的实现结构,并且协作可以实例化,70(6)部署图 部署图用来描述软件开发过程中生成的物理文件形式的软件或信息、运行平台中的物理节点和通信,以及软件文件到相应硬件节点的部署或映射。7172行为建模 行为建模也常被称为动态建模,它主要用来刻画系统中的动态行为、过程和步骤。UML行为建模中提供的视图可以从不同侧面来描述软件系统的动态过程,结构建模对系统中的元素及其关系进行描述,而行为建模对这些元素完成特定任务的过程进行描述,两者相互结合就能够完整地描述整个系统的特征。73(1)活动图 活动图主要描述一个系统行为的执行过程或步骤,它的适用
20、范围非常广泛,能够用来描述工作流、过程流、算法步骤等从问题域到解空间的任何能够用流的形式描述的行为,可以用于概念层、设计层、实现层等不同抽象层次的系统行为建模。74活动和动作 活动是包含一组动作的行为,动作是活动中的一个步骤。75对象节点 为了增强对活动的表达能力,活动图还有一些特殊的节点,以表示活动的输入、输出,以及动作之间传递的复杂对象。76控制节点 在实际的活动流程中,会经常出现分支选择情况。还有可能执行完一个动作后,下面需要同时开始执行几个流程,或几个流程完成后汇总为一个流程。77泳道 为了能够把动作按照执行该动作的对象进行划分,以明确活动中各个参与者的相应职责,活动图引入了泳道的概念
21、。78(2)顺序图 顺序图用来描述对象之间动态的交互关系,主要强调完成某个场景的对象之间存在哪些消息传递以及消息的时间序。对象间的通信表示为对象生命线之间的消息传递,消息有简单消息、同步消息、异步消息等类型。消息有消息名,还可以有参数标识,可以用条件表达式表示消息发送的条件。79简单顺序图80交互操作 使用交互片段(Interaction Fragment)和片段组合(Combined Fragment)对复杂交互进行建模。多个交互片段通过交互操作(Interaction Operator)组合成为一个复杂的交互图:ref,alt,opt,par,loop,critical,neg,asser
22、t,strict,seq,ignore,consider,break81(3)通信图82(4)交互概览图 交互概览图通过类似于活动图的方式,描述交互之间的流程,给出交互控制流的概览。在交互概览图中,节点不像活动图中那样是动作,而是一个交互图或对交互图的引用。83(5)时序图 时序图用来表示交互中关于消息时间的描述,并描述对象在生命线中,其所处状态或条件随着消息发生的变化。84时序图的紧凑形式85(6)状态图 状态图使用有穷状态变迁图的方式刻画系统或元素的离散行为,可以用来描述一个类的实例、子系统甚至整个系统的在其生命周期内,所处状态如何随着外部激励而发生变化。在UML 2.0中,状态图又分为行
23、为状态机和协议状态机,前者描述一个建模元素的行为(例如对象),而后者描述一个协议的行为。86状态与迁移 状态指所描述的元素在其生命周期中可位于一种相对稳定的位置,状态一般会(隐含)满足一组条件。状态之间存在迁移,即从一个状态变化为另一个状态。87状态图88复合状态 复合状态可以用来对状态进行层次划分,使得状态图具有良好的结构,并且易于理解。OR状态 AND状态89复合状态90伪状态 伪状态是一些特殊的状态:初始状态和终止状态 选择(Choice)入口点(Entry)出口点(Exit)分岔(Fork)汇合(Join)深度历史(Deep History)浅度历史(Shallow History)9
24、1(6)用例图 用例图通常被用来描述系统的需求,从用户的角度对系统的功能视点进行建模。一个用例表示系统的一个特定功能,是用户与系统之间一次典型交互,能引发系统执行一系列动作,并且动作执行的结果能被用户(或外部实体)觉察到。用例图刻画了系统包含哪些用例以及用例之间、用例与外部角色之间的关系。92用例与参与者93用例之间的关系 包含关系(include)扩展关系(extend)94董威,文艳军,陈振邦国防科技大学计算机学院9697软件设计 软件设计主要针对需求分析过程得到的软件需求规格说明,综合考虑各种制约因素,探求切实可行的软件解决方案并最终给出方案的逻辑表示,包括文档、模型等。软件设计基本概念
25、是过去数十年里陆续提出的,软件设计者根据这组概念进行设计决策。98(1)抽象与逐步求精“抽象”是一个心理学概念,它要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。“逐步求精”可视为一种早期的自顶向下设计策略,其主要思想是,针对某个功能的宏观描述用逐步求精的方法不断地分解,逐步确立过程细节,直至该功能用程序语言描述的算法实现为止。在软件设计过程中,抽象与逐步求精是一般都是结合起来进行应用。99抽象与逐步求精100(2)模块化与信息隐藏 把软件划分为可独立命名和访问的部件,每个部件称为一个模块,当把所有模块组装到一起时则获得满足问题需要的一个解。模块化使得开发活动更加简单的一个重
展开阅读全文