2019春Software-Construction复习笔记(1)

以下为本学期软件构造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
软件构造的过程、系统和工具

  1. 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
重构:在不改变功能的前提下优化代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值