一,软件工程概述:

软件工程是把计算机科学,项目管理,工程学,应用域等技术和实践应用于软件设计,创建和维护的学科。  是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。软件工程涉及到程序设计语言,数据库,软件开发工具,标准,系统平台,软件设计模式设计模式,项目管理等方面,软件工程力图对软件项目的各个方面作出指导,从软件的可行性分析直到软件完成以后的维护工作,对于这个过程中从时间纵向及各个关键方向进行定义及方法指导,

二, 软件工程方法学:

方法学从规模与范围上可区别为重量级的方法轻量级的方法:

著名的重量级开发方法包括ISO9000CMMRUP,其特点是产生大量的正式文档,涉及工程中更多的问题领域。

轻量级的开发过过程没有对大量正式文档的要求,侧重于开发过程的具体定义与指导。著名的轻量级开发方法包括极限编程(XP)和敏捷流程(Agile Processes)。

三, 软件工程中的软件过程:

很多人会容易弄混淆软件工程与软件过程,软件过程的定义是软件工程中的一部分。

软件开发过程是随着开发技术的演化而随之改进的。从早期的瀑布式(Waterfall)的开发模型到后来出现的螺旋式的迭代(Spiral)开发,以致最近开始兴起的敏捷开发方法(Agile),他们展示出了在不同的时代软件产业对于开发过程的不同的认识,以及对于不同类型项目的理解方法。

注意区分软件开发过程和软件过程改进之间的重要区别。诸如像ISO 9000, CMM, CMMI这样的名词阐述的是一些软件过程改进框架,他们提供了一系列的标准和策略来指导软件组织如何提升软件开发过程的质量、软件组织的能力,而不是给出具体的开发过程的定义。

四, 总结:

很多人认为这些方法学中是可以优选的,但我认为这些方法学侧重点不同,范围不同,比如CMM主要指出软件过程中的关键问题领域,指出具体领域应得到如何的提高什么的标准来衡量。如何逐步改进当前组过程,如何提高组织能力。,RUP测重的是软件过程一些方法论,XP也是采用特定的方法手段更具体地对软件过程进行进定义,对于我们来说

一个具体的组织及具体的项目,我们可以灵活地对于项目过程中的环节及关键问题采用适当具体的方法与形式。