软件过程
虽然软件开发的过程本身可能多种多样,这取决于你手上到底是什么样的项目,取决于你的团队你的客户,但是有一些步骤是大家普遍经历的。
软件过程有四个:
- 软件规格说明:定义软件的功能以及运行的约束。
- 软件开发:必须开发出符合规格说明的软件。
- 软件确认:必须确认软件是客户想要的。
- 软件演化:必须通过不断演化满足不断变化的客户需求。
关于过程
一个用来产生某种输出有关的活动、约束和资源的步骤序列,即一组有序的任务。软件过程是为了建造高质量的软件需要完成的任务的框架,一个过程通常涉及一组工具和技术。
关于软件工程和软件过程
一个软件过程包括软件的计划、需求分析、软件设计、程序编码、软件测试、运行和维护的过程(强调活动)。但软件工程还包括在过程中应用的技术——技术方法和自动化工具。更重要的一点是,软件工程强调工程性,即有创造力、有思想、有技术和知识,在成熟的软件过程框架中进行(总的来说软件工程的内涵等更加丰富)。
软件过程模型
软件过程模型也被称为软件开发生命周期(SDLC,System Development Life Cycle)或者软件工程范型(Process Paradigms),是软件过程的简化表示。
每一个过程模型都是从一个特定的侧面表现软件过程,只提供过程的部分信息。过程模型是软件过程的高层和抽象表述,能用于解释不同的软件开发方法,可以视作一种过程框架。
从体系结构的视角常用的软件过程模型分为以下几种,但是在复杂的大型项目里面有可能不止使用一种软件过程模型而是多种软件过程模型结合使用。
瀑布模型
瀑布模型是最早的工程模型之一,算是一种线性顺序模型,也算是传统生命周期的一个代表。
计划驱动模型,可以看作是一些界限分明的独立过程阶段。(瀑布模型是计划驱动的软件的一个例子,至少应该在软件开发开始之前对所有的过程活动进行计划和进度安排。这里需要注意瀑布模型算是计划驱动,但是计划驱动不能算瀑布模型。)
增量式开发
该方法使得规格说明、开发和确认活动交错进行。每个版本在前一版本基础上增加一些功能。
集成和配置
该方法依赖于已存在的可复用的组件。系统开发过程着重于集成这些组件到新系统中,而非从头开发。
软件工程的多样性
常见的软件系统有:
- 独立应用
- 基于事物的交互式应用
- 嵌入式控制系统
- 批处理系统
- 娱乐系统
- 建模和仿真系统
- 数据采集系统
- 集成系统
互联网软件工程
Web 对软件工程产生了深远的影响:
- 软件复用已经成为了构建基于 Web 的系统的主流方法
- 基于 Web 的系统总是增量开发和交付的
- 软件可以使用面向服务的软件工程来实现,其中软件构件是独立的 Web 服务
- AJAX 和 HTML5 等开发技术支持富客户端应用