软件工程和他的小弟们
一个软件工程,包括很多个领域和阶段,俗称KA(Knowledge Area)
把软件工程看作一个最大最*的领域,其方法论叫做开发方法(软件开发方法)
软件工程又包括:系统分析阶段,系统设计阶段,系统实现阶段等等
分析阶段有分析方法
设计阶段有设计方法
实现阶段有编程框架和开发技术
软件开发方法是最*,最大,最全面的方法论
其下会使用到具体的分析方法,架构方法,设计方法,设计模式,开发技术,开发框架等等
软件开发方法,贯穿整个软件工程全过程,贯穿“花开云散”
软件生命周期(SDLC,Software Development Lifecycle Model)这东西其实就是过程的一个典型缩影
方法是指的各个层次的方法,从顶层的软件开发方法比如OOD,到下一层的系统分析方法比如SA、OOA,软件设计方法SD、ABSD;
软件工程中的开发二字
花开云散中的开发
软件开发方法、软件开发模型
开发
感觉相似是因为工作中很多概念是被混淆的,时间长了,大家都误会了
比如:Development = 开发
工作中很多人一说到开发就认定是写代码叫开发
而软件工程中开发,是指整个软件过程,包括架构+设计+开发+运维
当然隐含在开发中的其实还有测试
三要素
软件工程 = 过程 + 工具 + 方法
为了方便大家理解三要素
软件工程 = 方法 + 工具 + 过程
方法:如何做
要做哪些工作,这些工作用什么方法做
结构化开发方法SD,面向对象的开发方法OOD,基于架构的软件开发方法ABSD
工具:用什么做
都有哪些工具可以使用来帮助完成工作
数据流图 DFD,UML,4+1
过程:怎么做
各个工作先后顺序,
每个工作之间怎么衔接,
每个具体工作内部分哪些步骤,
每个步骤做什么,
做到什么样算完成工作
结构化设计SD过程定义,ABSD过程定义,CMMI过程定义
注意缩写时候的D
如果是Development是开发方法
如果是Design是设计方法
开发方法(xxxx Development)是软件工程的方法论
设计方法(xxxx Design)是设计阶段的方法
ABSD
Architecture-based Software Development = 基于架构的软件开发方法
Architecture-based System Design = 基于架构的系统设计,这时候一般不缩写成ABSD,避免歧义
SA = Structured Analysis = 结构化分析
SD = Structured Design = 结构化设计
OOD = Object-oriented Development 面向对象软件开发方法
OOSD = Object-orientied System Design 面向对象的系统设计
以面向对象技术为例
OOT 面向对象技术
OOD 面向对象的开发方法
OOA 面向对象的软件分析
OOSD 面向对象的系统设计
OOP 面型对象变成