【复习笔记】软件工程概论复习(0)
本文大多数论述引自《软件工程 实践者的研究方法》
软件
软件是产品。
软件显示了由计算机硬件体现的计算能力。
软件是指令、数据结构、软件描述信息(文档)的集合
软件特性
软件不会磨损
软件是开发(develop)的
软件是根据需求定制的
软件是复杂的
软件退化
软件面临变更,每次变更都可能引入新的错误,使得软件失效率陡然上升。不断地变更就是软件退化的原因。
软件危机
- 第一次软件危机(1945-1968)
表现:软件生产效率低下,成本高,质量差,难以维护
原因:手工作坊模式code and fix,软件理论体系和开发管理不完善。
结果:软件工程理论体系形成- 第二次软件危机(1968-2001)
表现:产品有错,低质量,延迟,效率低,违约现象严重
原因:认为需求可以在软件编写前充分了解,软件开发黑盒模式
结果:软件开发白盒模式出现,允许项目变更- 第三次软件危机(2001-now)
表现:变更/演化/重用。知识产权问题。软件安全问题。
根源:遗产系统的重用。开源软件/代码的使用。动态的需求。
结果:软件智能化。自主软件(浑源/开源/闭源)标准。
软件工程
软件工程是(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护;(2)对(1)中所述方法的研究。
四个层次(左低右高):质量关注点->过程->方法->工具
软件过程
软件过程是软件工程的基础
软件过程是工作产品构建是所执行的一些列活动、动作和任务的集合。
活动(activity)是指实现宽泛的目标,例如完成需求
动作(action)是指包含了主要工作产品的生产过程。例如用例建模
任务(task)关注小而明确的目标。如单元测试。
过程框架
- 通用框架活动(fragment activities)
- 沟通
- 策划
- 建模
- 构建
- 部署
- 普适性活动(unbrella activities)
- 软件项目跟踪
- 风险管理
- 软件质量保证
- 技术评审
- 测量
- 软件配置管理
- 复用管理
- 工作产品的准备和生产
软件生存周期
软件生存周期(SDLC,Systems Development Life Cycle)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段
软件过程模型
- 瀑布模型
- V模型
- 增量模型
- 演化模型
- 螺旋模型
- 喷泉模型
- UP模型
每个模型的详细解释就不写了
敏捷开发
敏捷开发宣言:
- 个体和交互 胜过 过程和工具
- 可以工作的软件 胜过 面面俱到的文档
- 客户合作 胜过 合同谈判
- 响应变化 胜过 遵循计划
虽然右项也有价值,但是我们认为左项具有更大的价值
极限编程 XP
极限是敏捷过程中最常见的模型
- 策划 策划产生一系列"用户故事"(user stories),XP团队成员评估每一个故事并给出成本
- 设计 设计严格遵守KIP原则(keep it simple) CRC卡作为XP过程的唯一工作产品,建立spike sulutions,鼓励重构
- 编码 先开发一系列用于检测本次增量发布实验的所有故事的单元测试,再针对单元测试进行编码,鼓励结对编程。
- 测试 单元测试纳入日常活动,推行客户验收测试
重构
重构是指不改变代码外部行为而改进其内部结构的过程