《系统分析与设计方法及实践》一1.4 软件生产活动

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

时间: 2024-08-03 15:38:57

《系统分析与设计方法及实践》一1.4 软件生产活动的相关文章

《系统分析与设计方法及实践》一2.4 软件过程模型

2.4 软件过程模型 软件过程是整个软件生命周期中一系列有序的软件生产活动的流程.为了能高效地开发一个高质量的软件产品,通常把软件生命周期中各项开发活动的流程用一个合理的框架--开发模型来规范描述,这就是软件过程模型,或者称为软件生命周期模型.所以,软件过程模型是一种软件过程的抽象表示法,"建模"是软件过程中最常使用的技术手段之一.软件过程模型是从一个特定的角度表现一个过程,一般使用直观的图形标识软件开发的过程,主要根据软件的类型.规模,特别是软件的开发方法.开发环境等多种因素确立过程

《系统分析与设计方法及实践》一1.5 小结

1.5 小结 软件工程是由于软件危机的出现而被提出来的.软件分析与设计的主旨是以工程化的思想进行软件开发,以便生产高质量和高效率的软件.软件是计算机系统中的主要组成部分,包括一系列程序.数据及其相关文档的集合.软件工程化思想的核心是把软件系统看作一个工程产品,这种产品需要经过需求分析.设计.实现.测试.管理和维护一系列过程.软件开发的基本原理包括工程化.推迟实现.逐步求精.系统分解.系统抽象.信息隐蔽的基本原理.软件开发应遵守7条基本原则:分阶段的开发原则.阶段评审原则.严格的控制原则.采用有效

《系统分析与设计方法及实践》一1.2 什么是软件分析与设计

1.2 什么是软件分析与设计 软件分析与设计是软件工程的重要组成部分,其定义目前还没有统一的标准.早期,软件工程专家B.W. Boehm将软件工程定义为:设计并构造计算机程序,以及为开发.运行和维护这些程序所必需的相关文件资料.Fritz Bauer如下定义软件工程:为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则.IEEE软件工程标准定义软件工程为:开发.运行.维护和修复软件的系统方法.尽管软件工程的具体定义不尽相同,且又有一些学者提出了更完善的定义,但都是

《系统分析与设计方法及实践》一第1章 软件分析与设计概述

软件系统分析与设计是软件工程(Software Engineering,SE)的重要组成部分,其目的是倡导以工程化的原理.原则和方法进行软件系统开发,是解决当时出现的"软件危机"的根本途径.

《系统分析与设计方法及实践》一2.5 能力成熟度模型CMM

2.5 能力成熟度模型CMM 2.5.1 什么是能力成熟度模型 CMM(Capability Maturity Model)是指"能力成熟度模型",是对软件组织在定义.实施.度量.控制和改善其软件过程的实践中各个发展阶段的描述.CMM是国际公认的对软件公司进行成熟度等级认证的重要标准.CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控与研究,以使其更加科学化.标准化,使企业能够更好地实现商业目标. CMM是由美国卡内基-梅隆大学的软件工程研究所(SEI)开

《系统分析与设计方法及实践》一习题

习题 1.什么是软件分析与设计?软件和软件生产有哪些固有的特性?2.请进一步说明伦敦救护服务系统存在的问题,如何改进?3.软件危机的解决有哪些途径?为什么说软件工程是一门综合学科?4.软件开发的两大范型分别是什么?它们的根本区别是什么?5.软件开发的基本原则有哪些?6.软件开发有哪些基本原理?7.请举例说明软件危机的存在现象.8.分解与抽象的关系是什么?9.软件生产有哪些活动?它们之间的关系是什么?

《系统分析与设计方法及实践》一2.2 敏捷软件开发

2.2 敏捷软件开发 在传统的软件开发方法中,工作人员努力构建客户想要的产品.他们花费大量的时间努力从客户那里获取需求,针对需求进行分析和建模,并且归纳成规格说明书.然后,评审说明书,与客户开会讨论,最后签字.表面上看他们开发的产品是符合客户的要求的,但通常事与愿违.在项目快要结束的时候,需求和范围.产品的适用性成为争论的焦点. 敏捷软件开发方法告诉我们开发项目是一个学习的体验.没有谁能完全理解所有需求之后才开始项目,即使是客户也一样.客户一开始有一些主意,但是他们也会随着项目的进展进一步了解他

《系统分析与设计方法及实践》一2.6 小结

2.6 小结 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤.软件过程框架定义了若干个小的框架活动,为完整的软件开发过程建立了基础.软件过程框架的通用过程框架活动包括沟通.计划.建模.构建和部署. 软件工程的敏捷理念强调自我组织团队.团队交流与合作.敏捷对待变更.敏捷方法是一组敏捷实践技术的总称.随着敏捷开发思想和极限编程方法在21世纪初前几年的快速普及,结对编程也迅速被大家熟知和尝试.结对编程是极限编程的12个主要实践之一,它吸收合作式编程的关键思想,

《系统分析与设计方法及实践》一2.3 结对编程方法

2.3 结对编程方法 极限编程的实践中有一个非常重要的原则就是结对编程,这里所谓的结对编程并非是一个人在编程,另一个在看.另外一个人也同样起着非常重要的作用,他需要帮助编码的人找到低级失误,防止其编码出现方向性的错误,特别是在出现一个正在编码的人不擅长解决的问题的时候,他会直接替换编码的人来进行编程.这样做的好处也许只有在实践了之后才能够体会到,它不仅可以避免一些错误的发生,而且可以通过直接的讨论来更快地解决一些容易产生歧义的问题.在交流的过程中,大家的水平也会有很快的提高.结对编程的过程也是一