Software Engineering 软件工程
思维导图概览
软件工程概述
flowchart LR
Engineering(软件工程概述) ==> Concept([基本概念])
Engineering ==> PDCA([软件工程过程 PDCA])
Engineering ==> Activity([四个活动])
Engineering ==> Maturity([软件成熟度模型])
Concept --> Concept1[定义]
Concept --> Concept2[软件工程活动]
Concept --> Concept3[软件工具分类]
PDCA --> Plan[Plan 软件规格说明]
PDCA --> Do[Do 软件开发]
PDCA --> Check[Check 软件确认]
PDCA --> Action[Action 软件演进]
Activity --> Activity1[数据设计]
Activity --> Activity2[架构/体系结构设计]
Activity --> Activity3[人机界面/接口设计]
Activity --> Activity4[过程/功能设计]
Maturity --> CMM[CMM: 能力成熟度模型]
Maturity --> Maturity2[CMMI: 能力成熟度模型集成]
CMM --> CMM1[初始级] --> CMM1x[英雄]
CMM --> CMM2[可重复级] --> CMM2x[过程准则、可重复]
CMM --> CMM3[可定义级] --> CMM3x[文档化、标准化]
CMM --> CMM4[已管理级] --> CMM4x[制定度量标准]
CMM --> CMM5[优化级] --> CMM5x[持续改进]
style Engineering fill:#f9f,stroke:#333,stroke-width:2px
软件工程概述
软件过程模型
flowchart LR
Process(软件过程模型) ==> Traditional([传统模型])
Process ==> Agile([敏捷模型])
Process ==> Other([其他模型])
Traditional --> WaterfallModel[瀑布模型]
Traditional --> PrototypingModel[原型化模型]
Traditional --> SpiralModel[螺旋模型]
Traditional --> VModel[V 模型]
Traditional --> WModel[W 模型]
Traditional --> HModel[H 模型]
WaterfallModel --> WaterfallModel1[风险控制力弱]
WaterfallModel --> WaterfallModel2[每阶段文档]
WaterfallModel --> WaterfallModel3[适用于需求明确]
PrototypingModel --> PrototypingModel1[适用于需求不明确]
SpiralModel --> SpiralModel1[强调风险]
SpiralModel --> SpiralModel2[适用于庞大复杂高风险系统]
VModel --> VModel1[需求分析] <--> VModel1x[验收测试]
VModel --> VModel2[概要设计] <--> VModel2x[系统测试]
VModel --> VModel3[详细设计] <--> VModel3x[集成测试]
VModel --> VModel4[软件编码] <--> VModel4x[单元测试]
Agile --> Agile1[核心思想] --> Agile11[以人为本、适应性]
Agile --> Agile2[4大价值观]
Agile --> Agile3[5大原则]
Agile --> Agile4[12个最佳实践]
Agile --> Agile5[典型方法]
Agile2 --> Agile21[沟通]
Agile2 --> Agile22[简单]
Agile2 --> Agile23[反馈]
Agile2 --> Agile24[勇气]
Agile3 --> Agile31[快速反馈]
Agile3 --> Agile32[简单性假设]
Agile3 --> Agile33[逐步修改]
Agile3 --> Agile34[提倡更改]
Agile3 --> Agile35[优质工作]
Agile5 --> Agile51[极限编程XP] --> Agile511[交流、朴素、反馈、勇气,见4大价值观]
Agile5 --> Agile52[水晶系列方法] --> Agile521[以人为本,每个人都独特]
Agile5 --> Agile53[并列争球法Scrum] --> Agile531[冲刺 Sprint,商业价值]
Agile5 --> Agile54[特性驱动开发方法FDD] --> Agile541[迭代,人、过程、技术]
Other --> IncrementalModel[增量模型] --> IncrementalModel1[每次增量版本都可独立发布]
Other --> FountainModel[喷泉模型] --> FountainModel1[面向对象]
Other --> RUP[RUP 统一过程模型]
Other --> Cleanroom[净室软件工程]
Other --> CBSE[基于构件的软件工程CBSE] --> CBSE1[快速开发模型,如低代码平台]
RUP --> RUP1[9个工作流]
RUP --> RUP2[4个阶段]
RUP --> RUP3[核心特点]
RUP --> RUP4[4+1视图]
RUP1 --> RUP11[业务建模]
RUP1 --> RUP12[需求]
RUP1 --> RUP13[分析与设计]
RUP1 --> RUP14[实现]
RUP1 --> RUP15[测试]
RUP1 --> RUP16[部署]
RUP1 --> RUP17[配置与变更管理]
RUP1 --> RUP18[项目管理]
RUP1 --> RUP19[环境]
RUP2 --> RUP21[初始阶段]
RUP2 --> RUP22[细化阶段]
RUP2 --> RUP23[构造阶段]
RUP2 --> RUP24[移交阶段]
RUP3 --> RUP31[用例驱动]
RUP3 --> RUP32[以体系结构为中心]
RUP3 --> RUP33[迭代与增量]
RUP4 --> RUP41[用例视图] <--> RUP41x[测试人员、分析人员]
RUP4 --> RUP42[逻辑视图] <--> RUP42x[用户]
RUP4 --> RUP43[进程视图] <--> RUP43x[系统集成人员]
RUP4 --> RUP44[实现试图] <--> RUP44x[开发人员、程序员]
RUP4 --> RUP45[部署视图] <--> RUP45x[系统工程师]
style Process fill:#f9f,stroke:#333,stroke-width:2px
软件过程模型
软件生命周期
flowchart LR
lifecycle(软件生命周期) ==> define([软件定义时期])
lifecycle ==> devel([软件开发时期])
lifecycle ==> run([软件运行维护时期])
define --> define1[可行性研究]
define --> ReqsEngineering[需求工程]
ReqsEngineering --> ReqsClassification[需求分类]
ReqsEngineering --> ReqsGathering[需求获取]
ReqsEngineering --> ReqsAnalysis[需求分析]
ReqsEngineering --> ReqsDefinition[需求定义]
ReqsEngineering --> ReqsVerification[需求验证/需求确认]
ReqsEngineering --> ReqsManage[需求管理]
ReqsClassification --> ReqsClassification1[业务需求]
ReqsClassification --> ReqsClassification2[用户需求]
ReqsClassification --> ReqsClassification3[系统需求]
ReqsGathering --> ReqsGathering1[用户访谈] <--> ReqsGathering11[结构化、非结构化]
ReqsGathering --> ReqsGathering2[问卷调查] <--> ReqsGathering21[杂乱]
ReqsGathering --> ReqsGathering3[水平采样] <--> ReqsGathering31[数理统计]
ReqsGathering --> ReqsGathering4[情节串联版] <--> ReqsGathering41[生动演示,耗时]
ReqsGathering --> ReqsGathering5[联合需求计划 JRP] <--> ReqsGathering51[开会]
ReqsGathering --> ReqsGathering6[需求记录技术]
ReqsAnalysis --> ReqsAnalysis1[目的]
ReqsAnalysis --> ReqsAnalysis2[步骤]
ReqsAnalysis --> ReqsAnalysisMethod[方法]
ReqsAnalysisMethod --> StructuredMethod[结构化方法]
ReqsAnalysisMethod --> ReqsAnalysisMethod2[面向对象分析方法]
StructuredMethod --> StructuredMethod1[特点]
StructuredMethod --> StructuredMethod2[三大模型]
StructuredMethod --> StructuredMethod3[数据流图DFD]
StructuredMethod1 --> StructuredMethod11[自顶向下]
StructuredMethod1 --> StructuredMethod12[逐步分解]
StructuredMethod1 --> StructuredMethod13[面向数据]
StructuredMethod2 --> StructuredMethod21[功能模型] <--> StructuredMethod21x[数据流图 DFD]
StructuredMethod2 --> StructuredMethod22[行为模型] <--> StructuredMethod22x[状态转换图 STD]
StructuredMethod2 --> StructuredMethod23[数据模型] <--> StructuredMethod23x[E-R 图]
StructuredMethod2 --> StructuredMethod24[数据字典 DD]
ReqsDefinition --> SRS[软件需求规格说明书 SRS]
ReqsDefinition --> ReqsDefinitionMethod[需求定义方法]
ReqsDefinitionMethod --> ReqsDefinitionMethod1[严格定义、预先定义,结构化定义]
ReqsDefinitionMethod --> ReqsDefinitionMethod2[原型方法]
ReqsVerification --> ReqsVerificationProcedure[步骤]
ReqsVerificationProcedure --> ReqsVerificationProcedure1[需求评审]
ReqsVerificationProcedure --> ReqsVerificationProcedure2[需求测试]
ReqsManage --> ReqsManage1[变更控制]
ReqsManage --> ReqsManage2[版本控制]
ReqsManage --> ReqsManage3[需求跟踪]
ReqsManage --> ReqsManage4[需求状态跟踪]
devel --> BusinessProcessDesign[业务流程设计]
devel --> devel2[系统设计]
devel --> devel3[编码]
devel --> devel4[调试]
devel --> devel5[测试]
BusinessProcessDesign --> BusinessProcessDesignDiagram[业务流程设计图]
BusinessProcessDesign --> BusinessProcessDesignTypes[业务流程设计分类]
BusinessProcessDesignDiagram --> PFD[PFD 程序流程图] --> PFD1[顺序、选择、循环结构]
BusinessProcessDesignDiagram --> IPO[IPO 输入、处理、输出] --> IPO1[典型:DFD数据流图]
BusinessProcessDesignDiagram --> N-S[N-S 图] --> N-S1[不适合复杂情况]
BusinessProcessDesignDiagram --> PAD[PAD 问题分析图] --> PAD1[结构化]
BusinessProcessDesignTypes --> BPM[BPM 业务流程管理]
BusinessProcessDesignTypes --> BPR[BPR 业务流程重组]
devel2 --> devel21[系统设计目的]
devel2 --> devel22[系统设计方法]
devel2 --> devel23[系统设计内容]
devel2 --> devel24[系统设计原则]
devel2 --> devel25[衡量模块独立性的标准]
devel2 --> devel26[人机设计三大黄金原则]
devel25 --> devel251[内聚]
devel25 --> devel252[耦合]
devel5 --> devel51[测试原则]
devel5 --> devel52[测试方法]
devel5 --> devel53[测试阶段]
run --> run1[遗留系统]
run --> run2[系统转换]
run --> run3[评价指标]
run --> run4[维护类型]
style lifecycle fill:#f9f,stroke:#333,stroke-width:2px
style define fill:#bbf,stroke:#333
style devel fill:#bbf,stroke:#333
style run fill:#bbf,stroke:#333
软件生命周期
数据流图 DFD
flowchart LR
DFD(数据流图) ==> DataFlow([数据流]) <--> DD-DataFlow[数据字典DD:数据流]
DFD ==> DataStore([数据存储]) <--> DD-DataStore[数据字典DD:数据存储]
DFD ==> Process([加工]) <--> DD-ProcessLogic[数据字典DD:加工逻辑]
DFD ==> Entity([外部实体]) <--> DD-Entity[数据字典DD:外部实体]
数据流图 DFD
数据字典 DD
flowchart LR
DD(数据字典) ==> DataElement([数据元素])
DD ==> DataStructure([数据结构])
DD ==> DataFlow([数据流]) <--> DFD-DataFlow[DFD:数据流]
DD ==> DataStore([数据存储]) <--> DFD-DataStore[DFD:数据存储]
DD ==> ProcessLogic([加工逻辑]) <--> DFD-Process[DFD:加工]
DD ==> Entity([外部实体]) <--> DFD-Entity[DFD:外部实体]
数据字典 DD
逆向工程
flowchart LR
Reverse(逆向工程) ==> Levels([四个级别])
Reverse ==> Other([其他概念])
Levels --> Levels1[实现级]
Levels --> Levels2[结构级]
Levels --> Levels3[功能级]
Levels --> Levels4[领域级]
Other --> Other1[软件复用]
Other --> Other2[重构]
Other --> Other3[设计恢复]
Other --> Other4[再工程]
style Reverse fill:#f9f,stroke:#333,stroke-width:2px
逆向工程
性能评价
flowchart LR
Perf(性能评价) ==> Indicator([性能指标])
Perf ==> Method([性能评价方法])
Perf ==> Amdahl([阿姆达尔定律])
style Perf fill:#f9f,stroke:#333,stroke-width:2px
性能评价