一、软构的多维度视图和质量目标:
多维度视图:
1.按阶段划分:构造时/运行时视图
2.按动态性划分:时刻/阶段视图
3.按构造对象层次划分:代码/构件视图
五个关键质量目标:
易懂,可扩展性,可复用性,健壮性,运行效率高
在外部质量指标和内部质量指标之间做折中
多维度视图:
build time(构造阶段):
code level:代码的逻辑组织,例如:类,方法,接口,函数
代码的物理组织:如:文件,文件夹,库,包
moment view:特定时刻的软件形态
period view:软件形态随时间的变化
(1)Build time,moment,code level
源代码如何按基本程序块进行逻辑组织
如函数、类、方法、接口等,以及它们之间的依赖关系。(下图橙色语句块)
词汇层面:源码;语法层面:AST(抽象语法树);语义层面:类图(class diam)
语义的表示通常是图形化的,例如类图,它描述了源代码具体想实现的目的,用于表达设计需求和设计思想,再转化为代码
(2)Build-time, period, and code-level view
code churn:代码变化,在新版本中增删语句或者文件
(3)Build time, moment,component
静态链接在构造阶段
(4)Build-time,period,component level
![](https://img-blog.csdnimg.cn/ebeb6d5f416f4cceab5c6ef88b8223a5.png)
![](https://img-blog.csdnimg.cn/bb44780a45b04caabb9a482a60b3d55d.png)
![](https://img-blog.csdnimg.cn/0ad5b31e8ffe4fc6850c85a19eef3285.png)
1.正确性:是否按照预先定义的规约进行,最重要的因素
3.可扩展性:规模越大,扩展起来越不容易
4.可复用性:一次开发,多次使用,发现共性
5.兼容性:不同的软件系统之间可以相互集成,保持设计的同构性,标准化
6.效率:在保证正确性的前提下才优化,过早的优化是万恶之源,对性能的关注要与其他质量特性折中,过度的优化将导致软件不能再适应变化和复用
7.可移植性:软件在不同的技术环境之间可以移植
8.易用性:用户易于使用,学习,安装,操作,监控;给用户详细的操作指南
9.功能:系统提供的可能性范围,在考虑性能问题时要兼顾其他质量因素(易用性,整体功能),每增加一点小的功能,都要保证系统的其他质量属性不丢失
10.及时性:软件的发布要与用户需求它的时间相符合
11.其他属性:经济性,可验证性,可修复性,完整性
二、内部质量因素
源代码相关因素,如行
代码 (LOC)、环形复杂性等
▪ 与体系结构相关的因素,例如耦合、内聚等
▪ 可读性
▪ 可理解性
▪ 清晰度
▪ 代码规模
代码的复杂性是几乎所有外部质量因素的敌人
内部质量因素常也用来作为部分测量外部质量因素的指标
三、折中
– 正确性和健壮性性:可靠性
• 软件构建的系统方法
• 正式规范
• 开发过程中的自动检查
• 更好的语言机制
• 一致性检查工具
– 可扩展性和可重用性:模块化
▪ 健壮性:封装、错误处理
▪ 可扩展性:封装、信息隐藏
▪ 可复用性:模块化、组件、模型、模式
▪ 兼容性:标准化模块和接口
▪ 可移植性:信息隐藏、抽象
▪ 易用性:GUI组件,框架
▪ 效率:可重复使用的组件
▪ 及时性:建模、重用
▪ 经济性:再利用
▪ 功能:可扩展性
![](https://img-blog.csdnimg.cn/f000f36d76df4461ba480ccb19eb08ca.png)
![](https://img-blog.csdnimg.cn/2edc2c3b31e5492baa2bfa9bd2d88676.png)
![](https://img-blog.csdnimg.cn/35697c9cf3704e4db03eed983a9f0180.png)
![](https://img-blog.csdnimg.cn/aced48eae3df4d49b7b2554d94c0207a.png)
5.程序的效率
程序员的视图转换:
从无到代码,从代码到组成部件,从构建阶段到运行阶段,从某个时刻到一个阶段