




已阅读5页,还剩102页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件设计与体系结构SoftwareDesign Architecture 软件设计 软件设计主要针对需求分析过程得到的软件需求规格说明 综合考虑各种制约因素 探求切实可行的软件解决方案并最终给出方案的逻辑表示 包括文档 模型等 软件设计就可以看作是 对软件将如何被开发出来的一种描述 如果把设计作为一个动词 那么软件设计就是 得到这种描述的活动或过程 软件设计的方法 1 面向数据流的软件设计方法 2 面向对象的软件设计方法 软件体系结构 你可能知道 Client ServerThree tierMVC 建筑体系结构 建筑体系结构 建筑学 软件工程教育的定位 我国软件工程的专业教育与软件人才的链之间的关系可描述为如下图 软件开发工程师 架构设计师 产品经理 项目管理者 系统分析师 系统设计师 程序员 研究生教育 本科教育 大专教育 中专教育 随着软件系统规模越来越大 越来越复杂 整个系统的结构和规格说明显得越来越重要 对于软件项目的开发来说 具有清晰的软件体系结构是非常重要的 软件体系结构在软件需求和设计之间架起了一座桥梁 着重解决软件系统的结构和需求向实现平坦地过渡的问题 为何要学习软件体系结构 需求分析 软件设计 软件体系结构 软件体系结构 系统地介绍软件体系结构基本原理 方法和实践全面反映软件体系结构研究和应用的最新进展既讨论软件体系结构的基本理论知识 又介绍软件体系结构的设计及应用实例强调理论与实践相结合 本课程的详细任务包括 1 介绍软件体系结构的概念 发展和应用现状 2 讨论软件体系结构建模 包括视图模型 核心模型和生命周期模型 3 介绍软件体系结构的风格 模式 4 讨论软件体系结构的描述方法 重点介绍软件体系结构描述语言 5 讨论基于体系结构的软件开发方法 介绍基于体系结构的软件过程 6 讨论软件体系结构评估方法 7 介绍软件产品线的原理和方法 框架技术 以及讨论产品线体系结构的设计和演化 SA SoftwareArchitecture 的定义 体系结构 组件 连接件 约束Architecture Components Connectors Constrains 软件越做越大 现代软件开发方法学 软件体系结构 SA之重要 最早指出SA的重要性的是大师EdsgerDijkstra 1930 2002 thelargertheproject themoreessentialthestructuring 1968 程序 程序 算法 数据结构 1960 s 程序 子程序 子程序 1970 s 对象 算法 数据结构程序 对象 对象 1980 s 程序 组件 连接件 1990 s 连接构件把体系结构的不同部分组组合连接起来处理构件负责对数据进行加工数据构件是被加工的信息 软件体系结构的发展史 无体系结构 设计阶段 关于教材 出版社 清华大学出版社 作者 张友生 参考书1 软件体系结构理论与实践 冯冲等编著人民邮电出版社2004年第1版2 软件体系结构 覃征等编著西安交通大学出版社2002年第1版3 希赛网 课程内容 软件体系结构概论 软件体系结构建模 软件体系结构风格 软件体系结构描述 基于体系结构的软件开发 软件体系结构评估 软件产品线体系结构 软件体系结构的发展伴随不同的软件开发方法 软件体系结构也经历了4个发展阶段 1 主机 终端体系结构早期的软件系统采用主机 终端体系结构 如图所示 在大型主机上部署中央CPU和各种应用系统 典型的系统如批处理 联机交易等 这种软件系统的体系结构也称为单层体系结构 所有的功能和操作集中在主机上 终端仅仅是作为输入和输出设备使用 图1主机 终端体系结构 2 分层体系结构随着PC的普及和网络的出现 这种单层的体系结构被逐步淘汰 演变为分层的体系结构 典型的分层体系结构有两种 C S结构和B S结构 客户机 服务器 Client Server C S 模式 两层结构 又称为胖客户机模式 其原理如图2所示 图2C S模式原理图 3 C S结构的特点基于C S模式的网络数据库在前端计算机上要安装专门的应用程序来操作后台数据库服务器中的数据 前端应用程序可以完成计算和接收处理数据的工作 后台数据库服务器主要完成数据的管理工作 C S模式的优点是速度较快 功能完备 缺点 维护升级很不方便 主要是基于行业的数据库应用 如股票接收系统 邮局汇款系统等 由于有多个系统 在每个客户机上就要安装多个前端客户程序 因此这种工作模式也被称为胖客户机模式 图2C S模式原理图 4 浏览器 服务器 Browser Server B S 模式B S是3层结构 又称为瘦客户机模式 其原理如图3所示 B S模式下的客户机只需安装浏览器软件 如WindowsXP系统内嵌的IE即可 无须开发前端应用程序 这就是瘦客户机模式中 瘦 的含义 中间层的Web应用服务器 如Microsoft公司的IIS等是连接前端客户机和后台数据库服务器的桥梁 主要的数据计算和应用都在此完成 因此对中间层服务器的要求较高 开发中间层应用的技术人员需要具备一定的编程基础 后台数据库服务器主要完成数据的管理 图3B S模式原理图 B S结构的特点 基于B S模式的Web网络数据库应用模式主要用于浏览 查询Internet Intranet信息 但由于面向的是不特定的用户 客户机无须维护和升级 因此 随着Internet的普及 这种模式逐渐为我们所重视 典型的例子是Internet上购物等使用的数据库系统 这也是目前开展电子商务应用的常用模式 无论是C S模式还是B S模式 分层的软件系统体系结构实际上把一个软件系统分解成了3个主要部分 用户表现层 接受用户的请求和操作 将操作信息最终显示给用户 常见的就是一个IE浏览器中的Web页面 或者是一个标准的Windows窗体程序 业务逻辑层 业务逻辑层完成业务功能和逻辑 比如 Web网站中的IIS服务器就是一个业务逻辑层 数据服务层 指后台数据库系统 也可以是各种能够存储数据的文件 图3B S模式原理图 软件危机的表现 软件成本日益增长 开发进度难以控制 软件质量差 软件维护困难 第1章软件体系结构概论 1 1从软件危机谈起 软件危机的表现 软件成本日益增长20世纪50年代 软件成本在整个计算机系统成本中所占的比例为10 20 到20世纪60年代中期 软件成本在计算机系统中所占的比例已经增长到50 左右 而且 该数字还在不断地递增 下面是一组来自美国空军计算机系统的数据 1955年 软件费用约占总费用的18 1970年达到60 1975年达到72 1980年达到80 1985年达到85 左右 第1章软件体系结构概论 1 1从软件危机谈起 软件危机的表现 开发进度难以控制由于软件是逻辑 智力产品 软件的开发需建立庞大的逻辑体系 这是与其他产品的生产不一样的 在软件开发过程中 用户需求变化等各种意想不到的情况层出不穷 令软件开发过程很难保证按预定的计划实现 给项目计划和论证工作带来了很大的困难 盲目增加软件开发人员并不能成比例地提高软件开发能力 相反 随着人员数量的增加 人员的组织 协调 通信 培训和管理等方面的问题将更为严重 第1章软件体系结构概论 1 1从软件危机谈起 软件危机的表现 软件质量差软件项目即使能按预定日期完成 结果却不尽人意 1965年至1970年 美国范登堡基地发射火箭多次失败 绝大部分故障是由应用程序错误造成的 在 软件作坊 里 由于缺乏工程化思想的指导 程序员几乎总是习惯性地以自己的想法去代替用户对软件的需求 软件设计带有随意性 很多功能只是程序员的 一厢情愿 而已 这是造成软件不能令人满意的重要因素 第1章软件体系结构概论 1 1从软件危机谈起 软件危机的表现 软件维护困难由于在软件设计和开发过程中 没有严格遵循软件开发标准 各种随意性很大 没有完整的真实反映系统状况的记录文档 给软件维护造成了巨大的困难 特别是在软件使用过程中 原来的开发人员可能因各种原因已经离开原来的开发组织 使得软件几乎不可维护 有资料表明 工业界为维护软件支付的费用占全部硬件和软件费用的40 75 第1章软件体系结构概论 1 1从软件危机谈起 软件危机的原因 用户需求不明确 缺乏正确的理论指导 软件规模越来越大 软件复杂度越来越高 第1章软件体系结构概论 1 1从软件危机谈起 用户需求不明确在软件开发完成之前 用户不清楚软件的具体需求 用户对软件需求的描述不精确 可能有遗漏 有二义性 甚至有错误 在软件开发过程中 用户还提出修改软件功能 界面 支撑环境等方面的要求 开发人员对用户需求的理解与用户本来愿望有差异 第1章软件体系结构概论 1 1从软件危机谈起 软件危机的原因 缺乏正确的理论指导缺乏有力的方法学和工具方面的支持 由于软件不同于大多数其他工业产品 其开发过程是复杂的逻辑思维过程 其产品极大程度地依赖于开发人员高度的智力投入 由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性 加剧软件产品的个性化 也是发生软件危机的一个重要原因 第1章软件体系结构概论 1 1从软件危机谈起 软件危机的原因 软件规模越来越大随着软件应用范围的增广 软件规模愈来愈大 大型软件项目需要组织一定的人力共同完成 而多数管理人员缺乏开发大型软件系统的经验 而多数软件开发人员又缺乏管理方面的经验 各类人员的信息交流不及时 不准确 有时还会产生误解 软件项目开发人员不能有效地 独立自主地处理大型软件的全部关系和各个分支 因此容易产生疏漏和错误 第1章软件体系结构概论 1 1从软件危机谈起 软件危机的原因 软件复杂度越来越高软件不仅仅是在规模上快速地发展扩大 而且其复杂性也急剧地增加 软件产品的特殊性和人类智力的局限性 导致人们无力处理 复杂问题 所谓 复杂问题 的概念是相对的 一旦人们采用先进的组织形式 开发方法和工具提高了软件开发效率和能力 新的 更大的 更复杂的问题又摆在人们的面前 第1章软件体系结构概论 1 1从软件危机谈起 软件危机的原因 例 美国IBM公司在1963年 1966年开发的IBM360机的操作系统 这一项目花了5千人一年的工作量 最多时有1千人投入开发工作 写出了近100万行源程序 第1章软件体系结构概论 1 1从软件危机谈起 如何克服软件危机 人们面临的不光是技术问题 更重要的是管理问题 管理不善必然导致失败 要提高软件开发效率 提高软件产品质量 必须采用工程化的开发方法与工业化的生产技术 在技术上 应该采用基于重用的软件生产技术 在管理上 应该采用多维的工程管理模式 第1章软件体系结构概论 1 1从软件危机谈起 构件模型及实现 第1章软件体系结构概论 1 2构件与软件重用 构件的定义构件是指语义完整 语法正确和有可重用价值的单位软件 是软件重用过程中可以明确辨识的系统 结构上 它是语义描述 通讯接口和实现代码的复合体 计算圆的面积及周长classCircle private floatradius public Circle floatr floatCircumference floatArea floatCircle Circumference return2 PI radius 构件模型及实现 第1章软件体系结构概论 1 2构件与软件重用 构件模型的三个主要 main 流派OMG ObjectManagementGroup 对象管理集团 的CORBA CommonObjectRequestBrokerArchitecture 通用对象请求代理结构 Sun的EJB EnterpriseJavaBean Microsoft的DCOM DistributedComponentObjectModel 分布式构件对象模型 构件模型及实现 第1章软件体系结构概论 1 2构件与软件重用 青鸟构件模型 构件获取 第1章软件体系结构概论 1 2构件与软件重用 从现有构件中获得符合要求的构件 直接使用或作适应性修改 得到可重用的构件 MicrosoftMFC SunJava类库 通过遗留工程 将具有潜在重用价值的构件提取出来 得到可重用的构件 从市场上购买现成的商业构件 即COTS CommercialOff The Shell 构件 如 利用eclipse开发JavaWeb程序 需安装商业插件Myeclipse 支持struts开发 开发新的符合要求的构件 构件管理 第1章软件体系结构概论 1 2构件与软件重用 构件描述 构件分类与组织 人员及权限管理 构件管理 第1章软件体系结构概论 1 2构件与软件重用 构件描述构件模型是对构件本质的抽象描述 主要是为构件的制作与构件的重用提供依据 从管理角度出发 也需要对构件进行描述 例如 实现方式 实现体 注释 生产者 生产日期 大小 价格 版本和关联构件等信息 构件的完整描述 构件管理 第1章软件体系结构概论 1 2构件与软件重用 构件分类与组织为了查询 利用构件 对置于构件库中的构件进行分类 classify 关键字分类法 刻面分类法 超文本组织方法 构件管理 第1章软件体系结构概论 1 2构件与软件重用 关键字分类法 keywordclassification 将应用领域的概念按照从抽象到具体的顺序逐次分解为树状图 构件管理 第1章软件体系结构概论 1 2构件与软件重用 刻面分类法 facetedclassification 源于图书馆学 该机制中 定义若干用于刻画构件特征的 面 facet 刻面的集合称为刻面描述符 facetdescriptor 例如 使用下列构件描述符的模式 function objecttype systemtype 刻面的典型值可能是 function copy from or copy replace all 构件管理 第1章软件体系结构概论 1 2构件与软件重用 超文本组织法 hypertextclassification 是一种非线性的网状信息组织方法 以节点为单位 链作为节点之间的联想式关联 例如 Windows环境下的联机帮助系统 如 word文件中help 构件管理 第1章软件体系结构概论 1 2构件与软件重用 人员及权限管理一般来讲 构件库系统可包括五类用户即注册用户公共用户构件提交者一般系统管理员超级系统管理员 构件重用 第1章软件体系结构概论 1 2构件与软件重用 检索与提取构件 理解与评价构件 修改构件 构件组装 构件重用 第1章软件体系结构概论 1 2构件与软件重用 检索与提取构件 基于关键字的检索方法 用户利用界面树状结构逐级寻找需要的关键字 如 在VisualC 使用MSDN 包括VC 的帮助文件和许多与开发相关的技术文献 刻面检索法 1 用户提供要查找的构件在每个刻面上的特征 生成构件描述符 构造查询 2 利用CASE工具在构件库中 查找相应的构件 检索构件 3 对构件进行排序 一般按相似程度排序 超文本检索法利用给定的关键字 在构件说明中进行匹配 成功后 列出构件说明 利用其中的超文本节点 在不同构件说明文档中跳转 最终选择合适的component 例如 Windows环境下的联机帮助系统 如 word文件中help 其他检索方法 构件重用 第1章软件体系结构概论 1 2构件与软件重用 理解与评价构件为了准确理解在库中需要使用的构件 要求构件的开发过程遵循公共软件工程规范 并在component文档中 准确说明以下内容 构件的功能与行为 相关的领域知识 可适应性约束条件与例外情形 可以预见的修改部分及修改方法 对构件可重用的评价 通过收集并分析构建的用户在实际重用该构件的历史过程中各种反馈信息来完成 包括 重用成功的次数 对构件的修改量 性能度量 构件重用 第1章软件体系结构概论 1 2构件与软件重用 修改构件理想的情形是对库中的构件不作修改而直接用于新的软件项目 但是 在大多数情况下 必须对构件进行或多或少的修改 以适应新的需求 例如 对函数 运算符重载 为了减少构件修改的工作量 要求开发人员尽量使构件的功能 行为和接口设计更为抽象化 通用化和参数化 includetemplate 声明一个形式类属参数TclassARRAY T set 定义数组元素集合intn 定义数组元素个数public ARRAY T data inti set data n i ARRAY voidsort 排序intseek Tkey 检索Tsum 求和 构件重用 第1章软件体系结构概论 1 2构件与软件重用 构件组装 基于功能的组装技术 基于数据的组装技术 面向对象的组装技术 将库中的构件经适当修改后相互连接 或者将它们与当前开发项目中的软件元素连接 最终构成新的目标软件 构件重用 第1章软件体系结构概论 1 2构件与软件重用 构件组装 基于功能的组装技术它要求库中的构件以子程序 过程 函数的形式出现 并且接口说明必须清晰 如 C中的库函数 基于功能的组装技术采用子程序调用和参数传递的方式将构件组装起来 当使用这种组装技术进行软件开发时 开发人员首先应对目标软件系统进行功能分解 将系统分解为强内聚 松耦合的功能模块 然后根据各模块的功能需求提取构件 对它进行适应性修改后再挂接在上述功能分解框架中 构件重用 第1章软件体系结构概论 1 2构件与软件重用 构件组装 基于数据的组装技术这种组装技术也要求库中构件以子程序形式出现首先根据当前软件问题的核心数据结构设计出一个框架 利用数据结构 软件结构 然后根据框架中各结点的需求提取构件并进行适应性修改 再将构件逐个分配至框架中的适当位置 此后 构件的组装方式它所依赖的软件设计方法不再是功能分解 而是面向数据的设计方法 例如Jackson系统开发方法 构件重用 第1章软件体系结构概论 1 2构件与软件重用 构件组装 面向对象的组装技术构造法在子类中引进基类的对象作为子类的成员变量 然后在子类中通过成员变量重用基类的属性和方法 子类法将新子类直接说明为库中基类的子类 通过继承和修改基类的属性与行为完成新子类的定义 例如 P13 软件重用实例 第1章软件体系结构概论 1 2构件与软件重用 自学P15 背景资料 第1章软件体系结构概论 1 3体系结构的兴起和发展 随着软件系统规模越来越大 越来越复杂 整个系统的结构和规格说明显得越来越重要 对于大规模的复杂软件系统来说 对总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择已经变得明显重要得多 工人 工程师 对软件体系结构的系统 深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径 背景资料 第1章软件体系结构概论 1 3体系结构的兴起和发展 事实上 软件总是有体系结构的 不存在没有体系结构的软件 模块 类 组件 体系结构 软件体系结构虽脱胎于软件工程 但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法 最近几年软件体系结构研究已完全独立于软件工程的研究 成为计算机科学的一个最新的研究方向和独立学科分支 1970年代中后期 随着结构化软件开发方法的出现与广泛应用 软件开发中出现了概要设计与详细设计 为将来软件体系结构的出现和发展建立了基础 模块 第1章软件体系结构概论 1 3体系结构的兴起和发展 到1990年代 面向对象技术已成为软件开发的主流技术 对大型软件系统进行设计 开发和维护的需要促使人们从更高的抽象层次关注软件 软件体系结构也在这一阶段得到广泛关注 类 1990年代后期 基于构件的软件开发逐渐受到重视和推广 软件体系结构已经作为一个明确的文档和中间产品存在于软件开发过程中 组件 软件体系结构的定义 第1章软件体系结构概论 1 3体系结构的兴起和发展 DewaynePerry和A1exanderWolf软件体系结构是具有一定形式的结构化元素 即构件的集合 包括处理构件 数据构件和连接构件 处理构件负责对数据进行加工数据构件是被加工的信息连接构件把体系结构的不同部分组合连接起来 第1章软件体系结构概论 1 3体系结构的兴起和发展 MaryShaw和DavidGarlan软件体系结构是软件设计过程中的一个层次 这一层次超越计算过程中的算法设计和数据结构设计 体系结构问题包括总体组织和全局控制 通讯协议 同步 数据存取 给设计元素分配特定功能 设计元素的组织 规模和性能 在各设计方案间进行选择等 软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题 如全局组织和全局控制结构 关于通讯 同步与数据存取的协议 设计构件功能定义 物理分布与合成 设计方案的选择 评估与实现等 软件体系结构的定义 第1章软件体系结构概论 1 3体系结构的兴起和发展 Kruchten软件体系结构有四个角度 它们从不同方面对系统进行描述 概念角度描述系统的主要构件及它们之间的关系 模块角度包含功能分解与层次结构 运行角度描述了一个系统的动态结构 代码角度描述了各种代码和库函数在开发环境中的组织 软件体系结构的定义 第1章软件体系结构概论 1 3体系结构的兴起和发展 HayesRoth软件体系结构是一个抽象的系统规范 主要包括用其行为来描述的功能构件和构件之间的相互连接 接口和关系 软件体系结构的定义 第1章软件体系结构概论 1 3体系结构的兴起和发展 DavidGarlan和DewnePerry软件体系结构是一个程序 系统各构件的结构 它们之间的相互关系以及进行设计的原则和随时间演化的指导方针 软件体系结构的定义 第1章软件体系结构概论 1 3体系结构的兴起和发展 BarryBoehm软件体系结构包括一个软件和系统构件 互联及约束的集合 一个系统需求说明的集合 一个基本原理用以说明这一构件 互联和约束能够满足系统需求 软件体系结构的定义 第1章软件体系结构概论 1 3体系结构的兴起和发展 Bass Ctements和Kazman软件体系结构包括一个或一组软件构件 软件构件的外部的可见特性及其相互关系 其中 软件外部的可见特性 是指软件构件提供的服务 性能 特性 错误处理 共享资源使用等 软件体系结构的定义 第1章软件体系结构概论 1 3体系结构的兴起和发展 我们的定义软件体系结构为软件系统提供了一个结构 行为和属性的高级抽象 由构成系统的元素的描述 这些元素的相互作用 指导元素集成的模式以及这些模式的约束组成 软件体系结构的定义 Architecture Components Connectors Constrains 例如 基于MVC模式Model 模型 完成维护数据 增 删 改 查 View 视图 向用户表达数据结果 从用户获得数据 Controller 控制器 连接视图与模型的关系 关于连接件的概念把原本分散在系统各个部分的连接成分组成一个单独可见的实体 这是软件体系结构分析的重要成果之一 连接件是软件体系结构的构造元素 它定义了组件间的交互关系为组件提供连接通路和一组指导交互的规则 协议对组件的交互进行管理 第1章软件体系结构概论 1 3体系结构的兴起和发展 对象请求代理 ORB 是CORBA CommonObjectRequestBrokerArchitecture 规范的基础 ORB主要功能是定位服务对象 分析客户对象的请求 获取服务对象的功能接口 在客户与服务对象间建立通信连接 举例 软件体系结构的意义 1 第1章软件体系结构概论 1 3体系结构的兴起和发展 体系结构是风险承担者进行交流的手段软件体系结构代表了系统的公共的高层次的抽象 这样 系统的大部分有关人员把它作为建立一个互相理解的基础 形成统一认识 互相交流 体系结构提供了一种共同语言来表达各种关注和协商 进而对软件系统能进行理智的管理 这对项目最终的质量和使用有极大的影响 例如 利用UML进行交流的手段 第1章软件体系结构概论 1 3体系结构的兴起和发展 体系结构是早期设计决策 decision 的体现 1 软件体系结构明确了对系统实现的约束条件基于软件体系软件开发过程中 软件体系的设计者不必是算法设计者或精通编程语言 而是系统的总体权衡问题 在实现时 要符合体系结构所描述的结构性设计决策 如 采用基于MVC的Struts的软件体系结构 仅采用JSP方式进行开发是不够的 软件体系结构的意义 2 2 软件体系结构决定了开发和维护组织的组织结构通常 大型软件开发 将系统的不同部分交由不同的小组去开发与维护 如 采用何种软件开发模式 3 软件体系结构制约着系统的质量属性小型软件系统通常可以通过编程或调试达到质量属性的要求 对于大型软件系统 质量属性更多地由系统结构和功能划分来实现 而不再是算法或数据结构 如 大型建筑的质量由结构决定 体系结构是早期设计决策 decision 的体现 4 通过研究软件体系结构可能预测软件的质量通过软件体系结构的评估技术 可以对按某软件体系结构开发的软件产品的质量做出准确的预测 5 软件体系结构使推理和控制更改更简单每个体系结构将更改分3类 局部 非局部 体系结构级 一个优秀的体系结构应该使更改简单易行 如 在OOSD中 对象实现方法的改变 不会影响到其他对象 体系结构是早期设计决策 decision 的体现 6 软件体系结构有助于循序渐进的原型设计确定了体系结构 就可以将其按可执行模型来构造原型 7 软件体系结构可以作为培训的基础通过对系统的体系结构的介绍 以及对构件之间如何交互 从而实现系统需求的高层描述 让项目新成员很快进入角色 体系结构是早期设计决策 decision 的体现 第1章软件体系结构概论 1 3体系结构的兴起和发展 软件体系结构是可传递和可重用的模型软件体系结构级的重用意味着体系结构的决策能在具有相似需求的多个系统中发生影响 这比代码级的重用要有更大的好处 例如 开发用户交互的软件 均可以采用MVC模式 软件体系结构的意义 3 软件体系结构的发展史 第1章软件体系结构概论 1 3体系结构的兴起和发展 无体系结构 设计阶段 第1章软件体系结构概论 1 3体系结构的兴起和发展 Perry和Wolf认为未来的年代是研究软件体系结构 SA 的时代 软件体系结构的发展史 总结 软件体系结构的应用现状 本教材研究的主要内容 第1章软件体系结构概论 1 4体系结构的应用现状 软件体系结构描述语言 体系结构描述构造与表示 体系结构分析 设计与验证 体系结构发现 演化与重用 基于体系结构的软件开发方法 特定领域的体系结构框架 软件体系结构支持工具 软件产品线体系结构 建立评价软件体系结构的方法 第1章软件体系结构概论 1 4体系结构的应用现状 软件体系结构描述语言ArchitectureDescriptionLanguage ADL ADL提供了具体的语法与刻画体系结构的概念框架 ADL能够很好地描述体系结构 以便与他人交流 能够用提供的工具对许多实例进行分析 如 C2 UML 软件体系结构的应用现状 1 软件体系结构是根植于软件工程发展起来的一门新兴科学 国外软件体系结构的研究是从20世纪90年代开始的 软件体系结构的研究活动 主要包括如下几个方面 第1章软件体系结构概论 1 4体系结构的应用现状 体系结构描述构造与表示 1 Kruchten提出的 4 1 模型 2 Booch从UML的角度给出了一种由设计视图 过程视图 实现视图和部署视图 再加上一个用例视图构成的体系结构 Architecture 描述模型 3 IEEE于1995年成立了体系结构工作组 起草了体系结构描述框架标准IEEEP1471 4 Rational从资产重用的角度提出了体系结构描述的规格说明框架 软件体系结构的应用现状 2 第1章软件体系结构概论 1 4体系结构的应用现状 体系结构分析 设计与验证 1 体系结构分析的内容可分为结构分析 功能分析和非功能分析 例如 Kazman等人提出了一种非功能分析的体系结构分析方法SAAM SoftwareArchitectureAnalysisMethod 并运用场景技术 提出了基于场景的体系结构分析方法 软件体系结构的应用现状 3 第1章软件体系结构概论 1 4体系结构的应用现状 体系结构分析 设计与验证 2 体系结构设计本质 将系统分解成相应的组成成分 如构件 连接件 并将这些成分重新组装成一个系统 生成一个满足软件需求的体系结构的程 软件体系结构的应用现状 3 第1章软件体系结构概论 1 4体系结构的应用现状 体系结构分析 设计与验证 3 体系结构设计有两大类方法 过程驱动方法和问题列表驱动方法 基于过程驱动的体系结构设计方法 如 4 1 模型方法 面向对象方法等 特点 适用范围广 问题列表驱动法的基本思想是枚举设计空间 以此来选择体系结构的风格 该方法适用于特定领域 如 Allen博士的论文 专门研究用户界面类的量化设计空间 提出了19个功能维 26个结构维 软件体系结构的应用现状 第1章软件体系结构概论 1 4体系结构的应用现状 体系结构分析 设计与验证 4 体系结构设计研究的重点内容之一就是体系结构风格或模式 体系结构模式 在本质上反映了一些特定的元素 按照特定的方式组成一个特定的结构 如 B S C S等模式 软件体系结构的应用现状 第1章软件体系结构概论 1 4体系结构的应用现状 体系结构分析 设计与验证 6 由于测试的抽象层次不同 体系结构测试策略可以分为单元 子系统 集成 验收测试等阶段的测试策略 软件体系结构的应用现状 第1章软件体系结构概论 1 4体系结构的应用现状 体系结构的发现 演化与重用 1 体系结构发现属于逆向工程范畴 解决如何从已经存在的系统中提取软件的体系结构 软件体系结构的应用现状 4 第1章软件体系结构概论 1 4体系结构的应用现状 体系结构发现 演化与重用 2 软件体系结构演化 由于系统需求 技术 环境 分布等因素的变化而最终导致软件体系结构的变动 C S B S 网上银行 软件体系结构的应用现状 第1章软件体系结构概论 1 4体系结构的应用现状 体系结构发现 演化与重用 3 体系结构重用属于设计重用 比代码重用更抽象 由于软件体系结构是系统的高层抽象 反映了系统的主要组成元素及其交互关系 因而较算法更稳定 更适合于重用 体系结构模式 如 C S风格 就是体系结构重用研究的一个成果 软件体系结构的应用现状 第1章软件体系结构概论 1 4体系结构的应用现状 基于体系结构的软件开发方法 1 回顾 软件工程中的软件开发过程 在引入了体系结构的软件开发之后 应用系统的构造过程变为 问题定义 软件需求 软件体系结构 软件设计 软件实现 可以认为软件体系结构架起了软件需求与软件设计之间的一座桥梁 软件体系结构的应用现状 5 第1章软件体系结构概论 1 4体系结构的应用现状 基于体系结构的软件开发方法 2 目前 常见的软件开发模型大致可分为三种类型 1 以软件需求完全确定为前提的瀑布模型 2 在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型 如螺旋模型等 3 以形式化开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电视台主持人口试指南预测试题及答案解读
- 电仪安全基础知识培训
- 2025年仓库安全员必-备知识面试模拟题及答案
- 赫初可颜眼部护理误区
- 制作风筝教学课件
- 信息化交流教学课件
- 田径安全知识培训内容课件
- 单词教学主题课件下载
- 贵州省毕节市2024-2025学年高二下学期期末考试化学试题(含答案)
- 新解读《GB-T 18916.37 - 2018取水定额 第37部分:湿法磷酸》
- 年产2000吨电子级超高纯石英晶体材料制造项目环评报告表
- 2025重庆对外建设集团招聘41人笔试参考题库附带答案详解(10套)
- 2025年秋季开学第一次全体教师大会上校长讲话-:想为、敢为、勤为、善为
- 面点摆盘造型技术
- 2025年e答网护士三基考试试题及答案
- 《无人机飞行控制技术》全套教学课件
- 2025年教育管理领导力案例分析试题及答案
- 信息平台造价管理办法
- DG-TJ08-2202-2024 建筑信息模型技术应用标准(城市轨道交通)
- 2025年度学校国际交流合作计划
- 2025年注册土木工程师专业基础考试题(附答案)
评论
0/150
提交评论