软件开发最佳方案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

关于软件开发人力计划的最佳研究方案张观多摘要:信息化是我们当今这个社会的主流,而是促进信息化的工具主要是软件,所以如何寻找软件开发人力计划最佳方案就成为我们生活中必须要面对的问题。人在信息系统项目中既是成本,又是资本。一般来说,人力成本占信息系统项目成本构成的主要部分,这就要求我们从成本角度去衡量人力资源,尽量使人力资源的投入最小、产出最大。在项目开发中,人越多越好吗?当项目进度延迟时,是否应该增加人力投入?效果如何?会不会越帮越忙?这些问题是人力计划要解决的。对于这些问题,我提出了3个解决方案:1赫夫型开发;2人员——进度权衡;3Brooks定律;1赫夫型开发:是通过寻找最优二叉树的方式把软件开发中的任务与人力进行分配从而确定最佳的人力安排。2人员——进度权衡定律:从估算软件开发工作量角度出发,得出公式:E=L3(C3Rt4d)进行研究。(公式后面有解析)3Brooks定律:这个定律是指软件开发中“时间与人员不能线性互换”在软件开发中追加人力时要考虑的问题。关键字:软件开发人力资源管理策略研究1.软件开发的发展历程2.1传统的软件生产模式2.2软件工厂的两种生产模式3.软件项目开发的流程3.1项目立项3.2项目计划3.3需求获取与分析3.4系统概要设计3.5系统详细设计3.6编码实现3.7测试3.8产品发布3.9周期性活动4.软件开发人力计划安排所存在的主要问题4.1项目经理缺乏宣讲能力,程序员缺乏沟通能力4.2软件质量的价值观念模糊4.3开发流程意识缺乏4.4时间管理能力比较低4.5缺少必要的信心和激情4.6相互的合作并不协调4.7无效的内耗占据了开发过程的主体4.8模糊不清的角色职责定义5.软件开发存在主要问题的分析6,软件开发人力计划最佳方案探讨6.1团队开发的人员分配和薪水界定6.2营造高效软件开发团队6.2.1具有明确且有挑战性的共同目标6.2.2团队具有很强的凝聚力6.2.3具有融洽的交流环境6.2.4具有共同的工作规范和框架6.2.5采用合理的开发过程6.3项目时间管理6.3.1项目计划6.3.2安排进度表6.3.3进度控制6.3.4项目进度计划的表示方法7具体解决方案7.1赫夫曼树型开发7.2人员——进度权衡定律7.3Brooks定律7.4用做人力计划的Rayleigh-Norden曲线8.总结1软件开发的发展历程传统的软件生产模式主要是指自1946年有了数字计算机以后到20世纪70年代中期以前这段时间软件生产所采用的主要模式,大致经历了程序设计模式、软件作坊模式和软件工程模式。程序设计模式:是20世纪60年代中期以前的这段时期软件生成所采用的主要模式。在这个阶段,软件的生产就是程序设计,软件的规模很小,通常由程序设计人员即软件使用者根据特定的要求,通过当时的编程语言提供的算法来编写相应的专用软件。软件作坊模式:软件作坊模式主要是从20世纪60年代中期开始到70年代中期这段时间。软件作坊一般是由少数几个或几十个人组成的软件生产团体,他们是专门应别人的要求而编写软件的。没有什么软件生产的理论和方法,软件生产仍然是少数几个人头脑风暴的结果,除了源代码以外往往没有软件的说明书等文档。软件工程模式:软件工程模式是从20世纪70年代中期之后开始的这段时间。它提供了一种新的系统化、规范化、数量化的工程原则和方法进行软件的开发和维护。按照工程化的原则和方法来组织管理软件的开发与维护工作;是摆脱软件危机的一个主要出路。2.2软件工厂的两种生产模式1)基于软件开发的软件工厂这种形式的软件工厂是以软件工程和软件的生命周期作为软件公司的管理和开发的指导思想,着重软件的开发和管理。其最主要的体现在三个方面,其一是在公司的组织划分和项目及人员管理上深入贯彻落实软件工程思想,强调软件开发的“工程”性,把软件的设计、开发、测试、维护和管理当作一项系统工程来抓,表明软件不仅仅是编写代码的工作,而需要各个学科的综合应用和各部门团队之间的通力合作,才能得以实现。其二是严格项目管理和改进软件过程。承认软件开发是具有相当风险的工作,为了降低风险,使项目能够按照预定的成本、进度和质量顺利完成,而对软件开发的成本、人员、进度、质量和风险等进行科学地分析和管理,同时结合先进的管理软件和工具软件,如引进先进的国际管理标准IS09000和CMM等,对公司的工作流程进行分析、整理、改进和完善,形成适合自己公司发展的软件过程和相关文档,并指导软件项目的开发。其三是广泛地使用软件复用技术。在公司级别上建立软件复用类库,对各知识领域的可复用构件进行分类和提炼,并在全公司上下和各个项目之间广泛推行和落实,从而提升各个团队乃至整个公司的软件生产质量和生产力。2)基于软件集成的软件工厂以软件集成为核心的软件工厂,强调的是软件“集成”。就像传统行业的产品生产线一样,软件工厂拿到软件需求,通过软件的需求分析和设计,确定要达到相关功能和性能所需要的各种软件构件,在软件工厂的集成平台上通过集成而生产出符合用户要求的软件,它是一个高度自动化的软件生产模式。基于集成的软件工厂,它的主要工作大致可以分为两个阶段。第一个阶段是软件的需求分析和设计。在这一阶段,软件公司针对不同的软件需求,集中公司的信息技术专家、管理专家、行业专家和项目开发人员组成项目组,对软件的需求进行分析,设计出生产工艺方案,然后按方案对所需要的软件构件(中间件、模块等)进行选型和配置。第二个阶段是在软件集成平台上对各种软件构件进行组装、集成和客户化,以最终生产出符合客户要求的软件产品。由此可见,以集成为核心的软件工厂,它不强调软件的开发,或者说它不怎么关心软件的开发,而是通过使用各种软件集成工具来搭建软件集成平台,依照领域标准和支持这些标准的领域中间件和构件为原料来实现软件生产自动化的。总之,软件的生产模式是随着软件需求、软件的复杂度及软件理论和软件技术的不断变化而发展变化的。虽然说在同一时期,可能有几种不同的软件生产模式同时存在,但却只有一种模式是占主导地位的;就像近几十年来软件工程模式一直都是主流模式一样,但在未来甚至是未来相当长一段时间之内,软件工厂的模式将会成为我们软件生产的主要模式.3.软件项目开发的流程一个基本的软件开发流程,通常包括项目立项、计划、需求获取与分系、概要设计、详细设计、编码、测试、软件发布和软件维护阶段,如图所示。3.1项目立项此阶段工作以项目经理为主,技术经理为辅。项目经理:全面规划项目工作的内容,确定目标市场、技术指标和应用要求,划定项目工作范围和交付成果,明确项目实现的总体设想和实施方案;明确项目需要用到的各种资源,与技术经理共同预估项目的工作量和成本;提交《项目任务书》,报公司上级领导审批,进行立项评审。技术经理:负责确定项目中的新技术的可行性;协助项目经理明确项目需要用到的各种资源,协助预估项目的工作量和成本。3.2项目计划立项通过的项目才能进入正式的开发工作,此阶段工作同样以项目经理为主,技术经理为辅。项目经理:召集关键技术人员(可以是其他项目组的成员),详细估算项目的工作量和成本;明确各阶段的活动内容,以及各阶段需要完成的软件工作产品,制定《工作拆分表(WBS)》,作为项目开展工作和详细计划的基础;对项目进行一系列的风险评估,进行详细进度计划安排,落实时间进度、资源(人员、设备)、技术、资金等,完成《软件开发计划》及进度表;组织项目组成员和高层对此阶段完成的文档进行评审。技术经理:参与详细估算项目的工作量和成本;协助项目经理完成《软件开发计划》及《进度表》;参与评审本阶段提交的文档。3.3需求获取与分析从这一阶段开始,项目开发管理的重心开始转移,一直到测试任务完成以前,项目开发的工作都是以技术经理为主导,项目经理只是辅助监督技术经理按照流程的标准和要求完成任务。需求的获取是一个不断反复、不断深化的过程,可能需要多次,并一直到软件开发活动结束为止。为使需求调研更有效果、针对性更强,此阶段开始前,建议由项目经理和技术经理共同准备一份《需求调研问卷》,将需要调研的问题详细罗列在问卷中,并根据问卷展开调研。问卷中的问题最初以客户的高层需求为主,随着设计与开发的深入,问题逐渐细化为系统实现的技术细节。技术经理:与项目经理共同准备《需求调研问卷》,审核问卷中的问题;参与需求调研;调研结束后,根据项目需求报告界定的工作范围和应用方案的设计思路,进一步深入细化应用方案,描述将要开发的系统中包含的业务流程、约定、数据源、报表格式等,整理成《软件需求规格说明书》或《软件用例说明书》;指导测试组完成《系统测试用例》;参与评审本阶段提交的需求文档。项目经理:参与准备《需求调研问卷》,审核问卷中的问题;参与需求调研;协助技术经理整理《软件需求规格说明书》;指导测试组完成《软件测试计划》;组织项目组成员对完成的需求文档进行评审。3.4系统概要设计此阶段主要是根据项目需求分析,对将要建立的满足用户需求的计算机系统进行分析。技术经理:在系统分析过程中,指导设计人员(共同参与)划分需求的功能模块或包(Package),对每一个模块进行分析和抽象,找出描述模块及系统责任所需的类及对象,最终产生一个符合用户需求,能够直接反映模块和系统职责的分析模型;完成提交《系统概要设计说明书》;指导测试组完成《软件集成测试用例》;参与评审本阶段提交的概要设计文档。项目经理:组织项目组成员或其他项目组的设计人员对完成的设计文档进行评审。3.5系统详细设计技术经理:根据项目需求分析和概要设计,针对具体实现中的人机界面、数据存储、任务管理等内容,指导设计人员(共同参与)进一步分析和细化,详细定义各个模块或包(Package)中的类和对象的属性与方法,以及它们之间的联系,完成包括UI设计、对象设计和数据库表设计;提交《系统详细设计说明书》、《数据库设计说明书》;参与评审本阶段提交的设计文档及模型。项目经理:组织项目组成员对本阶段完成的详细设计文档及模型进行评审。3.6编码实现这一阶段的任务基本上由技术经理指导完成,只有在非常关键的代码模块或必要时(如外购软件等),才由项目经理组织代码的评审。技术经理:根据系统详细设计的结果,通过具体的程序语言、数据库或者硬件设备指导程序员(共同参与)实现设计中的数据结构和算法;核查程序员完成的代码模块;指导开发人员(共同参与)集成各模块或子系统。项目经理:组织项目组成员对本阶段提交的工作产品进行评审(可选)。3.7测试测试阶段的任务虽然主要由测试组完成,但测试工作的开展离不开技术经理的指导,而且更需要项目经理协调软件开发小组与测试组之间的关系。目前,对于测试的管理和跟踪多数采用回归测试的方式。技术经理:当软件的各个子系统或整个系统完成后,指导测试组完成集成测试和系统测试任务;评审和核实测试组提交的《集成测试报告》和《系统测试报告》;根据测试结果分派任务给开发人员,指导(或共同参与)对软件产品进行修改。项目经理:协调软件开发组与测试组之间的关系,指派测试任务给测试组;组织项目组成员对本阶段提交的工作产品进行评审。3.8产品发布本阶段的任务主要是完成产品的包装,这是软件开发的收尾工作,项目组的管理重任移交到项目经理。项目经理:组织人员整理项目组内部的开发文档,如需求、设计、编码、测试以及各种开发管理文档资料;分派完成用户文档的任务,包括安装指南,使用手册,技术手册,培训教材等;指派撰写产品宣传资料的工作,例如产品介绍资料,演示光盘等;组织用户对完工的项目(提交的软件产品)按照验收步骤进行验收,完成《用户验收报告》。技术经理:协助整理项目组内部的开发文档,如需求、设计、编码、测试以及各种开发管理文档资料;开发软件产品的安装程序;参与评审本阶段提交的工作产品。3.9周期性活动在项目开发过程中,有一些活动是贯穿整个软件开发过程的,我们将这些活动称之为周期性活动,包括项目计划调整、项目活动的跟踪与监控、风险再评估、配置管理、质量保证等,活动的结果主要由项目经理或指定人员定期或在事件驱动下更新(评审或审阅)《软件开发计划》、《项目问题日志》、《项目报告》、《项目风险日志》、《会议纪要》、《工作任务

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功