软件构造第一章

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)到圈复杂度:用来衡量一个模型判定结构的复杂程序 耦合度和内聚度 代码是否可读、可理解、简洁 完整性 大小 均衡决策 完整性与易用性冲突 经济性与功能性冲突 性能与可复用、可移植性冲突 及时性与可延展性冲突 以效率为导向,以正确性为最重要
posted @ 2018-06-17 11:27  LlLlGOD  阅读(73)  评论(0)    收藏  举报