《软件工程方法与实践》—— 2.5 软件工程活动-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《软件工程方法与实践》—— 2.5 软件工程活动

简介: 在软件工程的概念被提出来之前,开发人员错误地认为,软件就是开发活动,或者极端地认为其就是编码,至于分析和设计等都是次要的。随着软件规模的不断增大,软件开发活动中暴露出很多问题。软件工程是为克服这些问题而被提出,并在实践中不断地探索它的原理、技术和方法。

本节书摘来自华章出版社《软件工程方法与实践》一 书中的第2章,第2.5节,作者窦万峰,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5 软件工程活动

在软件工程的概念被提出来之前,开发人员错误地认为,软件就是开发活动,或者极端地认为其就是编码,至于分析和设计等都是次要的。随着软件规模的不断增大,软件开发活动中暴露出很多问题。软件工程是为克服这些问题而被提出,并在实践中不断地探索它的原理、技术和方法。软件工程的工程化思想让开发人员看到,软件工程活动包括沟通活动、计划活动、建模活动、实现活动、部署活动、维护活动、管理活动、过程改进活动。

沟通活动

沟通活动是一切项目都需要的活动。当需要开发一个项目时,一方面,开发团队必然需要与客户进行交流和沟通,获得项目的需求;另一方面,开发团队内部也需要交流,以便对项目有一个统一的理解,从而开发出满足用户需####要的产品。
沟通活动包括确定合适的客户、非正式沟通和正式沟通。确定合适的用户是指发现真正的使用开发产品的用户,只有使用该产品的用户才能说出他们真正的需要。沟通是一门艺术,需要经验和技巧。非正式沟通是与用户的第一次接触,还没有建立融洽的关系,难以进行长时间和深入交流,这时由于对问题的认识还比较肤浅,或者由于双方的领域不同,对问题的理解都存在一定的隔阂和难度,非正式沟通的目的是建立良好的关系和对问题有一个初步的了解。这种良好的关系增加双方的友谊,增强信任感,为后面的正式沟通铺平道路。非正式沟通应在一种轻松愉快的氛围当中进行,双方可以从感兴趣的问题入手,进而转到主题上来,理解项目所涉及的领域和初步要求等。正式沟通时,根据非正式沟通获得的基本需求和问题,双方确定讨论的主题或问题,开展深入的分析和讨论。一般,有一个主持人按照事先确定的议程,针对问题逐步地提问和解答,保证沟通高效进行,并形成初步的文档。正式沟通持续时间较长或分几次进行。

计划活动

计划活动包括项目计划和项目跟踪管理活动。
项目计划包括项目可用的资源、工作分解以及完成工作的进度安排。在项目执行期间,项目计划一般应该经常地修正,有些项目或部分可能会频繁地改变。通常要密切跟踪项目变动的部分,并及时反馈和调整。
项目计划一般随着项目的进展不断细化,这是由于项目初期各种计划都是比较粗略的,无法做到较为详细的计划。随着项目的进展,一些要素和过程逐渐明确,因而项目的计划需要详细设计。
由于项目实际运转与计划总是有偏差的,因此项目跟踪管理就是监控项目运转过程出现的误差,及时调整项目计划,使得项目沿着正确的方向进行。

建模活动

建模是对事物的抽象,抓住问题的本质,并进行必要的描述。由于软件产品是逻辑的,是大脑的逻辑想象,是看不见、摸不着的复杂事物,因此对软件产品的建模是必不可少的。
建模活动是对软件本质的抽象,并建立完整的模型描述文档。模型是问题的某个方面的抽象。例如,需求建模就是抽象出软件的根本需求,包括数据需求、功能需求和环境需求等,可以通过实体关系模型、数据流模型和状态模型来抽象和描述。建模在软件工程活动中是普遍的现象。软件工程方法学提供许多的软件建模活动和相关的模型。我们在后续的章节会学到许多的模型。
软件建模主要包括软件过程建模和软件本身建模两大类。软件过程建模指对软件开发的过程进行建模,目的是对复杂的开发过程进行抽象,理解不同开发过程的本质特征,从而指导开发团队根据软件项目选择合适的开发过程。软件自身模型是对软件本身进行建模,从不同的方面抽象出软件的本质问题,进而给出合理的解决方案。
建模活动包括构建模型和模型的描述。构建模型指根据软件的复杂程度从不同的方面建立软件的模型,目的是理解系统。构建模型可以采用分解与抽象的方法进行。模型的描述是对构建的模型进行统一的表示,以便在开发人员之间进行交流和约定。有许多的工具支持开发人员进行高效建模。

