基于构件/组件化开发的软件是解决复杂环境下软件规模与复杂性的一种手段。只要是系统的部分都可以当成构件,是基于面向对象的思想所产生的。<br>
构件的获取方法:
从现有构件中获取复合要求的构件,直接使用或做适应性修改,得到可重复利用的构件。
通过遗留工程(Legacy Engineering),将具有潜在复用价值的构件提取出来,得到可复用的构件。
从市场上购买现成的商业构件
开发符合要求的新的构件
从开源市场寻找免费的开源构件
构件分类法
关键字分类法:将应用领域的概念按照从抽象到具体的顺序逐次分解为<font color="#e74f4c">树形或有向无回路图结构</font>,每个概念用一个描述性的关键字表示。
刻面分类法:定义若干用于<font color="#e74f4c">刻画构件特征的”刻面”</font>,每个面包含若干概念,这些概念描述构件在刻面上的特征。刻面可以描述构件执行的功能、被操作的数据、构件应用的语境或其他特征。
超文本方法:所有构件必须辅以详尽的功能或行为说明文档,说明中出现的重要概念或者构件以网状链接方式相互连接;检索者在阅读文档的过程中可按照人类的联想思维方式<font color="#e74f4c">任意跳转</font>到包含相关概念或构件的文档;全文检索系统将用户给出的关键字与说明文档中的文字进行匹配,实现构件的浏览式检索。
构件开发使用模型:RAD快速应用开发
快速应用开发(Rapid Application develop,RAD)是一种比传统生命周期法快得多的开发方法,他强调极短的开发周期。
RAD模型是瀑布模型的一种高速变种,通过使用基于构件的开发方法进行快速开发。<br>
阶段:规划-->设计(包括分析)-->实现-->运行
基本思想
1、让用户更主动的参与到系统分析、设计和构造活动中来。
2、将项目开发组织成一系列重点突出的研讨会,研讨会要让项目投资方、用户、系统分析师、系统设计人员和开发人员一起参与。
3、通过一种迭代的构造方法,加速需求分析和设计阶段。
4、让用户提前看到一个可工作的系统。
RAD开发过程
RAD流程从业务建模开始,随后是数据建模、过程建模、应用生成、测试与交付。
1、业务建模
确定驱动业务过程运作的信息、要生成的信息、如何生成、信息流的去向以及处理等,可以使用数据流图来帮助建立业务模型。
2、数据建模
为支持业务过程的数据流查找数据对象集合、定义数据对象属性,并与其他数据对象的关系构成数据模型,可以使用ER图来帮会组建立数据模型。
3、过程建模
将数据对象变换为要完成一个业务功能所需的信息流,创建处理以描述增加、修改、删除或获取某个数据对象,即细化数据流图中的加工。
4、应用生成
利用第四代语言,写出处理程序,复用已有构件或者创建新的可复用的构件,利用环境提供的工具自动生成并构造出整个应用系统。
5、测试与交付
RAD强调复用,许多构件已经是测试过的,这就减少了测试的时间,由于大量复用,所以一般只做整体测试,但新创建的构件还需要测试。
RAD局限性
RAD通过大量使用可复用的构件,加快了开发速度过程,但也有局限性
1、并非所有应用都适合RAD。
RAD对模块要求比较高,如果有哪一项功能不能被模块化,那么RAD所需要的构件就会有问题;
如果高性能是一个指标,且该指标必须通过调整接口使其适应系统构件才能获得(需要对构件进行修改才能满足要),则RAD可能也不能有效
2、开发者和客户必须在短时间完成一系列的需求分析,任何一方配合不当,都会导致RAD失败
3、RAD只能用于管理信息系统的开发,不适合技术风险很高的情况。
当一个新系统采用很多新技术,或当新系统要与现有系统较高的互操作时,就不合适使用RAD
构件开发使用模型:RUP统一过程模型
统一过程(Unified Process,UP)是一个通用过程框架,可以用于广泛的软件系统、不同的应用领域、不同的组织类型、不同的性能水平和不同的项目规模。
重型模型,主要体现在大项目(周期长,例如两年以上的项目)使用;在瀑布模型的基础上增加了一些内容,主要是增加了<font color="#a23c73">项目管理</font>的内容。
UP是基于构件的,在为软件系统建模时,UP使用UML。<br>
<font color="#e74f4c">与其他软件过程相比,UP具有三个显著特点,即:用例驱动(需求分析可以使用用例图来完成),以架构为中心(系统由哪些构件组成,针对系统的不同的组成部分都用UML展示,4+1视图来展示),迭代和增量。</font>
RUP中的软件过程在时间上被分解为4个顺序的阶段,分别是<font color="#e74f4c">初始阶段、细化阶段、构件阶段和移交阶段</font>。每个阶段结束时都要进行进行技术评审,以确定这个阶段的目标是否已经达成,如果评审结果满意就进入下一阶段。
RUP 9大核心工作流<br>
业务建模
业务建模(Business Modeling)工作流描述了如何为新的目标组织开发一个构想,并基于这个构想在业务用例模型和商业对象模型中定义组织的过程,角色和责任。
需求
需求(Requirement)工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档化;最重要的是理解系统所解决问题的定义和范围。
分析和设计
分析和设计(Analysis & Design)工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。分析设计的结果是一个设计模型和一个可选的分析模型。设计模型是源代码的抽象,由设计类和一些描述组成。设计类被组织成具有良好接口的设计包(Package)和设计子系统(Subsystem),而描述则体现了类的对象如何协同工作实现用例的功能。设计活动以体系结构设计为中心,体系结构由若干结构视图来表达,结构视图是整个设计的抽象和简化,该视图中省略了一些细节,使重要的特点体现得更加清晰。体系结构不仅仅是良好设计模型的承载媒介,而且在系统的开发中能提高被创建模型的质量。
实现
实现(Implementation)工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
测试
测试(Test)工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别并确认缺陷在软件部署之前被提出并处理。RUP提出了迭代的方法,意味着在整个项目中进行测试,从而尽可能早地发现缺陷,从根本上降低了修改缺陷的成本。测试类似于三维模型,分别从可靠性、功能性和系统性能来进行。
部署
部署(Deployment)工作流的目的是成功的生成版本并将软件分发给最终用户。部署工作流描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。在有些情况下,还可能包括计划和进行beta测试版、移植现有的软件和数据以及正式验收。<br>
配置和变更管理
配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物。配置和变更管理工作流提供了准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本。工作流描述了如何管理并行开发、分布式开发、如何自动化创建工程。同时也阐述了对产品修改原因、时间、人员保持审计记录
项目管理
软件项目管理(Project Management)平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。其目标包括:为项目的管理提供框架,为计划、人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。
环境
环境(Environment)工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。环境工作流集中于配置项目过程中所需要的活动,同样也支持开发项目规范的活动,提供了逐步的指导手册并介绍了如何在组织中实现过程。
1、初始阶段
初始阶段的任务是为了建立业务模型并确定项目的边界
在初始阶段必须识别所有与系统交互的外部实体,定义系统与外部实体交互的特性。
在这个阶段中,所关注的是整个项目的业务和需求方面的主要风险。
对于建立在原有系统基础上的开发项目来说,初始阶段可能很短
初始阶段实现过程如下
明确项目规模:建立项目的软件规模和边界条件,包括验收标准;了解环境以及重要的需求和约束,识别系统的关键用例;
评估项目风险:了解项目所面临的风险,并对如何降低或处理风险有明确的策略;
制定项目计划:估计整个项目总体成本、进度和人员配备。综合考虑备选架构,评估设计和自制/外购/复用方面的方案,从而估算出成本、进度和资源。
阶段技术评审:初始阶段结束时要进行一次技术评审,检查初始阶段的目标是否完成,并决定继续进行项目还是取消项目。
2、细化阶段
这个阶段的任务是分析问题领域,建立完善的架构,淘汰项目中最高风险的元素。
在细化阶段,必须在理解整个系统的基础上,对架构做出决策,包括其范围、主要功能注入性能等非功能需求,同时为项目监理支持环境。
细化阶段主要工作
确定架构:通过处理架构方面重要的场景,建立一个已确定极限的架构,并验证其将在适当时间,以合理的成本支持系统需求;
制定构建阶段计划:为构建阶段制定详细的过程计划并为其建立基线;
建立支持环境:包括开发环境、开发流程、支持构件团队所需的工具和自动化/半自动化支持。
选择构件:集成所选构件,并按主要场景进行评估;
阶段技术评审:检验详细的项目目标和范围、架构的选择,以及主要的风险解决方案。
3、构建阶段
对系统进行详细设计,并进行编码,测试、集成
4、移交阶段
对系统全面测试,补充各种文档,并发产品移交给用户等。