文档库 最新最全的文档下载
当前位置:文档库 › 软件开发过程详解

软件开发过程详解

软件开发过程详解
软件开发过程详解

软件开发过程详解

软件开发过程即软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。

生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件开发过程覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。

1.需求分析

1.1 需求分析的特点和任务

需求分析是软件开发的第一步。获取需求的一个必不可少的结果是对项目中描述的客户需求的普遍理解。一旦理解了需求,分析者、开发者和客户就能探索出描述这些需求的多种解决方案。参与需求获取者只有在他们理解了问题之后才能开始设计系统,否则,对需求定义的任何改进,设计上都必须大量的返工。把需求获取集中在用户任务上—而不是集中在用户接口上—有助于防止开发组由于草率处理设计问题而造成的失误。有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。

需求获取、分析、编写需求规格说明和验证并不遵循线性的顺序,这些活动是相互隔开、增量和反复的。当你和客户合作时,你就将会问一些问题,并且取得他们所提供的信息(需求获取)。同时,你将处理这些信息以理解它们,并把它们分成不同的类别,还要把客户需求同可能的软件需求相联系(分析)。然后,你可以使客户信息结构化,并编写成文档和示意图(说明)。下一步,就可以让客户代表评审文档并纠正存在的错误(验证)。这四个过程贯穿着需求分析的整个阶段。需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流的方面。需求获取只有通过有效的客户—开发者的合作才能成功。分析者必须建立一个对问题进行彻底探讨的环境,而这些问题与产品有关。为了方便清晰地进行交流,就要列出重要的小组,而不是假想所有的参与者都持有相同的看法。对需求问题的全面考察需要一种技术,利用这种技术不但考虑了问题的功能需求方面,还可讨论项目的非功能需求。确定用户已经理解:对于某些功能的讨论并不意味着即将在产品中实现它。对于想到的需求必须集中处理并设定优先级,以避免一个不能带来任何益处的无限大的项目。

1.2.需求分析的一般方法

跟班作业。通过亲身参加业务工作来了解业务活动的情况。这种方法可以比较准确地理解用户的需求,但比较耗费时间。

开调查会。通过与用户座谈来了解业务活动情况及用户需求。座谈时,参加者之间可以相互启发。需求获取讨论会中如果参与者过多,就会减慢进度。人数大致控制在5到7人是最好的。这些人包括客户、系统设计者、开发者和可视化设计者等主要工程角色。相反地,从极少的代表那里收集信息或者只听到呼声最高、最有舆论影响的用户的声音,也会造成问题。这将导致忽视特定用户类的重要的需求,或者其需求不能代表绝大多数用户的需要。最好的权衡在于选择一些授权为他们的用户类发言的产品代表者,他们也被同组用户类的其它代表所支持。

设计调查表请用户填写。如果调查表设计得合理,这种方法是很有效,也很易于为用户接受的。

查阅记录。即查阅与原系统有关的数据记录,包括原始单据、账簿、报表等。通过调查了解了用户需求后,还需要进一步分析和表达用户的需求。分析和表达用户需求的方法主要包括自顶向下和自底向上两类方法。

2. 概要设计

2.1概要设计概述

概要设计重点在于将模块分解为对象并阐明对象之间的关系,引用架构设计说明书中的模块图,并阐述对于模块进行设计的大致思路。主要工作是根据该模块的职责对模块进行概要设计(分解模块为对象、描述对象的职责以及声明对象之间的接口),绘制模块的对象图、对象间的依赖图以及模块主要功能的序列图,分别加以描述并相应的描述模块异常的处理方法。如果需要并描述数据视图。

2.2概要设计的目标

正如同软件本身有其要达到的目标一样,架构设计要达到的目标是什么呢?一般而言,软件架构设计要达到如下的目标:

(1)可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。

