软件工程和他的小弟们
一个软件工程,包括很多个领域和阶段,俗称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 面型对象变成
|