您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 实用软件工程ch10
软件工程管理随着全球软件业的飞速发展,用户对软件的功能和规模等方面都提出了更高的要求。原有的“软件作坊”的小规模生产已经不能适应社会发展需求,同时软件工程还是一个复杂的、要素相互关联的系统性工程。软件开发不同于其他产品的制造,软件开发的整个过程都是设计过程;软件开发不需要使用大量的物质资源,而主要是人力资源;并且,软件开发的产品只是程序代码和技术文件,并没有其他的物质结果。如果能对整个过程进行有效地、科学地管理,必然会产生意想不到的效益。软件工程管理的目的是优化软件工程要素的组织结构,降低工程成本,加快进度,提高软件工程质量,并把软件工程的风险减小到最低限度。从现有情况看来,软件公司大多在软件开发与维护的过程中引入工程的思想和项目管理的方法,而且他们都已经发现了软件工程管理带来的好处。所以说,软件质量的好坏,不仅取决于所采用的技术,更决定于管理的好坏。本章主要介绍如下内容:o软件项目管理o软件计划o软件质量管理o软件经济学第一节软件项目管理一、软件项目管理(一)软件项目管理的定义软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。管理行为是伴随着人类的出现同步发展的,而管理科学和管理理论体系的形成却不是很长,软件项目的管理实践和理论发展史就更短。总体来说,软件项目管理还处在一个实践的阶段、发展的阶段,但是软件项目管理已经充分体现了其蕴涵的科学性、技术性和艺术性。软件项目管理不同于其它普通的工程项目,它属于智力密集型活动,其中,人员、抽象的文档和程序代码是管理的主要对象。因此,软件项目管理与其它的工程项目管理相比有其自身的独特性,在实践中,软件工程管理人员不能照抄照搬,应做到因地制宜,确保管理行为具有针对性。(二)软件项目管理的目的曾经有人这样定义项目管理,它指“在项目活动中运用一系列的知识、技能、工具和技术,以满足或超过相关利益者对项目的要求”,显然该定义给出了项目管理涉及的范畴和需要达到的目标。我们知道,对于任何项目,项目管理的精髓都是成本、工期和质量,三者之间相互关联。但是最终的目标都是降低成本,增加效益,客户满意且公司获利。按期完成软件项目,增强用户对软件开发方的信任。保质保量,确保软件产品满足用户需求。由此看来,是否有一套科学的、有效的项目管理手段和训练有素的管理队伍将直接影响到软件工程的成功与否。因此,项目管理已经被公认为是IT公司的核心竞争力之一。(三)软件项目管理的要素1.三大基本要素(TCQ)软件项目管理的三大要素是时间(Time)、成本(Cost)和质量(Quality),三者相互关联,相互制约,都有各自的内涵。项目的时间通常用计划进度表来表示,它是一个二维表。一维是时间,另一维是组成项目的基本活动的集合。活动在整个项目周期的一定时间段中存在。有时在项目计划进度表中加上基线(节点),用来描述项目中某些具有重要意义的活动最后完成期限。成本是软件项目所需款项。项目都会有一个成本预算,但是往往由于实际市场竞争等因素的干扰,迫使软件开发方为获得项目而不切实际的降低预算成本,甚至诱发软件工程的失败。软件项目的成本一般包括人力成本、设备费用和分包费用等等,其中人力费用所占的比例较大。人力费用在成本预算时一般较难把握,主要因为软件项目的人员工作量计算复杂,且单位工作量成本的不确定性强。质量相对用户需求而言,一般质量好坏的评判用户意见更有说服力。用户需求和软件开发人员对软件系统建立的模型的偏差是客观存在的,而且不可能完全消除。所以,对用户需求描述的严格定义、多次反馈和精确说明是必要的,它是软件能否满足用户需求的基本保证。有时,人们把时间、成本、质量和软件工作范围并称为软件项目管理的四大要素,可见软件工作范围对于软件项目管理有重要的意义。软件工作范围是指软件的用途、以及对软件的要求。主要包括软件的功能、性能、接口和可靠性四个方面。软件工作范围一般由计划人员确定,要用无二义性的语言来描述。软件工作范围给出了对“完成哪些工作就可以达到项目的目标?”或“完成哪些工作项目就可以结束了?”等问题的描述。具体的说,软件工作范围包括软件功能、软件性能、接口和软件可靠性:软件功能:根据用户需求确定,尽可能精细。软件性能:处理时间的约束、存储限制、以及依赖于机器的某些特性。接口:硬件、软件、人。计划人员要充分考虑各个接口的性质及复杂程度,以确定对开发资源、成本和进度的各种影响。软件的可靠性。2.要素之间的关系软件项目管理的要素之间是相互关联、相互制约的。一般来说:项目的工作范围越大,花费的成本越大,花费的时间越长,但是与软件项目的质量没有必然的关系。软件项目的时间越长、越充裕,花费的成本越高,一般也能提高软件项目的质量。软件项目的成本是软件质量的基本保证。软件质量的提高需要软件项目的时间和成本的强力支撑。总而言之,软件项目的追求的最佳状况是“多、快、好、省”。“多”指工作范围大,“快”指时间短、“好”指质量高,“省”指成本低。相互之间的关联性告诉我们,提高一个指标的同时会降低另一个指标,所以实际上这种理想的情况很难达到。因此,在软件项目的实施中,我们要根据具体情况对不同要素的性能参数作取舍。(四)软件项目管理的内容软件项目管理的基本内容是软件配置管理、软件质量管理、软件风险管理及开发人员管理四方面,他们贯穿软件开发的整个过程。(五)软件项目管理的组织形式为了使软件项目能够按照计划顺利完成,项目组织是管理行为的主体,它在管理过程中具有非常重要的地位,它协调矛盾,提供保证和资源。可以这样说,采用何种组织模式进行管理对软件项目管理过程的成功与否相当重要。项目管理组织形式包括项目管理委员会、项目管理小组、项目评审小组和软件产品项目组。(五)软件项目管理开发阶段软件项目管理开发包含以下几个阶段:总体规划,项目立项,需求分析,系统分析,系统设计,编码实现,项目测试,文档制作,项目发布,项目版本化发布。1、总体规划规划项目工作的内容,规定工作范围及成果,确定目标市场、技术指标和应用要求,明确实施方案,技术可行性及涉及的各种资源,估算项目成本。2、项目立项产品部对开发的项目提交申请及相关项目资料,由相关人员对该项目进行一系列的风险评估。产品部进行详细进度计划安排,落实时间进度、资源、技术、资金和费用等。最后所有的项目申请资料、风险评估报告及产品进度计划都要报给公司上级领导审批,进行立项评审。立项通过的项目才能进入正式的开发工作。3、需求分析根据项目需求报告界定工作范围和应用方案的设计思路,进一步深入细化应用方案,描述将要开发出的计算机系统中包含的各项业务是如何做的,及业务流程、相关理论、运算公式、原理、业务数据、单据报表格式等。4、系统分析根据项目需求分析,对将要建立的满足用户需求的计算机系统进行分析。在系统分析过程中采用面向对象分析技术(OOA)划分需求的问题域,对每一个问题域进行分析和抽象,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及其系统责任所需的类及对象,定义这些类和对象的属性与服务,以及它们之间所形成的结构、静态联系和动态联系。最终产生一个符合用户需求,并能够直接反映问题域和系统责任的面向对象的分析模型。5、系统设计根据项目需求分析和系统分析,针对具体实现中的人机界面、数据存储、任务管理等内容,运用面向对象设计技术(OOD)进行系统设计。主要包括UI设计、对象设计和数据库表设计。6、编码实现根据系统设计的结果,运用面向对象的方法进行程序编码(OOP)以实现系统设计的内容。编码过程就是用具体的数据结构来定义对象的属性,用具体的语言来实现服务流程图所表示的算法。在对象设计阶段形成的对象类和关系最后被转换成特殊的程序设计语言、数据库或者硬件的实现。7、项目测试对系统分析、系统设计、程序编码等运用面向对象的方法进行测试(OOT)。项目的测试工作贯穿项目的整个开发过程。主要包括:分析(OOA)测试、设计(OOD)测试和编码(OOP)测试,以及集成测试和系统测试。8、文档制作跟随项目开发过程应产生的文档主要包括三类:(1)开发文档:分析、设计、编码、测试以及各种开发管理文档等资料;(2)用户文档:在线帮助,安装指南,使用手册,技术手册,培训教材等;(3)宣传资料:产品介绍资料,产品白皮书,产品宣传PPT,演示光盘等。9、项目验收对完工的项目按照验收步骤进行验收。验收过程中对项目的情况给予评价。10、项目版本化发布对验收通过的项目进行版本控制,整理项目版本所包含的内容并版本化,发布产品发布通告。二、人员管理软件项目管理中的人员管理活动是动态的过程,每个人均在一定范围进行着管理的活动。项目的参与者有高级管理者、项目(技术)管理者、开发人员、客户与最终用户。值得注意的是人员管理属于软件项目管理的内容之一,在此,我们对人员管理作近一步阐述。人员管理是软件项目管理的核心内容,我们在软件项目管理过程中强调以人为本,没有成功的人员管理就没有软件项目的成功。对于软件项目的管理者来说,要求要具有一定的素质,这是一些基本要求。具体要求如下:(1)调动每个成员积极性的能力;(2)组织能力,指能全局统筹项目的实施;(3)协调能力,磨合项目成分之间的关系,做到系统整体性能最佳;(4)创新能力,鼓励项目成员创造并感到有一种创造力;(5)解决问题的能力,一个好的项目管理者要能及时发现问题,系统的组织人员解决问题;(6)成就感,管理者要使项目组的成员都有成就感;(7)具有项目的相关技术能力;软件技能等。软件人员要有一定的创造力和技术水平。BillCurtis认为“不同的人员完成程序设计任务的能力上存在巨大的可变性”。对于软件编程人员来说要有一定的编程能力,这是软件编程人员最起码的要求,要有良好的编程习惯,代码要有清晰易懂,容易维护;要对相关领域知识有所了解,软件人员是为某一领域进行编程的,所以对这一领域的了解有利于软件人员提高软件的质量;要有创新能力,它是软件团队活力的体现;项目中的人员要具有相互沟通与协调的能力。第二节软件计划一、软件计划计划是用来建立一个总体方向的,是用来帮助开始进行项目的工作,保证这些项目是在朝着一个目标前进的。但是,所有的行动都是围绕项目进行的。软件计划将那些繁重的工作分解成更小单位的相关项目,这些相关项目都是在同一时间内以平行的状态被执行。软件计划对项目的分解粒度可以根据具体的情况和要求来决定。本节介绍制定软件计划的两种方法:甘特图(GanttChart)和网络图方法(一)甘特图(GanttChart)甘特图是以水平线段表示每一项任务,线段的起始点表示任务的开始,结束点表示任务的结束,线段的长度表示任务的完成时间。任务开始把线段左边的空的小圆圈涂黑,任务结束时把线段右边的空的小圆圈涂黑。这样就很容易看出哪些任务已经开始,哪些还没有开始,哪些已经完工。甘特图的优点是简单明了,清楚地从图上看出任务时间上的对比关系,非常直观方便。它的缺点是各个任务之间的逻辑关系无法表示清楚。如下图所示,给出了对于包含5个任务的软件计划甘特图表示,其特征是给出了项目任务的时序状态。(二)网络图方法网络图方法PERT(ProgramEvaluationandReviewTechnique),是美国海军和洛克希德公司60年代初发展起来的一种先进的管理技术。在国民经济中已经广为应用,并且受到用户的好评。我们来看一个例子。下面是一个网络PERT图,每一个线段表示这一个项目中的每一个任务,线段的起始点和终止点的都连接了一个节点,节点有编号,线段的旁边标有该项任务的名称和该任务所要花费的时间单元。如0-1之间的线段表示,该任务名称为测试计划,所花费的时间单元是4个单位时间。176385420测试计划4B测试4C测试1D测试4A调试3调试4编码2测试3E试验8E调试3修改3我们以该例分析,从节点5为例,从起始点到达节点5有两条路径它们是0-1-2-5和0-3-4-5,所用的时间单元分别是9个单位时间和11个单位时间。E调试必须等C测试和调试两个任务都完成后才能进行,所以E调试的最早启动
本文标题:实用软件工程ch10
链接地址:https://www.777doc.com/doc-179498 .html