软件构造第一章

#软件构造的多维视图
在这里插入图片描述
【软件构造的多维视角】
1.阶段:构建 || 运行
2.动态:时刻 || 周期
3.级别:代码 || 组件

#外部质量属性
【正确性】
在规格说明书描述范围之内满足正确性
保证正确性的技术
有限制的正确:只保证自己层面正确,假设调用的都是正确的
测试与调试
防御性编程
形式化编程(采用很多数学技术)
【健壮性】
碰到异常情况进行适当的响应
出现规格说明书说明之外的情况由健壮性处理
响应异常情况
给出错误提示
正常退出或降级
【可扩展性】
软件产品适应规格变化的容易程度
传统方法通过固化需求(瀑布模型)进行编程
两个基本策略
设计简洁
离散化:低耦合
【可复用性】
软件模块能否被其他程序很方便地使用
例子:开发备注、封装
【兼容性】
能够与其他人员进行交互
跨平台、跨软件
实现方法:一致性和标准化(一致的方法和标准)
标准文件格式
标准数据结构
标准用户接口
最通用:标准协议
【效率】
程序运行中对CPU、硬盘的占用带宽;
实现效率是不能牺牲正确性,要再多指标之间权衡
实现方法:
好的算法
I/O技术
内存管理
功能问题都可以加一层抽象进行处理;性能问题都可以去掉一层抽象来解决
【可移植性】
是否容易由一个环境转移到另一个环境
由于访问OS本地类库、插件等问题导致的移植后无法正常运行
【应用性】
用户是否容易使用,不影响专业人员的使用情况下,方便初学者
方法:
结构清晰的设置
UI设计:理解用户需求
【功能性】
蠕变特征(不好的现象:开发者开发越来越多的功能,造成程序的复杂和不灵活)
原则:在保证整体质量不降低的情况下进行更新
策略:增量式模型
【及时性】
在规定时间内完成:时间效率高
【其他质量特性】
可验证性:如管理系统的效果难以验证
完整性:不会被非法访问干扰修改,防止数据不一致(如使用private)
可修改性
资金

内部质量属性

从LOC(line of code)到圈复杂度:用来衡量一个模型判定结构的复杂程序
耦合度和内聚度
代码是否可读、可理解、简洁
完整性
大小
【均衡决策】
完整性与易用性冲突
经济性与功能性冲突
性能与可复用、可移植性冲突
及时性与可延展性冲突
以效率为导向,以正确性为最重要

#五个关键的质量属性
easy to understand
ready for change
cheap for develop
safe from bugs
efficient to run

#雨课堂
1.1 软件构造的多维度视图
单选题 第1题 1分
Memory dump属于软件三维度视图的____

A Build-time和code-level view
B Run-time和moment view
C Run-time和moment view
D Moment和component-level view

正确答案:C

单选题 第2题 1分
Execution stack trace和code snapshot在软件三维度视图中的共性特征是____

A 都是moment view
B 都是component-level
C 都是run-time view
D 无共性

正确答案:C

单选题 第3题 1分
Code Churn 和 AST分别是____的视图

A Code-level, Run-time
B Build-time, Period
C Component-level, Code-level
D Period, Build-time

正确答案:D

多选题 第4题 2分
Static linking和Dynamic linking的区别在于____

A 前者发生在构造阶段,后者发生在运行阶段
B 前者的软件运行时需要库文件,后者不需要
C 同样的源代码,经过前者产生的代码尺寸比后者的要小
D 二者都是试图把外部库文化和开发者的代码链接在一起形成可执行文件

正确答案:A

多选题 第6题 2分
以下说法正确的是____

A Code static analysis是发生在build-time
B Deployment是把build-time的软件转换为run-time的软件的手段之一
C Files随时间发生变化,产生各个不同版本,按时间连起来形成period view
D 对软件的profiling和tracing均发生在run-time

正确答案:ABCD

1.2 软件构造的质量指标
多选题 第1题 2分
以下___是软件构造的external quality factors?

A Correctness 正确性
B Extendibility 可扩展性
C Reusability 可复用性
D Ease of use 易用性
E Complexity 代码复杂度
F Understandability 代码可理解性

正确答案:ABCD

单选题 第2题 1分
关于软件构造的质量指标,以下说法不正确的是____

A 健壮性刻画了软件能够恰当的处理spec范围之外的各类异常情况的能力
B 各项质量指标的优先级是等价的,在软件构造过程中要对它们做出全面优化
C 代码行数LoC是内部质量指标之一,但它可能对多项外部质量指标产生影响
D 程序的可复用性与程序的开发代价/运行效率直接存在折中

正确答案:B

多选题 第3题 1分
Correctness和Robustness的区别在于___

A 前者针对“需求”的正确实现,后者针对“需求”之外的其他情况的恰当实现
B 如果某函数输入参数应该是(0,100]范围的整数,当用户输入-1时,此为前者应考虑的内容。
C 如果某函数的返回值应该是(0,100]范围的整数,当程序输出-1时,此为后者应考虑的内容。
D 一个100%正确的程序一定是100%健壮,反之亦然。

正确答案:A

单选题 第4题 1分
说法不正确的是___

A LoC和code complexity很高,并不代表一定有很差的reusability和extendibility
B 对代码的时间/空间复杂度进行优化,可能带来其他external quality factors的降低
C 每向软件里增加一点功能,都要确保其他质量属性不受到损失
D 健壮性是唯一不能与其他质量指标进行tradeoff的质量指标

正确答案:D

多选题 第5题 2分
HIT CS32207 关注的软件构造质量指标包括___

A Ready to change
B Safe from bugs
C Easy to understand
D Efficient to run
E Cheap for develop
F Easy to extend

正确答案:ABCDEF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值