(2)安全行(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。

(3)可扩展性(SCAlable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。

(4)可定制化(CuSTomizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。

3. 详细设计

详细设计重点在于对每个模块进行实现,将模块的对象分解为属性和方法,

并阐述如何实现。主要工作视根据模块概要设计详细描述对于模块内对象的实现,包括对象的职责、属性、方法、对象内功能的流程图、对象关联的类、对象的异常。(需要绘制的主要为类图)

详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。

在软件详细设计阶段,将生成详细设计说明书,为每个模块确定采用的算法,确定每个模块使用的数据结构,确定每个模块的接口细节。在软件详细设计结束时,软件详细设计说明书通过复审的形成形成正式文档,作为下一个阶段的工作依据。

详细设计的主要任务是:为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;确定每一模块使用的数据结构;确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节;为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。

4. 编码

软件编码是将上一阶段的详细设计得到的处理过程的描述转换为基于某种计算机语言的程序,即源程序代码。编码需注意根据项目的应用领域选择适当的编程语言、编程的软硬件环境以及编码的程序设计风格等事项。

在计划阶段,极少考虑程序语言的技术特性。但在选定资源时,要规划将要使用的支撑工具,就要确定一个具体的编译器或者确定一个程序设计环境。如果软件开发组的成员对所要使用的语言不熟悉,那么在成本及进度估算时必须把学习的工作量估算在内。

一旦确定了软件需求,待选用的程序语言的技术特性就显得非常重要了。如果需要复杂的数据结构,就要仔细衡量有哪些语言能提供这些复杂的数据结构。如果首要的是高性能及实时处理的能力,就可选用适合于实时应用的语言或效率高的语言。如果该应用有许多输出报告或繁杂的文件处理,最好是根据软件的要求,选定一种适合于该项工作的语言。

软件的设计质量与程序设计语言的技术性能无关(面向对象设计例外)。但在实现软件设计转化为程序代码时,转化的质量往往受语言性能的影响。因而也会影响到设计方法。

语言的技术性能对测试和维护的影响是多种多样的。例如,直接提供结构化构造的语言有利于减少循环带来的复杂性(即McCabe复杂性),使程序易读、易测试、易维护。另一方面,语言的某些技术特性却会妨碍测试。例如,在面向对象的语言程序中,由于实行了数据封装,使得监控这些数据的执行状态变得比较困难;由于建立了对象类的继承结构,使得高内聚、低耦合的要求受到破坏,

增加了测试的困难。此外,只要语言程序的可读性强,而且可以减少程序的复杂性,这样的程序设计语言对于软件的维护就是有利的。

5. 测试

不论是对软件的模块还是整个系统,总有共同的内容要测试,如正确性测试,容错性测试,性能与效率测试,易用性测试,文档测试等。

5.1软件测试的内容

不论是对软件的模块还是整个系统,总有共同的内容要测试,如正确性测试,容错性测试,性能与效率测试,易用性测试,文档测试等。

5.1.1 正确性测试

正确性测试又称功能测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要。基本的方法是构造一些合理输入,检查是否得到期望的输出。这是一种枚举方法。倘若枚举空间是无限的,那可惨了,还不如回家种土豆有盼头。测试人员一定要设法减少枚举的次数,否则没好日子过。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试一次即可。

5.1.2 性能与效率测试

性能与效率测试主要是测试软件的运行速度和对资源的利用率。有时人们关心测试的“绝对值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”,如某个软件比另一个软件快多少倍。在获取测试的“绝对值”时,我们要充分考虑并记录运行环境对测试的影响。

5.1.3易用性测试

易用性测试没有一个量化的指标,主观性较强。调查表明,当用户不理解软件中的某个特性时,大多数人首先会向同事、朋友请教。要是再不起作用,就向产品支持部门打电话。只有30%的用户会查阅用户手册。

5.2 软件测试的常用方法

从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。

5.2.1. 黑盒测试

黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。

5.2.2. 白盒测试

白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部

的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

5.3 软件测试的常用工具

目前用于测试的工具已经比较多了,测试工具的应用可以提高测试的质量、测试的效率、减少测试过程中的重复劳动、实现测试自动化,这些测试工具一般可分为白盒测试工具、黑盒测试工具、性能测试工具,另外还有用于测试管理的工具,本文对常用的测试工具作一个分析比较。

5.3.1 白盒测试工具

(1) Jtest

是一个代码分析和动态类、组件测试工具,是一个集成的、易于使用和自动化的Java单元测试工具。它增强代码的稳定性,防止软件错误。

(2) Jcontract

Jcontract在系统级验证类/部件是否正确工作并被正确使用。Jcontract 是个独立工具,在功能上是Jtest 的补充。可以用Jcontract插装按DbC注解的Java 代码。当您将类/部件组装成系统时,Jcontract 在运行时监视并报告错用和功能性问题。Jcontract 帮助每个开发人员有效地考核类/部件的系统级行为。

5.3.2 黑盒测试工具

(1) WinRunner

Mercury Interactive 公司的WinRunner 是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。企业级应用可能包括Web 应用系统,ERP 系统,CRM 系统等等。

(2) SilkTest SilkTest International

Segue公司的标准的、面向多语种企业级应用的功能和回归测试工具。让用户能跨语种、跨平台和跨Web浏览器,高效率地进行各种类型的应用可靠性测试。

6. 维护

维护是旨在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。

软件维护是一项长期而繁琐的任务,长时间的跨度可能会牵扯到文档、代码更新,人员更换等。所以有关软件的文档一定要写好、保存好。另外开发团队要有自己的文档代码规范标准等,也是做好软件维护的前提条件。

一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。那么它的维护阶段也是运行的这五年至十年期间。在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。

在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。

结论

软件开发过程覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。

软件开发过程详解

软件开发过程详解 软件开发过程即软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。 生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件开发过程覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。 1.需求分析 1.1 需求分析的特点和任务 需求分析是软件开发的第一步。获取需求的一个必不可少的结果是对项目中描述的客户需求的普遍理解。一旦理解了需求,分析者、开发者和客户就能探索出描述这些需求的多种解决方案。参与需求获取者只有在他们理解了问题之后才能开始设计系统,否则,对需求定义的任何改进,设计上都必须大量的返工。把需求获取集中在用户任务上—而不是集中在用户接口上—有助于防止开发组由于草率处理设计问题而造成的失误。有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。 需求获取、分析、编写需求规格说明和验证并不遵循线性的顺序,这些活动是相互隔开、增量和反复的。当你和客户合作时,你就将会问一些问题,并且取得他们所提供的信息(需求获取)。同时,你将处理这些信息以理解它们,并把它们分成不同的类别,还要把客户需求同可能的软件需求相联系(分析)。然后,你可以使客户信息结构化,并编写成文档和示意图(说明)。下一步,就可以让客户代表评审文档并纠正存在的错误(验证)。这四个过程贯穿着需求分析的整个阶段。需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流的方面。需求获取只有通过有效的客户—开发者的合作才能成功。分析者必须建立一个对问题进行彻底探讨的环境,而这些问题与产品有关。为了方便清晰地进行交流,就要列出重要的小组,而不是假想所有的参与者都持有相同的看法。对需求问题的全面考察需要一种技术,利用这种技术不但考虑了问题的功能需求方面,还可讨论项目的非功能需求。确定用户已经理解:对于某些功能的讨论并不意味着即将在产品中实现它。对于想到的需求必须集中处理并设定优先级,以避免一个不能带来任何益处的无限大的项目。 1.2.需求分析的一般方法

一个完整的软件开发流程

一个完整的软件开发流程 一、开发流程图 二、过程产物及要求 本表主要列出开发阶段需要输出的过程产物,包括产物名称、成果描述、负责人及备注,即谁、在什么时间、应该提供什么内容、提供内容的基本方向和形式是什么。 三、过程说明 (一)项目启动 1、产品经理和项目干系人确定项目方向,产品型项目的干系人包括公司领导、产品总监、技术总监等,项目的话则包括客户方领导、主要执行人等。

2、公司领导确认项目组团队组成,包括产品经理、研发项目经理、研发工程师、测试团队等。 3、明确项目管理制度,每个阶段的成果产物需要进行相应的评审,评审有相应的《会议纪要》;从项目启动起,研发项目经理每周提供《项目研发周报》;测试阶段,测试工程师每周提供《项目测试周报》。 4、产品经理进行需求调研,输出《需求调研》文档。需求调研的方式主要有背景资料调查和访谈。 5、产品经理完成《业务梳理》。首先,明确每个项目的目标;其次,梳理项目涉及的角色;再来,每个角色要进行的事项;最后,再梳理整个系统分哪些端口,要有哪些业务模块,每个模块再包含哪些功能。 (二)需求阶段 1、进入可视化产物的输出阶段,产品经理提供最简单也最接近成品的《产品原型》,线框图形式即可。在这个过程中还可能产生的包括业务流程图和页面跳转流程图。业务流程图侧重在不同节点不同角色所进行的操作,页面跳转流程图主要指不同界面间的跳转关系。项目管理者联盟 2、产品经理面向整个团队,进行需求的讲解。 3、研发项目经理根据需求及项目要求,明确《项目里程碑》。根据项目里程表,完成《产品开发计划》,明确详细阶段的时间点,最后根据开发计划,进行《项目任务分解》,完成项目的分工。 4、研发工程师按照各自的分工,进入概要需求阶段。《概要需求》旨在让研发工程师初步理解业务,评估技术可行性。 (三)设计阶段 1、UI设计师根据产品的原型,输出《界面效果图》,并提供界面的标注,最后根据主要的界面,提供一套《UI设计规范》。UI设计规范主要是明确常用界面形式尺寸等,方便研发快速开发。UI设计常涵盖交互的内容。 2、研发工程师在界面效果图,输出《需求规格》,需求规格应包含最终要实现的内容的一切要素。 3、研发工程师完成《概要设计》、《通讯协议》及《表结构设计》,及完成正式编码前的一系列研发设计工作。 (四)开发阶段项目经理博客 1、研发工程师正式进入编码阶段,这个过程虽然大部分时间用来写代码,但是可能还需要进行技术预研、进行需求确认。

软件开发过程管理浅谈

浅谈软件开发管理体会 杨利梅

从毕业至今,大小的项目做了一些,有不少成功的喜悦,也有很多失败的教训。今年由于工作需要,我以软件项目负责人的身份参加了接入网统一网管系统开发的整个过程。从中学到了不少知识,有许多体会,想将自己的感受写出来,与大家共勉。 软件项目管理是一个庞大而复杂的系统工程,当前业界对于软件开发流程有不少规范和定义,如CMM和ISO9000。在该管理体系的管理下是可以开发出高质量的软件产品。但是由于该体系较适合于大型而且复杂项目的团队开发,真正实施尚需要时间和过程。而我们当前执行的项目,一般只有10个人左右,要实施软件工程难度更大。我认为:虽然项目大小不一,但管理方法是相通的,要做好软件开发工作,就必须加强有效管理。 大家知道,“软件危机”起源于一些大型项目的不断延迟甚至失败。与大项目相比,小项目具有以下特点: ?项目功能相对较少; ?开发人员较少; ?开发周期较短。 小项目看起来比较简单,比较容易成功,人们往往容易忽视小项目的管理,其实这是一种误解。 据我了解,小项目开发中容易出现以下问题:: 1、开发之前没有认真地进行项目可行性和工作量的估计。 往往由于项目较小,便很草率地制定一个开发日程表,没有认真地估计项目难度,结果实际完成时间与估计完成时间往往有较大差距。 2、没有真正的设计过程。 开发人员少,不同人员的程序之间交互、接口相对少一些。开发周期短往往是几个人从头到尾负责一个项目,几个人碰一下头,讨论一下最基本的数据结构、函数接口便分头去做自己的工作了,没有一份较正式的文档来规范各自职责和项目细节。 这种做法潜在的危险之一是有人可能会对所讨论的接口、结构理解有偏差,可能会造成以后的返工。 另一个潜在的危险是由于讨论时忽略了某些情况,等大家都按时完成分工任务后,才发现各个模块组合起来却无法形成一个完整的系统。其根源在于没有一个负责协调的人员不断监控整个开发过程。 第三个潜在的危险是一旦有人中途退出开发队伍,其他人加入时,难以理解以前别人做好的代码,又要从头做起。另外,没有文档的程序,日后维护和版本升级都比较困难。 3、不经过单元测试而直接进入系统测试。 造成这一现象的原因是每个模块相对比较简单,但是为了测试一个模块需要建立一些测试环境。例如,为了测试一个函数是否正确,应该用一些测试数据去调用该函数,需要编写一些测试数据。但很多开发人员嫌麻烦,觉得反正其他模块也很快出来了,直接用真正的数据来运行几次就行了。 针对以上问题,我认为在开发过程中必须处理好四个关键问题,严格把关,可以大大提高软件的质量。 这四个关键问题为:人员、规范、测试、时间控制。 一、合理配置人员 首先软件开发是一项长期艰苦的工作,所以一个团结、协作的团体才能在规定的时间内完成一个质量上乘的软件项目。团队中的每个人必须积极融入到整个集体中,不能互相推诿,更不能互相埋怨和指责,正确的态度是大家在充分信任的基础上团结协作,互相帮助,主动承担任务, 利用集体的智慧获得成功。整个团队就是一部机器,只有每一个齿轮都能正常运作,才能生产出优质的产品。 合理配备人员是成功完成软件开发项目的切实保证。所谓合理配备人员应包括按不

软件开发流程-论文

毕业设计(论文)题目:软件开发流程管理 班级:11工升 学号:1000303071 姓名: 指导教师: 2014年11月

从软件开发最初至今,不断地有新的软件开发技术产生,但是在软件开发能力和质量方面却始终存在达不到预计目标这一问题。每一个软件开发的最大目标,就是最大限度提高质量与生产率。而影响质量与生产率的三个关键因素:过程、人和技术,因此,我们除了提高技术能力,培养更多优质人才之外,还需要制定一套软件开发过程管理标准,并在软件开发过程中对这一标准不断地完善,以达到提高软件质量与生产率的目标。 本文结合CMM(软件过程成熟度模型),对软件开发、维护全过程进行标准化、规范化管理,制定出软件开发管理标准。 关键词:软件开发过程,管理标准

第一章软件开发的概念及目的 (4) 第二章软件开发流程划分及开发环境 (4) 2.1.软件开发阶段划分 (4) 2.2.软件开发环境需求........................... 错误!未定义书签。第三章软件开发过程中存在的问题 .................... 错误!未定义书签。 3.1.对用户方需求的掌握不全面................... 错误!未定义书签。 3.2.对软件的价值认识不清晰..................... 错误!未定义书签。 3.3.跟用户方的合作不顺利....................... 错误!未定义书签。 3.4.开发队伍的结构不合理....................... 错误!未定义书签。 3.5.软件开发管理制度不健全..................... 错误!未定义书签。 3.6.开发团队人员不稳定......................... 错误!未定义书签。第四章软件开发流程管理规范 . (10) 4.1.什么是CMM (10) 4.2.结合CMM制定开发流程管理方案 (11) 4.2.1软件项目生命周期模型................... 错误!未定义书签。 4.2.2需求分析流程图及描述................... 错误!未定义书签。 4.2.3设计流程图及描述....................... 错误!未定义书签。 4.2.4编码流程图及描述....................... 错误!未定义书签。 4.2.5测试流程图及描述....................... 错误!未定义书签。 4.2.6验收流程图及描述 (22) 第四章软件开发行业前景 (23) 参考文献........................................... 错误!未定义书签。

软件开发项目影响进度因素及控制浅谈

软件开发项目影响进度因素及控制浅谈 一、影响软件开发项目进度的因素 要有效地进行进度控制,必须对影响进度的因素进行分析,事先或及时采取必要的措施,尽量缩小计划进度与实际进度的偏差,实现对项目的主动控制。软件开发项目中影响进度的因素很多,如人为因素、技术因素、资金因素、环境因素等等。在软件开项目的实施中,人的因素是最重要的因素,技术的因素归根到底也是人的因素。软件开发项目进度控制常见问题主要是体现在对一些因素的考虑上。常见的问题有以下几种情况: 1、80-20原则与过于乐观的进度控制 80-20原则在软件开发项目进度控制方面体现在:80%的项目工作可以在20%的时间内完成,而剩余的20%的项目工作需要80%的时间。这个80%的项目工作 不一定是在项目的前期,而可能是分布在项目的各个阶段,但是剩余的20%左右的项目工作大部分是在后期。所以软件开发在进入编码阶段后会给人一种“进展快速”的感觉,使得项目经理、项目团队成员、用户以及高层领导产生了过于乐观的估计。有些领导看到软件交付给用户了,就一块石头落地“总算交差了”,同时又可能撤出一些被认为不必要的人力资源。但很多情况下这是为了对付用户不合理的交付期限要求而采用的不得已的措施。这样的结果是拖延了后期的工作,同时如果软件还不成熟的话,会给用户造成不好的影响。 2、范围、质量因素对进度的影响

软件开发项目比其他任何建设项目都会有更经常的变更,大概是因为软件程序是一种“看不见”又“很容易修改”的东东吧,用户是想改就改,造成需求的蔓延,项目经理有时还不知如何拒绝,加上要说“我能”的心理因素,一般都会答应修改。这样集少成多,逐渐影响了项目进度。 如果某项工作在进度上表面上达到目标了,但经检验其质量没有达到要求,则必然要通过返工等手段,增加人力资源的投入,增加时间的投入,实际上是拖延了进度。不管是从横向或纵向来看,部分任务的质量会影响总体项目的进度,前面的一些任务质量中会影响到后面的一些任务质量。 3、资源、预算变更对进度的影响 资源,最主要的还是人力资源,有时某方面的人员不够到位,或者在多个项目的情况下某方面的人员中途被抽到其他项目、或身兼多个项目、或在别的项目不能自拔无法投入本项目。还有一个很重要的资源,就是信息资源,如某些国家标准、行业标准,用户可能提供不了,而是需要去收集或购买,如果不能按时得到,就会影响需求分析、设计或编码的工作。其他资源,如开发设备或软件没有到货,也会对进度造成影响。 预算其实就是一种资源,它的变更会影响某些资源的变更,从而对进度造成影响。 4、低估了软件开发项目实现的条件

嵌入式Linux应用软件开发流程

从软件工程的角度来说,嵌入式应用软件也有一定的生命周期,如要进行需求分析、系统设计、代码编写、调试和维护等工作,软件工程的许多理论对它也是适用的。 但和其他通用软件相比,它的开发有许多独特之处: ·在需求分析时,必须考虑硬件性能的影响,具体功能必须考虑由何种硬件实现。 ·在系统设计阶段,重点考虑的是任务的划分及其接口,而不是模块的划分。模块划分则放在了任务的设计阶段。 ·在调试时采用交叉调试方式。 ·软件调试完毕固化到嵌入式系统中后,它的后期维护工作较少。 下面主要介绍分析和设计阶段的步骤与原则: 1、需求分析 对需求加以分析产生需求说明,需求说明过程给出系统功能需求,它包括:·系统所有实现的功能 ·系统的输入、输出 ·系统的外部接口需求(如用户界面) ·它的性能以及诸如文件/数据库安全等其他要求 在实时系统中,常用状态变迁图来描述系统。在设计状态图时,应对系统运行过程进行详细考虑,尽量在状态图中列出所有系统状态,包括许多用户无需知道的内部状态,对许多异常也应有相应处理。 此外,应清楚地说明人机接口,即操作员与系统间地相互作用。对于比较复杂地系统,形成一本操作手册是必要的,为用户提供使用该系统的操作步骤。为使系统说明更清楚,可以将状态变迁图与操作手册脚本结合起来。

在对需求进行分析,了解系统所要实现的功能的基础上,系统开发选用何种硬件、软件平台就可以确定了。 对于硬件平台,要考虑的是微处理器的处理速度、内存空间的大小、外部扩展设备是否满足功能要求等。如微处理器对外部事件的响应速度是否满足系统的实时性要求,它的稳定性如何,内存空间是否满足操作系统及应用软件的运行要求,对于要求网络功能的系统,是否扩展有以太网接口等。 对于软件平台而言,操作系统是否支持实时性及支持的程度、对多任务的管理能力是否支持前面选中的微处理器、网络功能是否满足系统要求以及开发环境是否完善等都是必须考虑的。 当然,不管选用何种软硬件平台,成本因素都是要考虑的,嵌入式Linux 正是在这方面具有突出的优势。 2、任务和模块划分 在进行需求分析和明确系统功能后,就可以对系统进行任务划分。任务是代码运行的一个映象,是无限循环的一段代码。从系统的角度来看,任务是嵌入式系统中竞争系统资源的最小运行单元,任务可以使用或等待CPU、I/O设备和内存空间等系统资源。 在设计一个较为复杂的多任务应用系统时,进行合理的任务划分对系统的运行效率、实时性和吞吐量影响都极大。任务分解过细会不断地在各任务之间切换,而任务之间的通信量也会很大,这样将会大大地增加系统的开销,影响系统的效率。而任务分解过粗、不够彻底又会造成原本可以并行的操作只能按顺序串行执行,从而影响系统的吞吐量。为了达到系统效率和吞吐量之间的平衡折中,在划分任务时应在数据流图的基础上,遵循下列步骤和原则:

软件开发文档说明书(完整流程)

. 在软件行业有一句话:一个软件能否顺利的完成并且功能是否完善,重要是看这个软件有多少文档,软件开发文档是一个软件的支柱,如果你的开发文档漏洞百出,那么你所开发出来的软件也不可能会好;开发文档的好坏可以直接影响到所开发出来软件的成功与否。 一、软件开发设计文档:软件开发文档包括软件需求说明书、数据要求说有书、概要设计说明书、详细设计说明书。 1、软件需求说明书:也称为软件规格说明。该说明书对所开发软件的功能、性能、用户界面及运行环境等做出详细的说明。它是用户与开发人员双方对软件需求取得共同理解基础上达成的协议,也是实施开发工作的基础。软件需求说明书的编制目的的就是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解、并使之面成为整个开发工作的基础。 其格式要求如下: 1 引言 1.1 编写目的。 1.2 背景 1.3 定义 2 任务概述 2.1 目标 2.2 用户的特点

. 2.3 假定和约束 3 需求规定 3.1 对功能的规定 3.2 对性能的规定 3.2.1 精度 3.2.2 时间特性的需求 3.2.3 灵活性 3.3 输入输出要求 3.4 数据管理能力要求 3.5 故障处理要求 3.6 其他专门要求 4 运行环境规定 4.1 设备 4.2 支持软件 4.3 接口 4.4 控制

. 2、概要设计说明书:又称系统设计说明书,这里所说的系统是指程序系统。编制的目的是说明对程序系统的设计考虑,包括程序系统的基本处理。流程、程序系统的组织结构、模块划分、功能分配、接口设计。运河行设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。 其格式要求如下: 1 引言 1.1 编写目的 1.2 背景 1.3 定义 1.4 参考资料 2 总体设计 2.1 需求规定 2.2 运行环境 2.3 基本设计概念和处理流程 2.4 结构 2.5 功能需求与程序的关系

浅谈软件项目开发过程中的主要项目风险及对策

软件项目成果的需求分析方和软件项目的承担者都十分关心这样的一个问题:什么样的因素会导致软件项目的失败?与项目有关的因素的改变将对按时、按经费预算交付符合预定质量要求的软件成果产生什么样的影响?这些都属于软件项目开发过程中考虑的风险问题。 软件项目的风险是指在软件开发过程中可能出现的不确定因而造成损失或者影响,如资金短缺、项目进度延误、人员变更以及预算和进度等方面的问题。风险关注未来的事情,这意味着,软件风险涉及选择及选择本身包含的不确定性,软件开发过程及软件产品都要面临各种决策的选择。风险是介于确定性和不确定性之间的状态,是处于无知和完整知识之间的状态。另一方面,风险将涉及思想、观念、行为、地点等因素的改变。 软件项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,增加项目的成本,甚至使软件项目不能实现。因此有必要对软件项目中的风险进行分析并采取相应的措施加以管理,尽可能减少风险造成的损失。风险是在项目开始之后才对项目的执行过程其负面的影响,所以软件项目开始之前风险分析的不足,或者是软件项目实施过程中风险应对措施不得力,都有可能造成软件失败。 如果对项目进行风险管理,就可以最大限度的减少风险的发生。它是为了将不确定因素出现的概率控制到最低,将不确定性所造成的损失减少到最低限度,对软件项目全过程中的风险识别、分析和应对的过程。在整个软件项目的实施过程中,可能形成项目风险的因素有很多,如在项目启动阶段可能存在项目目标不明确,与用户沟通少导致项目范围不明确等分先因素;在系统设计阶段可能因为缺乏有经验的分析人员、设计人员导致和设计的结果不能直接用于程序员的开发;在项目实施阶段可能因为开发环境没有准备好,程序员开发能力差,或者因为用户提出新的功能需求导致原有设计实效、开发费用超支,还有可能因为开发人员的流动导致项目延期,客户不满意等情况。 软件项目运用专家调查法和头脑风暴法分析软件开发项目中,并将其进行整理分类。 由于与客户沟通不畅对客户的需求了解不足造成的风险在软件开发项目整 个生命周期的中都存在的风险,主要包括需求变更风险,涉及风险,过程风险,安装及维护风险。 由于管理人员素质不够,经验不足,沟通不畅,任务或其分配不合理,对项目的控制力度不够造成的各种风险,主要包括进度风险,预算风险,管理能力风险,信息安全风险。 由于技术力量不足,开发环境工具不足造成的。主要包括技术风险,质量风险,软件设计工具风险,软件开发工具风险,员工技能风险。 由于公司或项目组内外部环境变化所导致的风险,主要包括人力资源风险,政策风险,市场风险,营销风险。 软件项目中的风险永远不能全部消除,而只能采用避免、减轻、和接受三种因对策略。 避免:通过分析找出发生风险事件的原因,消除这些原因来避免一些特定风险事件的发生。

软件开发过程概述

第1章软件开发过程概述 1.1 软件开发过程概述 1.1.1 软件的概念 软件(Software)简单的说就是那些在计算机中能看的着,但摸不着的东西,概念性的说软件也称为“软设备”,广义地说软件是指系统中的程序以及开发、使用程序所需要的所有文档的集合软件分为系统软件和应用软件。 软件并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。 软件被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响。 1. 系统软件 系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。 一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。 2. 应用软件 应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。较常见的有:文字处理软件如WPS、Word等;信息管理软件;辅助设计软件如AutoCAD ;实时控制软件;教育与娱乐软件。 1.1.2 编程与软件开发 软件开发的内容是:需求、设计、编程和测试。 (1)需求:不仅仅是用户需求,应该是开发中遇到的所有的需求。比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据......为了清楚地知道这些需求,你经常要和客户、项目经理等交流。 (2)设计:编码前,肯定有个计划告诉你要做什么,结构是怎样等等。你一定要按照这个来做,否则可能会一团糟。 (3)编程:如果在项目截止日,你的程序不能跑起来或达不到客户的要求,你就拿不到钱。

软件开发过程规范

【最新资料,Word版,可自由编辑!】

目录 1.前言............................................................................................................................................... 1.1目的.......................................................................................................................................... 1.2对象.......................................................................................................................................... 1.3要求.......................................................................................................................................... 1.4适用范围.................................................................................................................................. 1.5软件开发过程模型................................................................................................................. 1.6开发过程划分 ......................................................................................................................... 2.技术过程规范部分...................................................................................................................... 2.1概述.......................................................................................................................................... 2.2业务建模阶段 ......................................................................................................................... 2.3需求阶段.................................................................................................................................. 2.4分析设计阶段 ......................................................................................................................... 2.5实现阶段.................................................................................................................................. 3.管理过程规范部分...................................................................................................................... 3.1概述.......................................................................................................................................... 3.2接受项目.................................................................................................................................. 3.3重新评估项目范围和风险(对于较大项目) ................................................................... 3.4制定开发计划 ......................................................................................................................... 3.5迭代开发管理 ......................................................................................................................... 3.6监控项目的实施 ..................................................................................................................... 3.7结束项目..................................................................................................................................

浅谈软件开发过程中的方法问题

浅谈软件开发过程中的方法问题 摘要:先进的制造模式要求信息集成和功能集成贯穿于产品生命周期的每一阶段,功能的集成需要软件系统的支持,从而推动先进制造模式的实现。软件开发过程是建造软件解决方案的关键要素。本文详细讨论了两类主要的过程开发方法,即面向对象方法和结构化方法。 关键词:软件开发过程;面向对象方法;结构化方法methodological issues in the process of software development xia xue (beijing elite creation technology co.,ltd.,beijing100081,china) abstract:advanced manufacturing model requires information integration and functional integration throughout the product life cycle at every stage of the functional integration needs the support of the software system,thus promoting the realization of advanced manufacturing mode.the software development process is a key element of construction software solutions.this paper discusses the two main types of process development methods,object-oriented methods and structured methods.

(完整word版)软件开发的完整步骤

软件开发的完整步骤目录 1 问题定义 (4) 1.1 用户调查 (4) 1.2 编写《系统目标与范围说明》 (4) 2 可行性研究 (4) 2.1 确定项目的规模和目标 (4) 2.2 研究正在运行的系统 (4) 2.3 建立新系统的高层逻辑模型 (5) 2.4 重新定义问题 (5) 2.5 导出和评价各种方案 (5) 2.6 推荐可行方案 (5) 2.7 编写《可行性研究报告》 (5) 2.8 提交审查 (5) 3 需求分析 (6) 3.1 制定需求分析计划 (6) 3.2 需求获取 (6) 3.3 分析和综合 (6) 3.4 协商与沟通 (6) 3.5 编写《需求规格说明书》 (6)

3.6 需求验证 (7) 3.7 修改完善开发计划 (7) 3.8 技术审查和管理复审 (7) 4 概要设计 (7) 4.1 制定规范 (7) 4.2 设想供选择的方案 (7) 4.3 推荐最佳方案 (8) 4.4 功能分解 (8) 4.5 软件结构设计 (8) 4.6 数据设计 (8) 4.7 制定测试计划 (8) 4.8 编写《概要设计规格说明书》 (8) 4.9 其他文档编写 (8) 4.10 技术审查和管理复审 (9) 5 详细设计 (9) 5.1 数据结构设计 (9) 5.2 物理设计 (9) 5.3 算法设计 (9) 5.4 界面设计 (9) 5.5 其他设计 (10) 5.6 编写《详细设计规格说明书》 (10) 5.7 技术审查和管理复审 (10)

6 编码 (10) 6.1 选择合适的程序设计语言 (10) 6.2 制定编码规范 (10) 6.3 建立数据库系统 (10) 6.4 程序编码 (11) 7 测试 (11) 7.1 测试用例设计 (11) 7.2 单元测试 (11) 7.3 集成测试 (11) 7.4 系统测试 (11) 7.5编写《测试分析报告》 (12)

浅谈计算机软件开发(4篇)

浅谈计算机软件开发(4篇) 第一篇:计算机软件开发中分层技术探究 【摘要】随着近几年经济与科技的持续发展,我国的计算机技术也逐渐在各行各业扮演重要角色。本文通过对计算机分层技术的含义和特点进行介绍,希望可以在未来的计算机软件的开发研究中可以提供一种新的思路。 【关键词】分层技术;计算机软件开发;探究应用 当今社会中,计算机已经伴随着社会发展的新形势,让软件开发技术和管理水平有了一个新的提升。为了顺应时代的发展,计算机领域的技术也开始向多元化分层结构发展。这是我国信息化技术持续发展的一项重要指标。 1分层技术的含义

计算机软件开发中的分层次技术,即把软件开发过程中的每一个环节都进行分类划分。甚至为了让分层技术的有序进行,还应该展开对计算机软件开发的深入研究,确保软件的灵活性和稳定性,尽可能实现软件的多项功能。如今信息化时代已经俨然成为了网络独霸天下的局面。为了实现计算机软件开发结构层次的技术进步,计算机软件开发技术中的分层次运用,可以说促进计算机软件开发的多层次技术方向。计算机软件开发过程中分层技术的发展趋势,是生产满足消费者需求的高质量高智能的软件产品。这不仅可以提升计算机系统的性能,还可以在开发过程中逐渐减少工作时间提升工作效率,并促进整个软件系统的抽象化发展,保证软件与软件之间的无缝连接。 2分层技术的特点 随着人们对网络技术的需求越来越高层次,在计算机软件开发过程中开发的新技术,便逐渐成为了大势所趋。在某些特定条件下,计算机软件能够为系统高效的运行,通过不同分组形成模块。并根据不同的需要开发不同的软件,实现软件间的无缝接合。 2.1拓展性

分层技术对计算机性能和功能开发具有拓展和延伸作用。分层技 术在操作时,可以对那些比较复杂的高性能软件系统展开分解和调整,确保其在调整过程后可以高效运行和升级优化。 2.2独立性 分层技术的一大好处还在于,当计算机软件在开发运行过程中在 某一个层面产生技术问题,却不会对其他层面的上下结构造成影响。 这种独立性运用计算机系统中,可以让每个层次的功能和效用都确保 其不受其他层面的影响。 2.3稳定性 分层技术在计算机软件开发时可减少复杂计算机软件开发的周期。在实际应用中其有利于强化软件运行的稳定期,促进系统软件持续进步,对于保证整体的稳定性具有非常重要的作用。 3计算机软件开发中分层技术的应用意义

浅谈软件开发的质量细节

浅谈软件开发的质量细节 发表时间:2018-08-06T14:30:27.897Z 来源:《电力设备》2018年第11期作者:张庭玮 [导读] 摘要:软件质量是软件产品的基本属性,软件质量的优劣决定了软件产品的可用性、可维护性和可推广性,而软件开发过程中的质量细节,往往是决定软件最终质量优劣的关键因素。 (中广核研究院有限公司广东省深圳市) 摘要:软件质量是软件产品的基本属性,软件质量的优劣决定了软件产品的可用性、可维护性和可推广性,而软件开发过程中的质量细节,往往是决定软件最终质量优劣的关键因素。本文从软件开发的关键环节出发,阐述了各环节中设计质量细节的过程控制手段,据此可在软件开发过程中关注一些关键的细节问题,规避质量缺陷。 关键词:软件开发;关键环节;质量细节 细节往往决定事情的成败,对软件开发来说,细节更是决定产品质量优劣的关键路径。质量控制必须贯穿软件产业的整个生产流程,以确保对每个关键节点的质量管控。在软件开发过程中,每一个不起眼的细节,对软件产品的整体质量都有举足轻重的影响。 软件开发过程中,影响质量细节的环节主要包括:用户需求分析、架构设计、代码编写、测试、验证与确认等。 (1)用户需求分析:是软件开发过程的首要环节,该环节质量的优劣,会直接影响后续的各个环节,乃至该项目的成败。在需求分析阶段,系统分析人员一定要认真听取用户所讲述的需求意向,交流的过程中,不仅要用心领会用户所表述的需求,而且要帮助用户挖掘潜在需求,反复重复讨论,在做好以上工作的同时还需做好详实的记录,此记录是形成需求纲要的基础。这其中的每个细节都是优质需求报告和顺利开展后续工作的有力保证。 (2)架构设计:架构设计的好坏,会直接影响产品的稳定、扩展难易度以及业务模块代码编写的效率。架构设计人员在设计功能模块时应尽量周密、全面的分析,以达到适应行业通用功能和个性功能需求。一套完善系统架构对于软件生产商来说,能为企业在市场竞争提供强大的保障和支持。 (3)代码编写:程序员不仅要对所使用的开发工具熟悉掌握,而且对用户的需求以及相关的业务流程必须透彻、准确的理解。在产品开发的过程中,如存在对系统设计文档不理解或者理解不透彻的地方,都需要积极主动的于系统文档设计人员沟通,才能保证所实现的功能是符合用户需求的。在编写程序代码时,如发现架构有缺陷或不足之处,就是当前阶段不会引发问题,也应及时反馈给架构设计人员,让其跟进处理、改进,反复锤炼能够使架构更加稳定、强壮。程序员编写代码必须遵守行业和企业定制的各种规范标准和制度,比如代码缩进格式、变量、事件、函数的命名规则,以及函数功能、复杂业务逻辑和设计参数的注释说明等。这样有利于让自己形成良好的开发习惯和业务素质,软件产品在开发中难免会出现人员更替的情况,在较短的时间内,接收人员就能快速上手,从而不耽误产品的整个规划。所以程序员把握好每一个环节,对产品质量的影响举足轻重。 (4)测试:测试一般包括模块测试和系统测试,是对软件产品质量的全面检测;测试人员在测试过程中,应当力求谨慎认真的对待每个功能点测试用例,如果测试输出结果和预期输出有差异时,一定要自己分析,追溯一切可能的缘由,比如到底是程序逻辑存在问题,还是测试数据设置不合理,乃至于是否存在结构性的问题。从点到面的进行梳理,从表征到根本进行分析总结,力求不存在系统性问题。测试时,一定要把握全局的业务流程以及各个子模块之间的数据流转是否正确,这样才能有效的检测出强壮的,满足用户需求的产品。 (5)验证与确认:在许多数值计算,特别是仿真物理计算软件的开发过程中,验证和确认是不可或缺的重要一环,指利用多种手段对所开发的程序计算数值的准确性和有效性进行对比分析,以达到验证和确认其满足用户需求的目的。一般采用的验证和确认的方法包括:现实的实验数据比对、采用另外一种算法或模型进行计算比对、采用类似软件进行计算比对。在此过程中,应科学的客观的选择算例,严格限定各类工况范围,充分考量对物理模型的影响因素,对输入数据的后处理应遵循统一的标准,力求验证和确认工作公正客观。 软件产品质量源于软件工程师们在开发过程中对待每个细节是否严守规范和谨小慎微;专业的技能、全局的意识以及谨小慎微的态度是铸就工匠精神的基石,也是软件开发过程中质量细节的保障。 参考文献: [1]周伟良,软件开发过程质量与产品质量度量方法研究,合肥工业大学,2012年(1),11-23页

浅谈软件开发外包项目的管理

浅谈软件开发外包项目的管理 所谓软件外包就是一些发达国家的软件公司将他们的一些非核心的软件项目通过外 包的形式交给人力资源成本相对较低的国家的公司开发,以达到降低软件开发成本的目的。众所周知,软件开发的成本中70%是人力资源成本,所以,降低人力资源成本将有效地降低软件开发的成本。那么,在软件外包项目管理中要注意哪些问题呢? 一、如何选择外包商 1.公司规模 a) 具有一定规模的公司才有可能具有全面的软件开发能力,有客户需要的各类技术高手。 b) 接触过的企业比较多,才有可能接触过很多的项目,积累丰富的经验。可以将其他公司行业知识或是系统架构方面的经验进行分享。 c) 公司的声誉,财政状况,招工吸引力等,以保证项目期间无经济困扰,在软件人才频繁进出的情况下,有能力招募高手,有钱不断培训新人,从而力保高水平完成外包项目。 d) 后续服务的保障性。基本上,我们希望的厂商都是要能够长期合作的,毕竟默契跟关系是需要长期培养的,万一厂商规模太小,忽然有一天消失了,重新找厂商以及试运行项目又会是一个不太愉快的过程,更别说以前项目的维护工作可能没法得到保障了。 2.规范化。 a) 如果一个企业做得比较规范,我们会认为他们更可信。 b) 项目管理能力: 厂商使用的方法论是否完整;是否经历过大量项目的检验;是否运用数字化的管理工具;是否有明确的KPI;是否取得国际级的认证,如 CMMI;比如说获得CMMI 的认证,在国内好像也没听说过谁是真的过不去的,毕竟这个对培训机构来说也是一种商品化后的服

