软件构造第一章
1.1软件开发的多维视图
软件系统的三个维度
阶段:build-time && run-time
动态:moment && period
级别:code && component
元素、关系和各种视角的模式
不同视角间的转换
Notes
【软件的构成要素】
- 软件=算法+数据结构
- 软件=程序+数据+文档(80年代)
- 软件=Modules(Components)+Data/Control Flow 模块(组件)+数据流/控制流
外部质量属性
正确性
在规格说明书描述范围之内满足正确性
保证正确性的技术
有限制的正确:只保证自己层面正确,假设调用的都是正确的
测试与调试
防御性编程
形式化编程(采用很多数学技术)
健壮性
碰到异常情况进行适当的响应
出现规格说明书说明之外的情况由健壮性处理
响应异常情况
给出错误提示
正常退出或降级
可扩展性
软件产品适应规格变化的容易程度
传统方法通过固化需求(瀑布模型)进行编程
两个基本策略
设计简洁
离散化:低耦合
可复用性
软件模块能否被其他程序很方便地使用
兼容性
能够与其他人员进行交互
跨平台、跨软件
效率
程序运行中对CPU、硬盘的占用带宽;
实现效率是不能牺牲正确性,要再多指标之间权衡
可移植性
是否容易由一个环境转移到另一个环境
由于访问OS本地类库、插件等问题导致的移植后无法正常运行
应用性
用户是否容易使用,不影响专业人员的使用情况下,方便初学者
方法:
结构清晰的设置
UI设计:理解用户需求
功能性
蠕变特征(不好的现象:开发者开发越来越多的功能,造成程序的复杂和不灵活)
原则:在保证整体质量不降低的情况下进行更新
策略:增量式模型
及时性
在规定时间内完成:时间效率高
其他质量特性
可验证性:如管理系统的效果难以验证
完整性:不会被非法访问干扰修改,防止数据不一致(如使用private)
可修改性
资金
# 内部质量属性
从LOC(line of code)到圈复杂度:用来衡量一个模型判定结构的复杂程序
耦合度和内聚度
代码是否可读、可理解、简洁
完整性
大小
均衡决策
完整性与易用性冲突
经济性与功能性冲突
性能与可复用、可移植性冲突
及时性与可延展性冲突
以效率为导向,以正确性为最重要

浙公网安备 33010602011771号