软工复习

软件工程复习

大纲

快速看ppt第一遍
往年题
实验
结合第二遍实验

第一章 概论

0.1

软件工程:
研发软件的工程化方法
开发:软件构造与软件维护和管理

重点:

  • 敏捷开发,结对编程,项目管理
  • web开发技术
  • git
  • 代码评审和优化
  • 测试用例的设计和执行
  • 自动测试工具
  • 持续测试工具
  • oo分析和设计
  • 架构设计

开发环境搭建

1.1

blog 银弹

软件危机:
需求/预算/质量/扩展性/文档/开发能力的问题

软工定义:
工程化方法

软件开发方法:
结构化/对象化
面向对象:
程序 = 对象+消息
分析测试编程设计都是面向对象的,并且分析的时候容易

工具:
项目管理
需求管理
设计建模
编程与调试
测试与维护
case

软件过程:
关键

软件工程管理

软件质量特性

1.2软工的本质

现实空间到计算机之间的映射,多步映射修正与需求的偏差
本质:用严格的规范和管理手段缩小偏差

两个映射:
概念映射
业务逻辑映射
类似对象和函数
问题:
抽象层次,表达方式,层与层之间的关系
解:
需求建模语言,设计建模语言,编程语言,部署与配置语言

现实空间的需求—>需求规约(specification)—>设计规约—>代码

关注产品和过程

关注的目标:
FR:
完备性,正确性,健壮性,可靠性
NFR:
效率,可用性,可维护性(修改),可一致性,清晰性,安全性,兼容性,经济性,商业质量

可用性:
错误监测:三个机制
错误恢复/预防

安全性:
未授权行为,攻击系统,影响正常行为

软件开发中的多角色:
甲方/乙方
甲方:
决策者,终端用户(最终用户),系统管理员
乙方:
决策者,软件销售和市场,咨询师/需求分析人员,软件架构师/软件设计师,开发人员:开发经理/项目经理,程序员,维护人员

不同人对应不同需求
用例视图连接不同人员的视图

实践?
好多原则

  • 迭代开发
  • 需求管理
  • 构件化
  • 可视化建模
  • 持续质量验证
  • 控制软件变更
  • 分段管理
  • smart原则

沟通阶段应该做得事

软工的核心概念:

  • 概念和形式模型
  • 抽象层次
  • 分治
  • 复用
  • 折中
  • 一致性和完备性
  • 效率
  • 演化

演化:
可修改性/维护性/扩展性

blog
经历的折中

第二章 敏捷开发过程

2.1 软件过程模型

2.1.1 软件过程

软件过程内容:
人员与分工,执行的活动,活动的细节和步骤
方式:
定义软件生产过程中的活动
定义这些活动的顺序及其关系

黑盒过程和白盒过程

软解过程的典型阶段
提出设想—>深入调研—>需求规格说明—>软件设计—>软件实现—>软件部署—>软件验证—>软件演化

2.1.2

典型的软件过程:
瀑布模型
增量过程模型
演化过程模型:

  • 螺旋模型
  • 原型模型

其他模型:
形式化过程/基于复用/敏捷过程模型

瀑布模型:
一个阶段结束—>下一个阶段开始
难以回溯
效率高,过于理想化

增量过程模型:
迭代运用瀑布模型
增量:新功能/模块
优点:安抚客户,人员分配灵活,客户学习时间长,重要模块测试多
困难:架构要求高,难改需求

RAD(快速应用开发)模型:
基于构建
第一个团队并行,团队间有衔接
缺点:人力要求多,短时间内构建,需要模块化架构,技术风险不能高

快速原型法:
循环开发
优点:用户参与度高,尽快完成需求
缺点:系统结构差,混淆原型和最终系统,额外的开发费用

螺旋式过程:
一圈一圈的完整开发,有风险分析
循环开发,完备性好
缺点:适合大规模项目,需要专业风险分析

演化过程模型:
短时间完成,需求变更频繁
问题:
管理困难,演化速度难掌握,开发速度/灵活性/可扩展性差

形式化过程模型:
数学刻画,模型间使用变换
理论研究

面向复用的软件过程:;
主过程:需求分析—>体系结构设计—>构件获取—>构件的修改和测试—>构件组装—>集成测试

博客阅读敏捷软件开发宣言
博客结对编程
博客模型对比

2.2 敏捷方法和过程

主要内容:

  • 敏捷过程模型
  • 极限编程
  • scrum
  • 与传统对比
  • 案例分析

2.2.1 敏捷过程模型