有质量的软件构造

还是第一章 有质量的软件构造

  • 保证质量的指标
    • 易于理解
    • 留有改进空间
    • 易于升级
    • 安全
    • 高性能

1.3软件系统的质量特性 内部质量和外部质量

  • 外部质量是用户能够感受到的,影响用户的使用
  • 内部质量影响使用代码的相关人员,影响软件本身和开发者
1.3.1外部质量
  1. 正确性
  • 定义:程序总是能够给出约定中的行为
  • 保证方法:
    • Testing
    • debugging
  1. 鲁棒性(健壮性):
  • 定义:对于异常输入,程序能够给出合理的反应,对于正确性的关系如下
    在这里插入图片描述
  • 异常的界定:判断是否是异常的标准,不取决于客观的正确标准,而取决于程序的规格说明
  1. 可拓展性:
  • 定义:可扩展性是指软件易于调整以适应变化的能力。
  • 保证方法:
    • Design simplicity(设计简单化):简单的体系结构总是比复杂的体系更容易适应变化。
    • Decentralization(离散化)::模块自治性越强,变化时对其余模块影响越小。
  1. 可复用性:
  • 定义:软件经常遇到相似的模式,利用共性,避免重复实现。
  • 保证方法:通过捕获这样的模式,可重用的软件元素将适用于许多不同的开发
  1. 兼容性:
  • 定义:兼容性是将本软件与其他部分(操作系统,其它代码等)结合起来的能力。
  • 难点:不同软件有不同的设定/规定
  • 保证办法:统一标准
    • 标准化文件格式
    • 标准化数据结构
    • 标准化用户接口
    • 有时候通过协议来实现更通用的兼容性
  1. 效率
  • 定义:效率是软件系统对硬件资源尽可能少的需求的能力(首先应保证正确)
  • 保证方法:将会在后面提到
  1. 可移植性
  • 定义:可移植性是指便于将软件产品转移到各种硬件和软件环境。
  1. 便于使用
  • 定义:用户可以轻松掌握软件的使用,也包括安装、运行和监控的容易度
  1. 功能性
  • 定义:程序功能的强大程度
  1. 时效性
  • 时效性是指软件系统在用户需要时或之前发布的能力。

更多的还有:可验证性,完整性,可维护性,经济性等

1.3.2 内部质量

内部质量有着如下想评判标准

  • 圈复杂度,用来衡量一个模块判定结构的复杂程度
  • 高内聚度,低耦合度
  • 代码的易于理解,可读性,简洁度
  • 代码的复杂程度
  • 代码的体积

PS.内部质量因素通常用作外部质量因素的部分度量

1.4软件构造的五个关键目标

  • 易于理解
    • Code level Moment Build-time 代码的可理解性(变量/子程序/语句的命名与构造标准、代码布局与风格、注释、复杂度)Review; Walkthrough; 函数规约
    • Component-level Moment Build-time 构件/项目的可理解性(包的组织、文件的组织、命名空间)
    • Code level Period Build-time 重构
    • Code level Period Run-time 日志
  • 可复用性
    • Code level Moment Build-time ADT/OOP;接口与实现分离;重载;继承/重载/重写;组合/代理;多态;子类型与泛型编程;OO设计模式
    • Component-level Moment Build-time API design; Library; Framework(for/with reuse)
  • 可维护性和适应性
    • Code level Moment Build-time 模块化设计;聚合度/耦合度;SOLID;OO设计模式;
    • Component-level Moment Build-time SOLID;GRASP(见第八张)
    • Component-level Period Build-time SCM Version Control
  • 鲁棒性
    • Code level Moment Build-time Error handling;Exception handling;Assertion;Defensive programming;Test-first programming
    • Component-level Moment Build-time Unit Testing Integration Testing
    • Period Build-time Regression Testing
    • Moment Run-time Debug Dumping
    • Period Run-time Logging Tracing
  • 高性能
    • Code level Moment Build-time 设计模式
    • Code level Moment Run-time 空间复杂性(内存管理);时间复杂性(算法性能);代码调优
    • Component-level Moment Run-time 分布式系统
    • Code level Period Run-time Performance analysis and tuning(调整)
      * Component-level Period Run-time 并行/多线程程序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值