软件构造复习1--ch1

1-1 Multi-Dimensional Views of Software Construction

可以从三个角度看待软件构造

1.时间维度

Moment

从瞬时的角度看待软件

Period

从周期的角度看待软件 即软件的变化

2.编码维度

Build-time

开发阶段:程序员编写代码

Run-time

运行阶段:代码与系统的交互

3.代码-模块维度

Code-level

Source-code Interface Method Class

Component

更加宏观的角度 Package File
在这里插入图片描述

下面分情况考虑软件构造的不同维度

1.1 Build-time,Moment,and code-level

词汇层面
语法层面

算法的流程
[AST:结构化,将源代码变成结构树 Abstract Syntax Tree]

语义层面

不同部分之间的联系–类与类之间的关系
图形化或形式化
了解UML语言

1.2 Build-time,Period,and code-level

Code churn 代码变化 版本控制 github+git

1.3 Build-time,Moment,and component-level

组织程序文件
可以采用库函数的方式去组织

Link
Static Link

构造阶段:库被拷贝进代码形成整体
优点:执行时无需提供库文件
缺点:无法升级

Dynamic Link

针对静态链接的缺点产生
库文件不会在build阶段加入可执行软件,仅做出标记
程序执行时,根据标记装载库至内存

1.4 Build-time,Moment,and component-level

软件实体随时间进行变化—Version 版本

2.Run-time

程序被载入目标机器,开始执行

Executable programs

解释型程序:执行一行编译一行
可以移植性好
在这里插入图片描述

Libraries

库 复用代码

Configuration and data file

配置文件

Distributed programs

分布式程序

Transformation between views

不同视图之间的联系

在这里插入图片描述

在这里插入图片描述

1-2Quality Objectives of Software Construction

“存在矛盾的因素–折衷、妥协”

Five key quality of software construction

1.Easy to understand

2.Ready to change

3.Cheap for develop

reuse

4.Safe from bugs

5.Efficient to run

消耗资源较小

外部质量因素和内部质量因素

外部质量因素

1.Correctness

如果是分层开发,确保每一层都是正确的,在开发高层时,假设底层是正确的。
满足软件规格书
验证方法:Testing and Debugging

2.Robustness

鲁棒性即健壮性
软件系统对异常情况做出反应的能力。“如果灾难发生,降低灾难的危害。”

3.Extensibility

软件易于调整以适应变化的能力。
可扩展性同规模相关,越大的程序越难扩展。
使用简单的体系结构,提高模块的自治性。

4.Reusability

利用共性,避免重复实现

5.Compatibility

使用协议实现更通用的兼容性
标准化

6.Efficiency

效率是软件系统对硬件资源尽可能少的需求的能力

7.Portability 可移植性

将软件产品转移到各种硬件和软件环境

8. Ease of use 易用性

用户可以轻松掌握软件的使用,也包括安装、运行和监控的容易度
换位思考,站在用户的角度设计软件

9.Functionality 功能性
10.Timeliness 时效性
10++ Other qualities

是否易于验证
完整性:保护各种组件未经授权可不被修改和访问
可修复性

内部质量因素

Lines of Code
圈复杂度
设计中追求高内聚和低耦合

Tradeoff between quality properties 权衡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值