第一章 软件体系结构概论
软件危机
表现
1、软件成本日益增长。
2、开发进度难以控制。
(用户需求变化等意想不到的原因)
3、软件质量差。
(程序员习惯以自己的想法替代用户需求)
4、软件维护困难。
(缺标准,开发人员的流失,软件修改十分“危险”很容易出bug)原因
1、用户需求不明确。
(用户不清楚具体需求,用户需求有遗漏、二义甚至错误,用户需求变化,开发者与用户之间理解的差异)
2、缺乏正确、全面的理论指导。
(软件开发过分依赖开发者的高度智力投入,以及技巧与创造性。使得软件开发个性化强)
3、软件规模越来越大。
(大型项目需要团队共同完成,而团队之间不一定能有效协作)
4、软件复杂度越来越高。克服方法
探索用工程的方法进行软件生成的可能性,即用现代工程概念、原理、技术和方法进行计算机软件开发、维护和管理。
软件工程:用工程、科学和数学的原则与方法,研制和维护计算机软件的有关技术以及管理方法。
软件重用
- 概念:在两次货多次不同的软件开发过程之中,重复使用相同或相近的软件元素的过程。
构件
概念
可重用的软件元素:
程序代码,测试用例,设计文档,设计过程,需求分析,领域知识。可重用构件:语义完整、语法正确和有重用价值的单位软件。
粒度:可重用软件元素的大小。
构件的3C模型
1、概念(Concept)-构件做什么的描述
2、内容(Content)-构件如何实现概念
3、语境(Context)-描述构件的应用场景以及修改指导。
构件获取
- 领域:一组相似或相近软件需求的应用系统所覆盖的功能区域。
- 领域工程:领域分析,领域设计,领域实现等。
构件管理
种类
1、构件描述:方便搜寻
2、构件分类:方便管理
3、构件库组织:方便管理与搜寻
4、人员及权限管理:安全性
5、用户意见反馈:方便迭代开发构件描述
对构件的制作和重用提供依据以及方便管理。
如:实现方式,编程语言,注释,生产日期,价格等。构件分类方法
1、关键字分类法:每个概念用一个描述性关键字表示。
2、刻面分类法:定义一些刻画构件特征的“面”(3C模型中的概念),通常不超过七