1.4 软件生产活动在软件工程概念被提出来之前,开发人员错误地认为,软件就是编码,至于分析和设计等都是次要的。随着软件规模的不断增大,软件生产过程中暴露出很多问题。软件工程是为克服这些问题(软件危机)而提出的一种概念,并在实践中不断地探索它的原理、技术和方法。软件开发的工程化思想让开发人员看到,软件生产活动不仅是开发活动,还有重要的维护活动、管理活动,进而发展了过程改进活动。1.开发活动开发活动是软件人员生产软件的活动。开发活动是软件工程的核心过程活动,软件工程提供了一整套工程化的方法来指导软件人员的工作。开发活动有一系列的阶段,如需求、设计、编码、测试、提交、维护等。这些阶段需要采用一定的控制流程连接起来,并需要规范的操作方式,这样就形成了软件生命周期模型。软件开发活动是随着开发技术的演化而随之改进的,例如从早期的瀑布模型、螺旋模型,到当今的敏捷开发方法和统一过程。它们展示出了在不同的时代,软件产业对于开发活动的不同认识以及对于不同类型项目的理解方法。2.维护活动软件开发完成交付用户使用后,就进入软件的运行和维护阶段。软件维护就是在软件交付运行后,保证软件正常运行、适应新变化等需要而进行的一系列修改活动。软件维护的主要工作就是在软件运行和维护阶段对软件产品进行必要的调整和修改。软件维护是软件生命周期的最后一个阶段,也是持续时间最长、工作量最大的一个不可避免的过程。软件维护的基本目标和任务是改正错误、增加功能、提高质量、优化软件、延长软件寿命以及提高软件产品价值。3.管理活动当今的软件开发活动是一个非常复杂的过程。项目涉及几十、几百甚至几千的人员,项目周期少则几个月,多则几年,项目费用越来越高,因此,这样的项目就需要很好的管理活动。著名的项目管理专家James P. Lewis指出,项目是一次性的、多任务的工作,具有明确的开始和结束日期、特定的工作范围、预算和要达到的特定性能水平。因而,项目涉及预期的目标、费用、进度和工作范围4个要素。软件项目管理活动就是如何管理好项目的范围、进度、成本等。为此需要制定一个好的项目计划,然后跟踪与控制好这个计划。实际上,要做到项目计划切合实际是一个非常高的要求,需要对项目进行详细的需求分析,制定合理的计划,安排好进度、资源调配、经费使用等,并不断地跟踪和调整。为了降低风险,要进行必要的风险分析与制定风险管理计划等。4.过程改进活动要完成一个软件项目,项目经理需要完全了解项目的过程,确定项目需要经历哪些步骤,每个步骤都完成什么事,需要哪些资源和技术等。对于同一个项目,不同的开发团队可能会采取不同的开发过程,结果导致开发的产品质量是不同的,质量的好坏取决于个人的素质和能力。如果将项目的关注点放在项目的开发过程上,无论哪个团队来做,都会采用统一的开发过程,产品的质量保持一样。团队可以通过不断提高过程的质量来提高产品的质量。这个过程体现了团队的整体能力,它不依赖于个人能力。软件过程不只是软件开发的活动序列,而是软件开发的最佳实践,包括流程、技术、产品、关系、角色和工具等。在软件过程管理中,首先要定义过程,然后合理地描述过程,进而建立企业过程库,并成为企业可以重用的资源。对于过程,要不断地进行改进,以不断地改善和规范过程,帮助企业提高生产力。软件过程改进是极其复杂的。只有不断总结过去做过的项目的过程经验,才能形成有形的过程描述(称为最佳实践),并不断地完善和在以后的项目中重复利用。过程管理的主要内容就是过程定义和过程改进。过程定义是对最佳实践加以总结,以形成一套稳定的、可重复的软件过程。过程改进是针对实践中发现的软件过程中存在的问题或缺陷,在实践中寻找和找到解决问题和弥补缺陷的办法;可以说,过程改进就是在不断发现问题和解决问题的过程中不断向前发展。通过实施过程管理,软件开发组织可以逐步提高其软件过程能力,从根本上提高软件生产能力。
相关资源:软件工程方法与实践(ppt)