《软件工程方法与实践》—— 3.4 面向对象模型
本节书摘来自华章出版社《软件工程方法与实践》一 书中的第3章,第3.4节,作者窦万峰,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.4 面向对象模型
3.4.1 构件集成模型
构件集成模型利用模块化方法将整个系统模块化,并在一定构件模型的支持下重用构件库中的软件构件,通过组合手段提高应用软件系统过程的效率和质量。构建集成模型融合了螺旋模型的许多特征,本质上是演化型的,开发过程是迭代的。基于构件的开发模型由软件的需求分析和定义、体系结构设计、构件库建立、应用软件构建及测试和发布5个阶段组成。采用这种开发模型的软件过程如图3-4所示。
基于构件的开发活动从标识候选构件开始,通过搜查已有构件库,确认所需要的构件是否已经存在。如果已经存在,则从构件库中提取出来重用,否则采用面向对象方法开发它。之后利用提取出来的构件通过语法和语义检查后将这些构件通过胶合代码组装到一起实现系统,这个过程是迭代的。基于构件的开发方法使得软件开发不再一切从头开发,开发的过程就是构件组装的过程,维护的过程就是构件升级、替换和扩充的过程。其优点是构件集成模型导致了软件的重用,提高了软件开发的效率。
由于采用自定义的组装结构标准,缺乏通用的组装结构标准,这样就引入了比较大的风险。可重用性和软件高效性不容易协调,这就需要比较有开发经验的开发人员,而一般的开发人员很难开发出令客户满意的软件。由于过分依赖于构件,所以构件库的质量影响着产品质量。
构件集成模型融合了螺旋模型的很多特征,支持软件开发的迭代方法。这种面向重用的过程模型,最明显的优势是减少了需要开发的软件数量,加快了软件交付,从而降低了开发成本,同时降低了开发风险。当然,它的成功主要是依赖与可以存取的可重用软件构件,以及能集成这些软件构件的框架。
3.4.2 统一过程模型
统一过程模型(Unified Process,UP)是风险驱动的、基于用例技术的、以架构为中心的、迭代的、可配置的软件开发流程。UP是一个面向对象且基于网络的程序开发方法论。根据Rational Rose和统一建模语言的开发者的说法,它可以为所有方面和层次的程序开发提供指导方针、模板以及用例支持。
统一过程模型是一个软件开发过程,是一个通用的过程框架,可以用于各类软件系统和应用领域。统一过程模型是在重复一系列组成系统生存周期的循环。每一次循环包括4个阶段:初始、细化、构造和移交,每个阶段又进一步细分为多次迭代的过程,如图3-5所示。每次循环迭代会产生一个新的版本,每个版本都是一个准备交付的产品。
初始阶段。在初始阶段将一个好的想法发展为最终产品的一个构想,提出了该产品的业务实例。该阶段要完成:系统向它的每个重要用户提供的基本功能是什么?该系统的逻辑架构大概是什么样子?开发该产品的计划如何?开销多大?在该阶段主要建立关键用例的简化用例模型,用于刻画系统主要功能。架构是实验性的,通常包括主要子系统的大致轮廓。要确定最主要的风险及其优先次序,对细化阶段进行详细规划,并对项目进行粗略估算。
细化阶段。在细化阶段,详细说明该系统的绝大多数用例,并设计出系统的架构。架构可以表示为系统中所有模型的不同视图,合起来表示整个系统,即架构包括用例模型、分析模型、设计模型、实现模型和实施模型的视图。在细化阶段末期,要规划完成项目的活动,估算完成项目所需的资源。关键问题是用例、架构和计划是否足够稳定、可靠,风险是否得到控制,以便按照合同的规定完成整个开发任务。该阶段的结果是架构基线。
构造阶段。构造阶段将构造出最终产品—软件。在该阶段,架构基线逐步发展成为完善的系统,将消除所需要的大部分资源,架构可以进行微调,但系统架构是稳定、可靠的。要回答的问题是早期交付给客户的产品是否完全满足用户的需求。
移交阶段。移交阶段包括产品进入分析后期的整个阶段,用户使用分析法发现产品的缺陷和不足,开发人员改正问题及完善系统形成更通用的版本。该阶段包括诸如制作、用户培训、提供在线支持以及改正交付之后发现的缺陷活动。
统一过程模型在定义4个阶段及其迭代过程时,又给出了5个核心工作流:需求、分析、设计、实现和测试。每个工作流在各个阶段所处的地位和工作不同。图3-6给出了统一过程模型的核心工作流。
需求。需求工作流的目的是致力于开发正确的系统。需求工作流要求足够详细地描述系统需求,使客户和开发人员在系统应该做什么、不应该做什么方面达到共识。
分析。分析工作流的目的是更精确地理解需求,也是为了得到一个易于维护且有助于确定系统结构的需求描述。与需求工作流相比,分析工作流可以使用开发人员的语言来描述和组织。需求捕获阶段的需求,探究系统内部,解决用例间的干扰以及类似的问题。分析得到的需求结构可用做构造整个系统的基本输入。分析工作流使用分析模型表达系统的本质。
设计。设计工作流的目的是深入理解与非功能性需求和约束相联系的编程语言、构件使用、操作系统、分布与并发技术、数据库技术、用户界面技术和事务管理技术等相关问题。设计工作流把实现工作划分成更易于管理的各个部分,捕获早期子系统之间的主要接口,建立对系统实行的无缝抽象。
实现。实现工作流探讨如何用源代码、脚本、二进制代码、可执行体等构件来实现系统。实现工作流的目的是规划每次迭代中所要求的系统集成,通过把可执行构件映射到实施模型中的结点的方式来分布系统,实现设计过程中发现的设计类和子系统,对构件进行单元测试。
测试。测试工作流通过测试每一个构造来验证实现的结构。测试工作流的目的是规划每一次迭代需要的测试工作,包括集成测试和系统测试。设计和实现测试,执行各种测试并系统地处理每个测试的结果。
统一过程模型也存在一些缺点:统一过程模型只是一个开发过程,并没有涵盖软件过程的全部内容,如它在软件运行和支持等方面的内容略有不足。此外,它不支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。统一过程模型是一个非常好的开端,但并不完美,在实际的应用中可以根据需要对其进行改进,并可以用其他软件过程的相关模型对统一过程模型进行补充和完善。
《软件工程方法与实践》—— 3.4 面向对象模型相关推荐
- 周立功:嵌入式软件工程方法与实践丛书
<程序设计与数据结构>仅是<嵌入式软件工程方法与实践丛书>中的第一套第一本书,丛书共含四套: 第一套 <程序设计与数据结构> <面向接口的编程--基于AMte ...
- 《软件工程方法与实践》—— 导读
<img src="https://yqfile.alicdn.com/3e3e341793012d0054d9ae32221f90deabf0b3dd.jpeg" widt ...
- 软件工程——理论、方法与实践 之 面相对象分析
软件工程--理论.方法与实践 之 面向对象分析 在需求获取阶段,开发人员关注于理解用户以及他们的使用需求.而在需求分析阶段,开发人员关注于理解系统需求构建的内容,其核心是产生一个准确的.完整的.一致的 ...
- ChinaSoft 论坛巡礼 | 面向可解释人工智能的软件工程方法与技术论坛
2022年CCF中国软件大会(CCF ChinaSoft 2022)将于2022年11月25-27日在线上举行.预期将有林惠民.陈左宁.邬江兴.何积丰.梅宏.吕建.柴洪峰.廖湘科.王怀民.郑纬民.蒋昌 ...
- 干货 | 龙瀛:面向智慧城市的人本尺度城市形态:理论、方法与实践
本文内容选自清华大学建筑学院研究员.博士生导师龙瀛老师于2019年10月11日在清华大数据"应用·创新"系列讲座上所做的题为<面向智慧城市的人本尺度城市形态:理论.方法与实践 ...
- 近期活动盘点:2019第六届世界互联网大会、面向智慧城市的人本尺度城市形态:理论方法与实践讲座、高级管理人员AI大数据能力研修班...
想知道近期有什么最新活动?大数点为你整理的近期活动信息在此 2019第六届世界互联网大会•数字经济产业合作系列活动 2019年10月19日-10月20日 2018年,我国GDP超过90万亿元,全国互联 ...
- 软件工程 期末大作业参考 【餐厅点餐系统 】(面向对象模型:需求分析+面向对象设计书+可行性分析+测试文档+java界面)
软件工程大作业(餐厅管理系统)参考:需求分析+面向对象设计书+可行性分析+测试文档+JAVA项目 一.需求分析部分截图 二.面向对象设计书部分截图 三.可行性分析部分截图 四.测试文档部分截图 本文主 ...
- 软件工程——理论、方法与实践 第六章
第六章 面向对象技术是软件工程领域中的重要技术.主要讲 1.面向对象方法概述,面向对象=对象+类+继承+通信,然后介绍了其发展历史,,面向对象的软件工程方法分为面向对象分析.设计.编程.测试.维护. ...
- 软件工程——理论、方法与实践 第一章
第一章 主要分为1.软件2.软件工程3.软件工程知识体系4.软件工程职业道德规范四部分.软件是人类思维创造的杰作,并成为人类现代生活的催化剂;第一部分软件对软件的特性.发展和软件的危机进行了讲解,主 ...
最新文章
- C# 线程无法开启窗口的原因
- Html 教程 (5) 表格标签
- ERROR: 资源短缺 PXA_NO_FREE_SPACE
- 【学习笔记】抽象队列同步器AQS应用之BlockingQueue详解
- 【推荐系统(二)】协同过滤之隐语义模型(LFM)
- canvas 元素绑定事件_绘制SVG内容到Canvas的HTML5应用
- Python reduce 函数 - Python零基础入门教程
- MySQL数据库检查修复详解
- 档案管理软件 php_致PM:除了Excel,你还有这五个项目管理软件可以用
- 单片机c语言fft函数,单片机ADC采样FFT计算试验
- 前端实现PDF分页与Vue中的render函数
- 老板突然出现,游戏飞速隐藏,开源神器在手,摸鱼不怕被抓包丨不会写代码也能用...
- BH1750FVI光强度传感器及其STM32驱动程序
- 如何减少PDF文件的大小,为pdf瘦身?
- 微信硬件平台wifi设备通信第一篇
- 将项目上传至GitHub
- 青浦区专利工作试点和示范企业给予20万元和30万元奖励
- 车牌识别系统分步详解
- windows Media Player 9.0网页播放器
- Shell脚本创建用户
热门文章
- 【翻译】CEDEC2012 SQUARE ENIX GPGPU实现高速GI烘培工具的方法
- 史上最全的Web性能测试工具大全(下 )
- DIV+CSS圆角边框
- 让chrome浏览器支持跨域
- gitlab部署步骤+汉化
- http://blog.csdn.net/xingfuzhijianxia/article/details/6433918
- 转 从头到尾彻底解析Hash表算法
- CentOs 6.0 下安装cacti的syslog插件
- SCOM2012部署系列之九:部署审核收集报告(ACSReporting)
- WayOS路由智能小区组网方案