- l1 Introduction to Software Engineering 软件工程引入
- l2 A Generic View of Process 软件过程引入
- l3 Process Models 过程模型
- 软件过程(汇总)
- l4 An Agile View of Process
- 敏捷开发(汇总)
- l5 Software Engineering Practice 实践
- l6 System Engineering 系统工程(部分UML图)
本大纲以EE308FZ Slides l1-l6为基础,结合网课材料进行整合,参考书目为:《软件工程——实践者的研究方法》
l1 Introduction to Software Engineering 软件工程引入
1-1 Software
软件是一系列按照特定顺序组织的计算机数据和指令的集合。
分为:系统软件、应用软件和介于这两者之间的中间件。
1-2 Software engineering
Software engineering is a systematic engineering approach to software development.
软件工程:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程话应用于软件中。
1-3 补充
应用软件的类型:
l2 A Generic View of Process 软件过程引入
- Communication (collaboration & requirement gathering,合作)
- Planning (work plan & schedule,计划)
- Modeling (understand,理解)
- Construction (code generation and testing,编程)
- Deployment (delivery and feedback,验收与反馈)
2-1 Process
软件过程的组成部分:
- 软件规格说明:定义软件的功能、运行约束
- 软件开发:编程开发,必须符合软件规格说明
- 软件确认:必须是客户需要的
- 软件演化:通过不断反馈,满足需要
2-2 Process Patterns 过程的模式
Process patterns define a set of activities, actions, work tasks, work products and/or related behaviors
注意区分Process Patterns和Process Model
2-3 Personal and Team Process Models
- Personal Software Process (PSP)
- Team Software Process (TSP)
l3 Process Models 过程模型
软件过程汇总 Software Process
- 3-1 体系结构(原l3)
- 瀑布模型 Waterfall Model
- 增量式开发Incremental Process Models
- 集成和配置 Integration and configuration
- 演化过程模型Evolutionary Process Models
- Specialized Process Models
- Unified Process
- 3-2 过程活动
- 软件规格说明sign and implemetation
- 软件确认 software validation
- 软件演化 software evolution
- 3-3 应对变化的方法
- 使用软件原型
- 增量式交付
- 软件过程的改进
Prescriptive process models advocate an orderly approach to software engineering 规定性过程模型提倡软件工程的有序方法
l3-1 体系结构
3-1-1瀑布模型 Waterfall Model
- 1、计划驱动开发,所有活动提前计划好(传统生命周期)
- 2、前一个阶段不结束,后一个阶段就不开始(线性顺序模型)
考虑Waterfall Model需求熟悉,变化少
- 嵌入式系统
- 关键性系统
- 大型软件系统
3-1-2 增量式开发 Incremental Process Models
Y:增量式开发
N:敏捷式开发
3-1-2 Incremental Process优缺点:
The Rapid Application Development (RAD) Model
快速应用程序开发(RAD)模型
3-1-3 集成和配置模型 – Integration and configuration
- 优点:降低开发量、成本、风险
- 缺点:不能完全满足需求、版本及功能可能不受控制
(UML活动图:fork+join,决策)
3-1-4 Evolutionary Process Models 演化模型
3-1-4.1 The Spiral Model
3-1-4.2 The Concurrent Development Model 并行开发模型
质量最重要
3-1-5 Specialized Process Models – 专用流程模型
3-1-6 The Unified Process – 统一过程模型
- Inception phase
- Elaboration phase
- Construction phase
- Transition phase
l3-2 过程活动
- 规格说明
- 开发
- 确认
- 演化
3-2-1 软件规格说明
需求+约束——需求工程
活动图
- 圆角:需求
- 直角:对像
- 需求抽取和分析(系统描述)
- 需求说明(用户和系统需求)
- 需求确认(需求文档)
3-2-2 软件设计和实现
设计过程的通用模型
3-2-3 软件测试/确认
- 确认系统是否符合需求(可量化)
- 确认是否符合用户的期望(无法量化)
通用测试过程的三个阶段(与第八章说法略有不同)
- 组件测试
- 系统测试
- 用户测试
3-2-4 软件演化
l3-3 应对变化的方式
- 使用软件原型
- 增量式交付
- 软件过程的改进
3-3-1 软件原型
3-3-2 增量式交付
- 替换旧系统时,难以迭代开发
- 难以确定全体增量
3-3-3 过程改进
Overall:软件过程
l4 An Agile View of Process 敏捷开发
“敏捷开发宣言”
- 个体和互动 高于 流程和工具
- 可工作的软件 高于 详尽的文档
- 客户合作 高于 合同谈判
- 相应变换 高于 遵循计划
敏捷开发总结
- 敏捷方法
- 增量开发方法
- 客户参与
- 设计和实践为核心
- 尽量减少文档化
- 敏捷方法的原则
- 客户参与
- 拥抱变化
- 增量交互
- 保持简洁
- 人不是过程
- 敏捷开发的实践
- 用户故事(卡片):思想强大,便捷,容易遗漏需求
- 重构:改进软件的结构与可读性,使结构更合理,提高复用性(reusability)
- 测试先行的开发:容易考虑不当,不完整
- 结对编程:共同责任,非正式评审,鼓励重构,但效率损失显著
敏捷 vs 计划型
- 基于系统
- 敏捷开发:中小规模、长期(多互动,先demo)
- 计划开发:关键性、大型、嵌入式、监管严格的系统
- 基于团队
- 技术、分布
- 基于组织
- 合同、文化
- 综合考虑,两者结合
敏捷开发 vs 计划驱动开发
敏捷模型 7 Agile Process Models
- Extreme Programming (XP)
- Adaptive Software Development (ASD)
- Dynamic Systems Development Method (DSDM)
动态系统开发方法
- Scrum敏捷方法
Scrum被提出以提供一个组织敏捷项目的框架,在一定程度上提供项目进展状况的外部可见性
多团队Scrum:角色重复、产品架构师、发布同步、每日站立会议(多层会议)
- Crystal
- Feature Driven Development (FDD)
- Agile Modeling (AM)
敏捷建模
Overall:敏捷开发
l5 Software Engineering Practice 实践
- Communication Practices
- Planning Practices
- Modeling Practices
- Analysis
- Design
- Construction Practices
- Coding
- Testing
- Deployment
l6 System Engineering 系统工程
系统工程层次结构:
业务流程工程:
产品工程:
系统建模:
UML图(Unified Modeling Language)
- Deployment diagram 部署图
- Activity diagram 活动图
- Class diagram 类图
- Use-case diagram 用例图
Deployment diagram 部署图
Activity diagram 活动图
Class diagram 类图
Use-case diagram 用例图
新年快乐!最后的最后,祝你好运——Lance于2023/01/01
更新于2023年01月02号,大三上学期的各科历年卷解析汇总:
链接: https://pan.baidu.com/s/1oRMbdsh9JtMkPlco_fZcdQ
提取码: ecv7