浅析软件工程中的需求和管理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浅析软件工程中的需求和管理

作者:张俊强

来源:《中小企业管理与科技·上旬刊》2011年第11期

摘要:软件工程是指导计算机软件开发和维护的工程学科采用工程的概念、原理、技术、方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方面结合起来,经济地开发出高质量的软件并有效地维护它。这就是软件工程。软件工程的目标是在进行成本和控制的前提下,开发出具有可互操作性并且满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。

关键词:软件工程目标技术管理设计

软件随着其使用范围的扩大和使用规模的提高,需要从需求和管理两方面对软件的开发过程进行控制,它是一种特殊的产品,生产任何软件的主要成本是设计、实现软件时的成本,以及软件投入使用后,还会产生维护成本,在生产线上制造软件的成本非常低。用户购买某种商品后,就拥有了该商品的所有权和使用权。可是用户买来的软件却只拥有它的有限“使用权”。传统的工业产品在车间里生产,容易衡量生产过程中的消耗和进展,生产过程可见、可触摸。可是软件的开发过程在人的大脑里,很难度量其进度。

软件工程就是把看不见的思维活动变成看得见的“文档”或者其他看得见的东西,要这种过程“可视化”、“定量化”。随着软件行业的发展,陆续出现了结构化程序设计技术、计算机辅助软件工程和面向对象语言和方法等一系列成果,并应用到实践中。目前软件工程中主要使用的方法和技术可以分成技术和管理两类。下面我们就需求和管理上对软件工程进行一个探讨。

1 软件工程需求

软件工程中包含需求、设计、编码和测试四个阶段,其中需求工程是软件工程第一个也是很重要的一个阶段,首先人们必须了解需求工程和其他项目过程的关系,软件需求包括业务需求、用户需求和功能需求,也包括非功能需求。

软件工程需求理论在实践应用中有一个重点,那就是软件复用。参考目前成熟的工业产品的开发模式,以已有的成果为基础,充分利用过去开发应用系统中积累的知识和经验,将开发的重点集中于新应用的特有构成成分上,这样,软件复用可以在软件开发中避免重复劳动,通过使用软件复用技术,开发应用系统时可以充分利用已有的开发成果,消除软件生命周期中的许多重复劳动,提高软件开发的效率。同时,复用高质量的已有成果,可以避免重新开发时引入的错误,从而提高软件质量。下面就软件的需求进行分析。

1.1 确定需求研发过程:确定如何组织需求的收集、分析、细化并核实的步骤,并将它编写成文档。

1.2 编写项目视图和范围文档:项目视图和范围文档应该包括高层的产品业务目标,所有的使用实例和功能需求都必须遵从能达到的业务需求。

1.3 选择产品代表:择每类用户的产品代表为每类用户至少选择一位能真正代表他们需求的人作为那一类用户的代表并能作出决策。这对于内部信息系统的开发是最易实现的,因为此时,用户就是身边的职员。

1.4 用户群分类:产品的用户在很多方面存在着差异,比如:用户使用产品的频度、他们的应用领域和计算机系统知识等。根据这些差异,你可以把这些不同的用户分成小组。用户类不一定都指人,你可以把其它应用程序或系统接口所用的硬件组件也看成是附加用户类的成员。详细描述出它们的个性特点及任务状况,将有助于产品设计。

1.5 建立核心队伍:建立起典型用户的核心队伍把同类产品或产品的先前版本用户代表召集起来,从他们那里收集目前产品的功能需求和非功能需求。核心队伍成员通常没有决定权。

1.6 确定使用实例:让用户代表确定使用实例从用户代表处收集他们使用软件完成所需任务的描述-使用实例,讨论用户与系统间的交互方式和对话要求。因此,一个使用实例是相关的用法说明的集合,并且一个说明是使用实例的例子。为了减少这种不确定性,需要把每一个使用实例叙述成详细的功能需求。每一个使用实例可引伸出多个功能需求,这将使执行者可以执行相关的任务;并且多个使用实例可能需要相同的功能需求。

1.7 分析用户工作流程:分析用户工作流程观察用户执行业务任务的过程。画一张简单的示意图(最好用数据流图)来描绘出用户什么时候获得什么数据,并怎样使用这些数据。

1.8 程序开发联系会议:该会议通过紧密而集中的讨论得以将客户与开发人员间的合作伙伴关系付诸于实践。它是分析人员与客户代表之间一种很好的合作办法,并能由此拟出需求文档的底稿。

1.9 确定质量属性:确定质量属性和其它非功能需求在功能需求之外再考虑一下非功能的质量特点,这会使你的产品达到并超过客户的期望。

1.10 需求重用:跨项目重用需求如果客户要求的功能与已有的产品很相似,则可查看需求是否有足够的灵活性以允许重用一些已有的软件组件。

1.11 检查问题报告:通过检查当前系统的问题报告来进一步完善需求客户的问题报告及补充需求为新产品或新版本提供了大量丰富的改进及增加特性的想法,负责提供用户支持及帮助的人能为收集需求过程提供极有价值的信息。

软件系统能最有效地利用计算机的时间资源和空间资源。各种计算机软件无不将系统的开销作为衡量软件质量的一项重要技术指标。软件在不同的系统约束条件下适应性强的软件较容易推广使用。

2 软件工程的管理

目前,软件工程管理还在发展阶段,还没能引起人们的足够重视。主要原因:一是人的传统观念,工程管理不为人们所重视;二软件工程是一个新兴的学科领域,软件工程管理的问题也是刚被提出的。还有就是因为软件产品的特殊性,这样就使软件工程管理涉及到很多学科。因此,对软件工程管理,人们还缺乏经验和技术。但是历史事实证明,由管理失误造成的后果要比程序错误造成的后果更为严重。很少有软件项目的实施进程能准确地符合预定目标、进度和预算的,这也就足以说明软件工程管理的重要。

软件工程也研究管理学理论,并且越来越重视其在软件工程中的应用。软件项目管理方法摒弃了以前个人的作坊式开发方式,根据管理科学的理论,结合软件产品开发的实际情况,保证工程化系统开发方法的顺利实施。为了使软件项目能够按照预定的成本、进度、质量顺利完成,软件管理方法对成本、人员、进度、质量、风险、文档等进行分析管理和控制。进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,其开发风险也越小。软件项目管理已经是公认的软件开发企业的核心竞争力之一。

在规则已经明确、组织机构确定、有一定理论认识之后,可以通过一些硬性要求、强制执行软件工程的一些基本过程。在中小型软件企业中,很少有成本优势和严格的进度控制,影响项目的因素也比较多:需求的提出比较随便,甚至在业务需求还不明确的时候就要求程序员开始编程序,没有合理的措施拧制透彻地分析业务需求;时间进度由领导规定,而不是根据需求客观确定,使软件质量根本无法保障等。因此要通过加强处理使软件开发过程可视化,使软件开发工作协调、有效。软件开发是一个知识密集型领域,对人才的依赖很强,加强生产过程的规范性并规范管理可以加强人的执行能力。

建立基本的软件配置管理机制,在开发中和开发后都要求程序员及时备份源文件。项目主管应该要求程序员在开发全过程中使用软件来管理源文件,在全过程配置管理的基础上,整个项目组更容易完成统一编码、测试、组装产品等工作。

近年来,国内信息化发展仍存在很多问题,因此分析在信息化中扮演着重要角色的软件开发项目管理问题,越来越受到重视。为了结合国情走出一条有中国特色的、成功的信息化道路,我们需要逐步建立和完善管理模型,进一步指导具体的项目管理,为我国的信息化水平提高做出贡献。

相关文档
最新文档