当前位置:网站首页>【HIT-SC-MEMO1】哈工大2022软件构造 复习笔记1
【HIT-SC-MEMO1】哈工大2022软件构造 复习笔记1
2022-08-04 05:32:00 【XMeow】
一、软件构造基础
1.1 软件构造的多维度视图
软件多维视图
按阶段划分:构造时/运行时视图
按动态性划分:时刻/阶段视图
按构造对象划分:代码/构件视图
1.2 软件构造的阶段划分、各阶段的构造活动
构造阶段 Build-Time View
Code:代码的逻辑组织
functions
classes
methods
interfaces
Component:代码的物理组织
files
directories
packages
libraries
构建时+瞬时+代码
源代码
函数、类、方法、接口
三个层面
词汇:使用的语句、字符串、变量、注释(半结构化)
语法:语法树、流程图(彻底结构化)
语义:源代码实现的目标 & 组成部分联系情况
构建时+周期+代码
记录周期内代码变化Code Churn
版本控制工具
构建时+瞬时+组件
模块化组织为文件、目录
文件被压缩为package、library
与库文件链接
静态链接
发生在构造阶段
复制
不依赖
缺点:难以升级
动态链接
不会加入可执行文件
做标记
运行时根据标记装载库至内存
发布软件时,记得将程序所有依赖的动态库都复制给用户
优点:易于升级
构建时+周期+组件
files/packages/components/libraries 如何变化 不同版本
Software Configuration Item(SCI)配置项
运行阶段 Run-Time View
程序被载入目标机器
Code:逻辑实体在内存中呈现?
Components:物理实体在物理硬件环境中呈现?
Moment:特定时刻形态?
Period:随时间变化?
关注点:
可执行程序、原生机器码、程序完全解释执行
库文件
分布式程序
运行时+瞬时+代码
Code snapshot 代码快照图(第三章)
运行时程序变量层面状态
Memory dump 内存信息转储
查看内存使用情况(实验)
宏观:任务管理器
运行时+周期+代码
UML图
执行跟踪tracing
用日志记录程序执行的调用次序
运行时+瞬时+组件(略)
运行时+周期+组件(略)
1.3 内部/外部的质量指标
外部质量因素
用户感受得到、影响使用
正确性 Correctness
i. 遵守规格说明书
ii. 分层:从底层到顶层,都要正确
iii. 设法测试
鲁棒性 Robustness
健壮性:对异常情况做出适当反映
异常取决于规格说明,是其没有涉及的部分
易扩展性 Extendibility
易于调整、适应变化(软件是易变的)
改变的多少(与规模密切相关、越大越难以扩展)
Decentralization 离散化:模块自治性越强,变化时对其余模块影响越小
复用性 Reusability
利用已有的、复用性好的程序,开发成本少
相似的模式、利用共性
模块化
兼容性 Compatibility
软件元素融合
关键:标准化
效率 Efficiency
对硬件资源尽可能少的需求
与其他存在矛盾
可移植性 Portability
便于将软件产品移植到各种环境
易用性 Ease of use
用户:轻松掌握使用、包括安装、运行、GUI等
功能性
(冲突)过多新功能 --> 损失一致性(兼容性)、影响易用性
先实现主要功能、提高质量,再丰富功能
时效性 Timeliness
Others
a. 可验证性
b. 完整性 Integrity
i. 保护组件(程序和数据)在未经授权时不会被修改
c. 可修复性
d. 经济
i. 与时效性相关
ii. 系统能够按照等于或低于预算完成的能力
内部质量因素
影响使用代码的相关人员、软件本身和开发者
内部质量因素通常用作外部质量因素的部分度量
LOC
lines of code
Cyclomatic Complexity 圈复杂度
衡量一个模块判定结构的复杂程度
Architecture-related factors
Coupling 耦合度 --> 低
Cohesion 内聚度 --> 高
矛盾
可读性
易理解性
清晰 Clearness
复杂度
大小 Size
权衡 Tradeoff
因素之间相互影响、矛盾、相关
经济性 与 功能性/可复用性 矛盾
有效性/可复用性 与 轻便性 矛盾
更高效、对硬件和软件有高要求
时效性 与 可扩展性 矛盾
完整性 与 易用性
其中,首要的是:正确性!
边栏推荐
猜你喜欢
随机推荐
vim的介绍
[Development Miscellaneous][Editor][Code Reading]ctags & vim
枚举和联合(自定义类型)-C语言
动态内存管理-C语言
用PPAPI插件技术在Web上显示会议视频、桌面、PPT等
JDBC第一学之进行数据库连接时出现The server time zone.....解决办法
LeetCode_Nov_2nd_Week
网络通信与Socket编程概述
[Development miscellaneous][Debug]debug into kernel
IDEA中创建web项目实现步骤
[Daily Office][Miscellaneous][vscode]tab space
MVC自定义配置
FAREWARE ADDRESS
第三章 标准单元库(上)
MNIST handwritten digit recognition - based on Mindspore to quickly build a perceptron to achieve ten categories
Miscellaneous [development] [VS Code] remote - SSD retry failed
树和二叉树
LeetCode_22_Apr_4th_Week
Chapter One Introduction
file editor