软件构造复习2-

2-1 软件的生命周期和配置管理

一些专业名词:

  • SDLC (Software Development Lifecycle)
  • SCM (Software Configuration Management)

1.Lifecycle of a software 软件的生命周期(从0到1)
在这里插入图片描述
从1到n(通过不断的升级)

2.传统的软件过程模型
两种基本的类型:

  • 线性过程
  • 迭代过程

现有的模型:

  • Waterfall (Linear, non-iterative) 瀑布过程
  • Incremental (non-iterative) 增量过程
  • V-Model (for verification and validation) V字模型
  • Prototyping (iterative) 原型过程
  • Spiral (iterative) 螺旋模型

选择合适的过程模型的依据:
用户参与程度有多大?–适应变化的能力
开发效率/管理复杂度
开发出的软件的质量

Waterfall (Linear, non-iterative) 瀑布过程
• 线性推进
• 阶段划分清楚
• 整体推进
• 无迭代
• 管理简单
• 无法适应需求增加/变化

增量过程:
• 线性推进
• 增量式(多个瀑布的串行)
• 无迭代
• 比较容易适应需求的增加

V字模型:
是直线向下移动,而是形成典型的V形。

原型过程:
迭代:开发出来之后由用户试用/评审,发现问题反馈给开发者,开发者修改原有的实现,继续交给用户评审。
循环往复这个过程,直到用户满意为止。
时间代价高,但开发质量也高。

螺旋模型:
• 多轮迭代基本遵循瀑
布模式
• 每轮迭代有明确的目
标,遵循“原型”过
程,进行严格的风险
分析,方可进入下一
轮迭代

3.敏捷开发
敏捷开发:通过快速迭代和小规模的持续改进,以快速适应变化。

Agile = 增量 + 迭代
每次迭代处理一个小规模增量

极限的用户参与
极限的小步骤迭代
极限的确认/验证
在这里插入图片描述
4.Software Configuration Management (SCM) and Version Control System (VCS)

SCM 软件配置管理:追踪和控制软件的变化

Software Configuration Item (SCI) 软件配置项:软件中发生变化的基本单元(例如:文件)

基线:软件持续变化过程中的“稳定时刻”
在这里插入图片描述
版本:为软件的任一特定时刻(Moment)的形态指派一个唯一的编号,作为“身份标识”

多个版本之间,形成线性或分支结构

2-2Process, Systems, and Tools of Software Construction 软件构造的过程、系统和工具

广义的软件构造过程
Design -> Programming /refactoring -> Debugging -> Testing -> Build -> Release
在这里插入图片描述
1.programming
构造语言
从用途上划分
– Programming languages (e.g., C, C++, Java, Python) 编程语言
– Modeling languages (e.g., UML) 建模语言
– Configuration languages (e.g., XML) 配置语言
– Build languages (e.g., XML) 构建语言
从形态上划分
– Linguistic-based 基于语言学的构造语言
– Mathematics-based (formal) 基于数学的形式化构造语言
– Graphics-based (visual) 基于图形的可视化构造语言

IDE Integrated development environment集成开发环境
– Source code editor with intelligent code completion, code refactoring tool源代码编辑器、智能代码补全工具、代码重构工具
– File management tool 文件管理
– Library management tool 库管理
– Class browser, object browser, class hierarchy diagram 软件逻辑实体可视化
– Graphical User Interface (GUI) builder 图形化用户界面构造器
– Compiler, interpreter 编译器、解释器
– Build automation tools 自动化build工具
– Version control system 版本控制系统
– Extensible by more external third-party tools 外部的第三方工具

2.Review and static analysis/checking 代码评审

– 结对编程
– 走查
– 正式评审会议
– 自动化评审

(3) Dynamic code analysis / profiling动态代码分析
动态分析:要执行程序并观察现象、收集数据、分析不足。
利用代码覆盖率测试

(4) Debugging and Testing调试和测试
测试:发现程序是否有错误
调试:定位错误、发现错误根源

(5)Refactoring 重构
重构:在不改变功能的前提下优化代码
在这里插入图片描述
狭义的软件构造(build
Validate -> Compile -> Link -> Test -> Package -> Install -> Deploy

粗略理解build:build-time -> run-time
借助于工具,将软件构造各阶段的活动“自动化” (编译、打包、静态分析、测试、生成文档、部署、…)
尽可能脱离“手工作业”,提高构造效率
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值