实现活动

实现活动就是软件的构造活动,也就是我们常说的编码。实现活动根据软件的设计编写软件的代码,经过相应的测试后交付运行。
实现活动一般包括代码编写、测试与调试、重构和运行等。代码编写就是根据设计文档和代码规范将设计转换成代码的过程。开发人员要对程序语言和环境有一定的经验,理解语言的特性,编写简洁明了的代码。测试与调试指对代码进行单元测试和集成测试,并对存在的问题进行修改和回归测试等。重构活动是对能够运行的代码进行优化,使得代码的结构层次清晰,便于理解和修改,并在清晰的前提下提高代码的效率,支持代码的重用。

部署活动

一般,复杂的软件需要部署在不同的硬件环境中。部署活动就是建立系统运行的环境,确定硬件结点之间的连接关系、结点的配置,以及分配代码组件在不同的结点上。例如,一个基于Web的图书馆系统,需要部署Web服务器、应用服务器和数据库服务器的配置,建立它们之间的连接协议和带宽要求,然后部署图书馆系统的代码到不同的服务器上。

维护活动

软件开发完成交付用户使用后,就进入软件的运行和维护阶段。软件维护是指软件系统交付使用以后,为了改正软件运行错误,或者因满足新的需求而加入新功能的修改软件的过程。软件维护就是在软件交付运行后,保证软件正常运行、适应新变化等需要而进行的一系列修改活动。软件维护的主要工作是在软件运行和维护阶段对软件产品进行必要的调整和修改。
软件维护是持续时间最长、工作量最大的一项不可避免的过程。软件维护的基本目标和任务是改正错误、增加功能、提高质量、优化软件、延长软件寿命,以及提高软件产品价值。

管理活动

当今的软件开发活动是一个非常复杂的过程。项目涉及几十、几百甚至几千的人员,项目周期少则几个月,多则几年,项目费用越来越高,因此,这样的项目就需要很好地管理活动。
著名的项目管理专家James P.lewis指出,项目是一次性的、多任务的工作,具有明确的开始日期和结束日期、特定的工作范围、预算和要达到的特定性能水平。因而,项目涉及预期的目标、费用、进度和工作范围4个要素。
软件项目管理活动就是如何管理好项目的范围、进度、成本等。为此需要制订一个好的项目计划,然后跟踪与控制好这个计划。实际上,要做到项目计划切合实际是一个非常高的要求,需要对项目进行详细的需求分析,制订合理的计划,安排好进度、资源调配、经费使用等,并不断地跟踪和调整。为了降低风险,要进行必要的风险分析与制订风险管理计划等。

过程改进活动

要完成一个软件项目,项目经理需要完全了解项目的过程,确定项目需要哪几个步骤,每个步骤要完成什么事情,需要哪些资源和技术,等等。如果将项目的关注点放在项目的开发过程,无论哪个团队来做,都采用统一的开发过程,产品的质量是一样的。团队还可以通过不断改进过程来提高产品的质量。这个过程体现了团队的整体能力,而不依赖于个人能力。
软件过程不只是软件开发的活动序列,而是软件开发的最佳实践,包括流程、技术、产品、关系、角色和工具等。在软件过程管理中,首先要定义过程,然后合理地描述过程,进而建立企业过程库,并成为企业可以重用的资源。同时,也要不断地改善和规范过程,帮助企业提高生产效率。
软件过程改进是极其复杂的。必须不断总结过去做过的项目的过程经验,形成有形的过程描述,并不断地完善和在以后的项目中重复利用。
过程管理活动的主要内容是过程定义和过程改进。过程定义是对最佳实践加以总结,形成一套稳定的、可重复的软件过程。过程改进是根据实践中对过程的使用存在的偏差或不切实际的地方进行优化的活动。通过实施过程管理活动,软件开发团队可以逐步提高其软件过程能力,从根本上提高软件生产效率。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: