软构复习1多维度视图和质量目标

一、软构的多维度视图和质量目标:

多维度视图:

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

Software Configuration Item (SCI ,配置项 )
version:版本
各项软件实体随时间的变化
run time(运行阶段):
运行时,代码被载入机器开始执行
code level:逻辑实体在内存中如何实现?
component level:物理实体在硬件环境中具体如何实现?
momnet:特定时刻的形态
period:形态随时间的变化
(1)run time,code,moment level:
snapshot diagram:
代码快照图:描述程序运行时内存
里变量层面的状态
memory dump:内存存储
(2)run time ,period ,code level:
Execution tracing 执行跟踪
Tracing involves a specialized use of logging to record information
about a program‘s execution. 用日志方式记录程序执行的调用次序
课程重点:
软件质量因素:
外部:例如运行速度,使用是否简单;影响客户
内部:影响软件,程序员,开发者
外部质量是我们关心的,但是它由内部质量因素决定
 一、外部质量因素:
1.正确性:是否按照预先定义的规约进行,最重要的因素
措施:测试和调试,发现,改正错误; 防御式编程:编写时就避免错误;形式化方法:通过形式化验证发现问题
2.健壮性:对正确性的补充,在发生异常(未被spec覆盖的情况即异常情况)时不要崩溃,在出现规约以外的情况时能够做出恰当的反应

3.可扩展性:规模越大,扩展起来越不容易

4.可复用性:一次开发,多次使用,发现共性

5.兼容性:不同的软件系统之间可以相互集成,保持设计的同构性,标准化

6.效率:在保证正确性的前提下才优化,过早的优化是万恶之源,对性能的关注要与其他质量特性折中,过度的优化将导致软件不能再适应变化和复用

7.可移植性:软件在不同的技术环境之间可以移植

8.易用性:用户易于使用,学习,安装,操作,监控;给用户详细的操作指南

9.功能:系统提供的可能性范围,在考虑性能问题时要兼顾其他质量因素(易用性,整体功能),每增加一点小的功能,都要保证系统的其他质量属性不丢失

10.及时性:软件的发布要与用户需求它的时间相符合

11.其他属性:经济性,可验证性,可修复性,完整性

二、内部质量因素

源代码相关因素,如行
代码 (LOC)、环形复杂性等
▪ 与体系结构相关的因素,例如耦合、内聚等
▪ 可读性
▪ 可理解性
▪ 清晰度
▪ 代码规模

代码的复杂性是几乎所有外部质量因素的敌人

内部质量因素常也用来作为部分测量外部质量因素的指标

三、折中

正确的软件开发过程中,开发者应该将不同质量因素之间如何做出折中的设
计决策和标准明确的写下来
虽然需要折中,但“正确性”绝不能与其他质量因素折中
几个重要的质量因素:
 – 正确性和健壮性性:可靠性
• 软件构建的系统方法
• 正式规范
• 开发过程中的自动检查
• 更好的语言机制
• 一致性检查工具
– 可扩展性和可重用性:模块化
OOP提升程序质量的方法:
正确性:封装、去中心化
▪ 健壮性:封装、错误处理
▪ 可扩展性:封装、信息隐藏
▪ 可复用性:模块化、组件、模型、模式
▪ 兼容性:标准化模块和接口
▪ 可移植性:信息隐藏、抽象
▪ 易用性:GUI组件,框架
▪ 效率:可重复使用的组件
▪ 及时性:建模、重用
▪ 经济性:再利用
▪ 功能:可扩展性
四、软件构造中五个关键的质量因素
1.可理解性:
2.可复用性:
3.可维护性和适应性:
4.健壮性:

5.程序的效率

 

程序员的视图转换:

从无到代码,从代码到组成部件,从构建阶段到运行阶段,从某个时刻到一个阶段

 

 

 

 

每增加一小点功能,都确保其他质量属性
不受到损失
每增加一小点功能,都确保其他质量属性
不受到损失

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值