软件体系结构概述

软件体系结构

软件体系结构概述

软件体系结构的兴起与发展

1.随着软件的规模越来越大,越来复杂,整个系统的结构和规格说明就显得越来越重要

2.对于大规模的复杂系统来说,总体的结构设计和规格说明比算法和数据结构重要

3.软件都是有体系结构的,不存在没有体系结构的软件。

软件体系结构的定义

不同的人对于软件体系结构有不同的理解,下面两种是国外的典型版本:

软件体系结构概述_第1张图片

软件体系结构概述_第2张图片

国内定义

软件体系结构概述_第3张图片

软件体系结构的意义

  1. 是风险承担者进行交流的手段(组织结构和拓扑结构)

  2. 体系结构是早起设计决策的体现

    软件体系结构概述_第4张图片

软件的质量属性

  1. 通过观察运行软件并观察其运行效果来度量的,如功能、性能、安全及可靠性等

  2. 通过观察开发活动或者维护活动来考察特性,包括各种可维护性问题,如适应性,可移植性,可重用性等

    软件体系结构的发展史

    软件体系结构概述_第5张图片

软件体系结构的应用

体系结构描述语言:ADL

在这里插入图片描述

体系结构描述构造与表示

体系结构分析、设计和验证

体系结构是对系统的高层抽象,并只对感兴趣的属性进行建模。体系结构本身需要分析和测试,已确定这样的体系结构是否满足需求。

体系结构分析的内容
  1. 结构分析

  2. 功能分析

  3. 非功能分析

    3.1 定量分析方法

    3.2 推断的分析方法

生成一个满足软件需求的体系结构的过程即为体系结构设计

本质:将系统分解为相应的组成部分(如构件,连接件),并将这些成分重新组装成一个系统。

两大类方法:过程驱动方法和问题列表驱动方法。
  1. 过程驱动方法(通用性与实践性强)

    1.1 面向对象方法,与OOA/OOD相似,更侧重于接口与交互

    1.2 “4+1”模型方法

    1.3 基于场景的迭代方法

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oxnxz309-1646618903993)(软件体系结构概述_第6张图片
)]

体系结构发现、演化与重用

体系结构的动态性分为有约束的和无约束的、以及结构动态性和语义动态性

软件体系结构的开发方法

目前常见的卡法模型大致可分为三种类型:

  1. 以软件需求完全确定为前提瀑布模型
  2. 在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,例如螺旋模型、增量模型、敏捷方法、统一过程等
  3. 以形式化开发方法为基础的变换模型

简要概述什么是软件危机?产生软件危机的原因?如何克服软件危机

定义: 在计算机软件的开发和维护过程中所遇到的一系列严重问题
    
表现:
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)第三方的构件开发商可能歇业,这会使购买的构件失去维护服务。这些都是在购买第三方构件进行软件开发时无法回避的问题,因此需要对这些风险进行充分的估计。

简述3种应用最为广泛的构件技术规范COM、CORBA和EJB的各自特点。

答:CORBA的特点:

(1) 实现客户与服务对象的完全分开,客户不需要了解服务对象的实现过程以及具体位置。

(2) 应用程序间的统一接口。

(3) 采用面向对象的软件实现方法开发应用系统,实现对象内部细节的完整封装,保留对象方法的对外接口定义。

(4) 分层的设计原则和实现方式。

COM的特点:

(1) 语言无关性 。

(2) 可重用性 。

EJB的特点:

(1) 可移植性。

(2) 平台独立性。

(3) 简化了分布式对象的开发、部署和访问 。

就项目管理方面,软件重用项目与非重用项目有哪些不同之处。

**答:**使用软件重用技术可减少重复工作,提高软件生产率, 缩短开发周期。同时,由于软构建大多经过严格的质量认证,因此有助于改善[软件质量] 大量使用构建, 软件的灵活性和标准化程度可得到提高。

你可能感兴趣的:(软件体系结构,开发语言)