以下为本学期软件构造1-2章的复习笔记:
Multi-dimensional software views
– By phases: build- and run-time views 按阶段划分:构造时/运行时视图
– By dynamics: moment and period views 按动态性划分:时刻/阶段视图
– By levels: code and component views
按构造对象的层次划分:代码/构件视图
1.2 Quality Objectives of Software
Construction
软件构造的质量目标
外部质量因素:
正确性:
测试和调试
防御式编程
形式化方法
健壮性:针对异常状况的处理。
可扩展性,可复用性,兼容性,性能,可移植性,易用性,功能性,可验证性,内在因素。。
内在因素:代码行数LOC,Cyclomatic Complexity(圈复杂度)。
正确性和健壮性:可靠性
可扩展性和可重用性:模块化
几张重要表格:
2.1 Software Lifecycle and
Configuration Management
软件生命周期与配置管理
1 Software Development Lifecycle
(SDLC)
2 Traditional Software process models
Two basic types:
– Linear 线性过程
– Iterative 迭代过程
Existing models:
– Waterfall (Linear, non-iterative) 瀑布过程
– Incremental (non-iterative) 增量过程
– V-Model (for verification and validation) V字模型
– Prototyping (iterative) 原型过程
– Spiral (iterative) 螺旋模型
增量过程:
• 线性推进
• 增量式(多个瀑布的串行)
• 无迭代
• 比较容易适应需求的增加
3 Agile development
敏捷开发:通过快速迭代和小规模
的持续改进,以快速适应变化
Agile = 增量 + 迭代
每次迭代处理一个增量
5. 软件配置管理:追踪和控制软件的变化
软件配置项:软件中发生变化的基本单元(例如:文件)
基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)
CMDB:配置管理数据库
存储软件的各配置项随时间发生变化的信息+基线
Version control terminology:
Local VCS
Centralized VCS
Distributed VCS(e.g. Git)
git的三种形态:modified,stage, committed.(已修改、已暂存、已提交)
多个commit指向一个父亲:分支
一个commit指向多个分支:合并
取回origin主机的master分支。
$ git fetch origin master
2.2 Process, Systems, and Tools of
Software Construction
软件构造的过程、系统和工具
- Construction languages
Programming languages (e.g., C, C++, Java, Python) 编程语言
– Modeling languages (e.g., UML) 建模语言
一种描述信息或者数据模型的概念的语言。目前最流行的,最常用的建模语言是UML(Unified Modeling Language,统一建模语言)。建模语言的关键在于能够实现模型概念的传递。
– Configuration languages (e.g., XML) 配置语言
配置文件配置程序的参数和初始设置。
– Build languages (e.g., XML) 构建语言
Forms of the languages 从形态上划分
– Linguistic-based 基于语言学的构造语言
– Mathematics-based (formal) 基于数学的形式化构造语言
– Graphics-based (visual) 基于图形的可视化构造语言
(2) Review and static code analysis
Code review, static code analysis
(3) dynamic code analysis/profiling
要执行程序并观察现象、收集数据、分析不足/对代码运行时的状态和性能进行度量,发现代码中的潜在问题。
(4) Debugging and Testing
(5) Refactoring
重构:在不改变功能的前提下优化代码。