软件体系结构概论
一、软件危机 software crisis
软件危机是指在计算机软件的开发(development)和维护(maintenance)过程中遇到的一系列严重问题。
1.软件危机的表现
软件成本日益增长
开发进度难以控制
软件质量差
软件维护困难
2.软件危机的成因
用户需求不明确
缺乏正确的理论指导
软件规模越来越大
软件复杂度越来越高
3、如何克服软件危机
人们面临的不仅是技术问题,更重要的是管理问题。应用现代工程的概念、原理、技术、方法进行计算机软件的开发、管理和维护。
软件工程是用工程、科学、数学的原则与方法研制、维护计算机软件的有关技术以及管理方法。三要素:方法、工程、过程。
二、构件与软件重用
1.要提高软件的开发效率,提高软件的开发质量,必须采用工程化的开发方法与工业化的生产技术。包括技术和管理两方面的问题。技术上:基于重用的软件生产技术;管理上:采用多维的工程管理模式。
2.要真正解决软件危机,实现软件工业化生产是唯一可行的途径,其中构件是核心和基础,重用是必须手段。
3.软件重用定义:软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。
软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。通常,把这种可重用的元素称作软构件(software component),简称构件。可重用的软件元素越大,我们就说重用的力度越
意义:
提高软件生产率,降低开发成本;
有助于改善质量;
提高软件的灵活性和标准化程度
4.构件定义:语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。简单的说,构件是具有一定的功能,能够独立工作或能同其它构件装配起来协调工作的程序体,构件的使用同它的开发、生产无关。
构件将抽象的程度提到一个更高的层次,是对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。整个构件隐藏了具体的实现,只用接口对外提供服务。
5.构件模型model定义:构件模型是对构件本质特征的抽象描述。
三大流派:
(1)OMG(ObjectManagement Group,对象管理集团)的CORBA(Common Object Request BrokerArchitecture,通用对象请求代理结构)
(2)Sun的EJB(Enterprise Java Bean)
(3)Microsoft的DCOM(DistributedComponent Object Model,分布式构件对象模型)
国内:青鸟构件模型
6.构件的获取途径
从现有构件中获得符合要求的构件,直接使用或作适应性修改,得到可重用的构件;
通过遗留工程,将具有潜在重用价值的构件提取出来,得到可重用的构件;
从市场上购买现成的商业构件,即COTS(Commercial Off-The-Shell)构件;
开发新的符合要求的构件。
7.构件的分类方法
关键字分类法 keyword classification
刻面分类法faceted classification
超文本组织方法 hypertext classification
8.构件重用步骤
检索与提取构件
理解与评价构件
修改构件
构件组装
9.构件组装技术
基于功能的组装技术:采用子程序调用和参数传递的方式将构件组装起来;
基于数据的组装技术:也要求库中构件以子程序形式出现,但它所依赖的软件设计方法不再是功能分解,而是面向数据的设计方法;
面向对象的组装技术:构造法、子类法。
三、软件体系结构的发展
事实上,软件总是有体系结构的,不存在没有体系结构的软件。
1.软件体系结构的定义
软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
2.软件体系结构的意义
体系结构是风险承担者进行交流的手段
体系结构是早期设计决策的体现
软件体系结构明确了对系统实现的约束条件
软件体系结构决定了开发和维护组织的组织结构
软件体系结构制约着系统的质量属性
通过研究软件体系结构可能预测软件的质量
软件体系结构使推理和控制更改更简单
软件体系结构有助于循序渐进的原型设计
软件体系结构可以作为培训的基础
软件体系结构是可传递和可重用的模型
3.软件体系结构的发展史
无体系结构设计阶段:以汇编语言进行小规模应用程序开发为特征
萌芽阶段:出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征
初期阶段:出现了从不同侧面描述系统的结构模型,以UML为典型代表
高级阶段:以描述系统的高层抽象结构为中心,不关心具体的建模细节,划分了体系结构模型与传统软件结构的界限,该阶段以Kruchten提出的“4+1”模型为标志
4.软件体系结构的评价方法
体系结构权衡分析方法(ATAM方法)architecture tradeoff analysis method
软件体系结构分析方法(SAAM方法)software architecture analysis method
中间设计的积极评审(ARID方法)active reviews for intermediate design