1.随着软件的规模越来越大,越来复杂,整个系统的结构和规格说明就显得越来越重要
2.对于大规模的复杂系统来说,总体的结构设计和规格说明比算法和数据结构重要
3.软件都是有体系结构的,不存在没有体系结构的软件。
不同的人对于软件体系结构有不同的理解,下面两种是国外的典型版本:
国内定义
体系结构是对系统的高层抽象,并只对感兴趣的属性进行建模。体系结构本身需要分析和测试,已确定这样的体系结构是否满足需求。
结构分析
功能分析
非功能分析
3.1 定量分析方法
3.2 推断的分析方法
本质:将系统分解为相应的组成部分(如构件,连接件),并将这些成分重新组装成一个系统。
过程驱动方法(通用性与实践性强)
1.1 面向对象方法,与OOA/OOD相似,更侧重于接口与交互
1.2 “4+1”模型方法
1.3 基于场景的迭代方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oxnxz309-1646618903993)(
)]
目前常见的卡法模型大致可分为三种类型:
定义: 在计算机软件的开发和维护过程中所遇到的一系列严重问题
表现:
1、对软件开发成本和进度的估计常常很不准确
2、用户对“已完成的“软件系统不满意的现象经常发生
3、软件产品的质量往往靠不住
4、软件常常是不可维护的
5、软件通常没有适当的文档资料
6、软件成本在计算机系统总成本中所占的比例逐年上升
7、软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
原因:
(1)与软件本身特点有关
1. 软件不同于硬件,管理和控制软件开发过程相当困难
2. 软件在运行过程中不会因为使用时间过长而被”用坏“如果运行中发现了错误,很可能是遇到了一个在开发时期引入的在测试阶段没能检测出来的错误
3. 软件不同于一般程序,他的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升
(2)软件开发于维护的方法不正确有关
1.只重视程序而忽视软件配置其余成分的糊涂观念。
2.软件开发人员在定义时期没有正确全面地理解用户需求,知道测试阶段或软件交付使用后才发现”已完成的“软件不完全符合用户的需要
3.严重的问题在软件开发的不同阶段进行修改需要付出的代价是很不相同的!
如何克服:
1.首先应该对计算机软件有一个正确的认识
2.充分认识到软件开发应该是各类人员协同配合,共同完成的工程项目
3.推广使用在实践中总结出来的开发软件的成功技术和方法,并且研究探索更好的技术和方法
4.应该开发和使用更好的软件工具
软件重用:**是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。
**级别有:代码的复用、设计结果的复用、分析结果的复用、测试信息的复用等。
**答:**可重用构件是指可以在多个软件系统的开发过程中被重复使用的软件产品。
可重用构件的特殊要求:
(1) 可重用构件应该具有功能上的独立性与完整性;
(2) 可重用构件应该具有较高的通用性;
(3) 可重用构件应该具有较高的灵活;
(4) 可重用构件应该具有严格的质量保证;
(5) 可重用构件应该具有较高的标准化程
答:优势是:
(1)提高了软件的质量。可复用的构件相对于在单一应用中使用的模块来说,一般都更为成熟并具有较高的质量保证。
(2)对于提高软件开发的效率也有着显著的作用。软件复用已经渗透到了软件开发的各个阶段,在开发的各个阶段都有可以被重复使用的软件产品。
(3)成本大为节省。它避免了不必要的重复劳动和人力财力的浪费。同时也必须意识到基于构件的软件开发也是有一定成本和代价的。
挑战和困难:
(1)在同一系统采用多个开发商提供的构件,它们之间的兼容性可能是开发过程中所要面对的一个严峻的问题;
(2)采用随处可以购买到的构件可能会使开发出来的软件产品丧失技术上的独创性和市场上的竞争力;
(3)第三方的构件开发商可能歇业,这会使购买的构件失去维护服务。这些都是在购买第三方构件进行软件开发时无法回避的问题,因此需要对这些风险进行充分的估计。
答:CORBA的特点:
(1) 实现客户与服务对象的完全分开,客户不需要了解服务对象的实现过程以及具体位置。
(2) 应用程序间的统一接口。
(3) 采用面向对象的软件实现方法开发应用系统,实现对象内部细节的完整封装,保留对象方法的对外接口定义。
(4) 分层的设计原则和实现方式。
COM的特点:
(1) 语言无关性 。
(2) 可重用性 。
EJB的特点:
(1) 可移植性。
(2) 平台独立性。
(3) 简化了分布式对象的开发、部署和访问 。
**答:**使用软件重用技术可减少重复工作,提高软件生产率, 缩短开发周期。同时,由于软构建大多经过严格的质量认证,因此有助于改善[软件质量] 大量使用构建, 软件的灵活性和标准化程度可得到提高。