天天看点

软件工程和他的小弟们

软件工程和他的小弟们

一个软件工程,包括很多个领域和阶段,俗称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 = 结构化设计

以面向对象技术为例