【软件构造】期末复习个人理解笔记1

一. 多维软件视图

时刻周期
代码层面构件层面代码层面构件层面
建成阶段源代码,AST,类图 包,文件,静态链接,库,测试用例,构建脚本代码变化配置项,版本
运行阶段代码块找,信息转储包,库,动态链接,配置,数据库,中间设备,网阔,硬件执行堆栈追踪,并发多线程事件日志,多进程,分布式处理
程序调用图,信息图

构建阶段关注

观点—>需求—>设计—>代码—>可安装/可执行包

代码角度:源代码——源代码的逻辑组织方式通过基本程序块,
成分角度:架构——源代码在物理上是如何的按文件、目录、包、库和依赖项组织 (代码的物理组织)

时刻角度:特定时刻的软件形态
阶段角度:软件形态随时间的变化

运行阶段关注:

运行时:程序被载入目标机器,开始执行
代码层面:逻辑实体在内存中如何呈现?
构件层面:物理实体在物理硬件环境中如何呈现?

时刻性:逻辑/物理实体在内存/硬件环境中特定时刻的形态如何?
阶段性:逻辑/物理实体在内存/硬件环境中的形态随时间如何变化?

(1)建成阶段,周期性,构件层面 关注代码的更迭,与(2)中不同的是,这个维度下更关注文件版本的变化,而不是具体语句的变化(而该项代码层面中关注的是哪一行代码被修改了)

(2)运行阶段,时刻性,代码层面关注的是程序在某个时间点内存中的情况,如代码快照图(Code Snapshot)、内存信息转储(Memory dump)。

(3) 运行阶段,时刻性,构建层面 关注的也是包/库,但却是在代码执行过程中的情况,如动态链接库

二.软件系统的质量

外部质量因素

1.Correctness(正确性),正确就是满足spec,这是软件开发最重要的因素,一个可用的软件一定是正确的,所以首要保证软件的正确性,其他的都可以做妥协、让步,但只有这一项不可妥协。

2. Robustness(鲁棒性),针对异常情况的处理,健壮性是对正确性的补充,现规约定义之外情形的时候,软件要做出恰当的反应,出现异常时不要“崩溃”

3. Extendibility(易扩展性),要便于软件功能的增加/扩展(ADT、OOP、留下一个Visitor),降低未来修改软件时的成本。

4.Reusability(复用性),在异性之间尽可能地寻找共性,以便于未来可以直接使用现在写的这段代码。这样可以降低软件地开发成本。

5.Compatibility(兼容性),在不同的环境下都是可用的,不同的软件系统之间相互可容易的集成。

6. Efficiency(效率),不要过早的优化,性能在没有正确性保障的条件下是没有意义的。

7.Portability(可移植性),软件可方便的在不同的技术环境之间移植。

8. Ease of use(易用性),学习成本低,结构简单、清晰,易于使用。

9.Functionality(功能性),功能过多会导致易用性的降低。主要功能要首要提升质量。

10.Timeliness(时效性),软件要能够在交付时间之前完成开发交给使用者。

其他:Verifiability (可验证性),Integrity (完整性),Repairability (可修复性),Economy (经济性)。

内部质量因素

源代码相关的因素,例如行代码(LOC)、圈复杂度等;
与体系结构相关的因素,例如耦合、内聚等;
可读性;易懂性;清晰度;

OOP如何提升质量

正确性:封装、分散
健壮性:封装、错误处理
可扩展性:封装,信息隐藏
可重用性:模块化、组件、模型、模式
兼容性:标准化模块和接口
可移植性:信息隐藏、抽象
易用性:GUI组件、框架
效率:可重用的组件
及时性:建模、重用
经济性:重复利用
功能性:可扩展性

五大质量目标

易理解,复用性高,低复杂度,正确且健壮,运行高效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值