务项目,我的回复一向是:“是的,但是过了总比没过的好,总是多加了一份保障。” 3.价格:至于价格当然是越少越好,但不是要考虑的第一要素。Total cost的概念,包括项目的整体成本,以及后续需要维护的人员成本,是否有加值服务的提供(技术领域以及行业领域)。最早开始的时候,我们在议价的时候,更多的是考虑每个人天的单价,合作过几家厂商之后,发现如果从 Total 开发成本的角度来看,其实大家能提供的价格还是差不多的,单价低的可能项目周期会比较长,或是项目质量不如单价高的厂商,我们后续需要的测试以及维护成本加起来,其实成本是非常接近的,所以,还是建议找质量比较好的厂商,不要完全以人天单价或是项目总体价格来当作唯一的考虑点。毕竟省下来的钱是公司的,项目搞砸的 Credit是自己背的。 4.人员素质 沟通能力;英语能力;文档编写能力;是否对他专一,有资源一心一意压在他的项目上,而不要撤东墙补西墙。 5.地域性因素。这点随着互联网的普及以及各式沟通工具越来越多,倒是没有那么强的影响了,可以考虑在最后才使用这个指标衡量。 6.对你所在企业的认识。我们的经验是,对你越了解的合作伙伴,越容易培养默契,在项目的合作上也越容易体现出弹性,说的再虚一点的话,最好连合作伙伴的企业文化也能跟我们比较接近是最好的了,因为不管对方的老板答应你什么,真正干活的还是下面这批人。 二、管理外包商的要点 1.需求管理 在软件项目开发的早期,最主要解决的问题就是明确软件需求,但是现实中开发商往往很难理解企业的业务需求,加上业务需求会随着时间的推移而发生变化,造成软件需求一直在发生变化;另一方面,开发商提供的需求文档也很难被业务部门所理解,造成

相关文档