版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四讲软件工程的可行性分析软件计划是软件项目的开始, 是软件开发过程的准备时期, 也是软件生命周期的第一个时期,该时期的主要任务是对问题求解进行定义,对问题可行性进行分析,对待开发项目进行论证,最终确定该软件项目的开发价值,制定软件项目计划。软件项目计划是整个软件开发和维护的规划和实施依据。本章主要介绍软件生命周期的问题定义和可行性研究两个阶段的任务、 步骤和内容。2.1 问题定义问题定义阶段是软件生命周期的第一个阶段, 也是最容易被忽视的阶段。 该阶段必须回答的问题是“是什么” 。 如果在问题尚未明确的情况下即着手解决问题,必然造成人力、 物力、时间等各方面的浪费, 最终得出的结果也未必有意
2、义。因此对此阶段应给予足够的重视。问题定义的关键性任务就是确定问题的性质、 工程的目标和规模。 问题定义阶段所需要的信息主要从用户方面得到, 这就需要系统分析人员到用户中去进行调查研究,取得第一手的资料。调查研究一般有下列几种方式。以书面的形式了解用户的要求。 系统分析员要把所要从用户那里得到的信息,以书面的形式提出,并让用户填写。系统分析人员应认真阅读和分析用户填写的材料。口头形式了解用户的要求。 系统分析人员应去现场听取用户的口头意见,并进行记录。以阅读资料的形式了解用户的要求。 用户把原来系统的有关资料提供给系统分析人员,分析人员应认真阅读并简要地记录下来。以开调查会的形式了解用户的要求
3、。 软件分析人员应事先准备好调查提纲,按照提纲进行调查,并获取用户的要求。使用上述方法把用户的要求收集上来后, 软件分析员应认真分析问题。 在分析这些问题时,应注意抓住实质性的问题,以及解决该问题的办法。例如有的用户可能提出某种功能要求及解决方法,那么系统分析员就应该进一步了解这项工作以前是怎样做的,用户提出的做法有哪些合理之处,可能会有的弊病等,从而弄清问题的本质。1系统分析员对用户提出的问题在了明确的认识后,应该整理出一份书面调查报告,并提交用户和部门负责人进行审查,以纠正不足之处。理想的做法是系统分析员、用户和部门负责人坐在一起阅读和讨论这份报告,确定不清楚的部分,改正不正确的部分,通过
4、认真的修改得到一份大家一致同意的报告。这份任务书中应包括项目名称、开发背景、项目目标、项目范围、初步设想等内容。系统开发任务书是软件项目的第一个书面成果,既是软件开发的指导性资料,也是项目立项的基础性文档,是用户检查系统最后开发结果一个重要依据。其内容也可以由项目开发计划和可行性研究报告来共同体现。在软件开发工作开始阶段就使系统分析人员、软件开发人员、 最终用户和用户部门负责人对问题的性质、目标、规模取得完全一致的意见,这对确保今后开发工作的成功至关重要。如果对问题的理解不正确,最终开发出来的系统必然不能解决实际问题。如果系统分析员、用户、用户部门负责人对这份任务书取得了一致的意见,而且用户部
5、门负责人也同意开发这个软件项目,开发工作将转入软件生命周期的下一个阶段,即可行性研究。例 1、项目建议书范例项目建议书编写提纲一、项目概述(一)项目名称(二)业主单位(三)工程背景(四)建设规模(五)投资概算二、项目的意义与必要性三、现状及需求分析四、建设内容、方案、规模五、系统功能及主要技术经济指标六、建设工期及时间安排七、项目承担单位或项目法人及协作单位概况八、投资估算、资金筹措九、效益分析2.2 可行性研究可行性研究的目的是用最小的代价、在尽可能短的时间内确定问题是否能够解决,以及是否值得解决,即可行性研究的结果是“做还是不做”而非“如何去2做”。在项目开发之前进行可行性论证是非常必要的
6、。 一个项目如果未经过充分的可行性论证,只粗略地估计解决问题的花费和方法,就盲目上阵开始软件开发工作,结果往往是不能在预定的系统规模或时间期限内解决问题,甚至无法求解,最后造成花费在该项目上时间、人力、物力资源和经费的浪费。因此,对于待开发的新系统,在所具备的资源和其他条件的前提下,是否能够完成软件开发工作及获得相应的收益,需通过认真地论证其可行性来确定,避免盲目开发,造成无谓的浪费。2.2.1可行性研究的任务在明确了问题定义之后, 首先由系统分析员给出系统的逻辑模型, 然后从该模型出发,寻找可供选择的解决问题的方法。 若有多种可行方案,还需对各种可能解法进行分析,通过判定解决问题的规模及系统
7、完成的成本效益等内容,选择一种可行性最好的方案。 可行性研究实际上是一次简化的系统分析和设计的过程。通常情况下,可行性分析应从技术可行性、经济可行性、操作可行性和社会可行性等方面着手。技术可行性技术可行性是根据用户提出的系统功能、性能及实现系统的各项约束条件,从技术角度研究实现系统的可行性。 技术可行性研究往往是系统开发过程中难度最大的工作。技术可行性研究包括:风险分析、资源分析和技术分析。风险分析的任务是: 在给定的约束条件下, 判断能否设计并实现系统所需要的功能和性能。资源分析的任务是: 论证是否具备系统开发所需的管理人员和各类专业技术人员,人员是否进行了必要的培训,开发人员是否对术语、缩
8、写、开发模式有一致的理解,是否具备必须的软件、硬件资源和工作环境等。技术分析的任务是: 当前的科学技术能否支持系统开发的全过程。 使用现有的技术,能否在预定的时间内实现该系统的功能; 所选择的技术是否先进、 合理;在开发过程中存在哪些技术难点,能否克服。经济可行性经济可行性分析主要包括: “成本效益”分析和“短期长远利益”分析。3“成本效益”是估算软件开发成本、系统交付后的运行维护成本以及效益,确定系统的经济效益是否能超过各项花费。费用估算包括:设备计算机硬件、输入输出设备、空调、电源、机房及其他设施和系统软件、数据库管理系统以及各种应用软件 ( 包括软件包) 的支出费用。人力研制人员( 系统
9、分析人员) ,操作人员( 系统管理人员、操作人员、数据录入员、维护人员) 的工资、奖金以及他们的培训费用。材料水、电、打印纸、色带和各种易耗物品及设备的维修费用。管理由于采用新的软件系统和工作方式会带来变化,管理人员的任务也发生改变,这些变化会增加一些额外的管理费用,其中有些是一次性的,有些是经常性的。普遍存在的问题是费用估计往往偏低,例如只考虑主机价格而不考虑外设价格( 有时主机价格仅占总费用的 1/3 左右) 。对软件费用、日常维护费用、人员培训费用考虑不周,其结果是一次次地追加费用,造成骑虎难下的局面。“短期长远利益” 是分析该软件的短期和长远利益, 估算系统的整体经济效益和社会效益是否
10、满足要求。操作可行性操作可行性主要是分析系统的运行方式、 操作规程在用户组织内是否可以有效、顺利实施等问题。社会可行性社会可行性是指开发后的系统能否得到社会的认可。 从社会责任方面考虑,需要判定系统的开发过程或使用需要承担哪些责任,是否会触犯法律或是存在侵权行为;从社会环境方面考虑,需要判定系统能够在市场上占有什么样的位置。如果是涉足未成熟的市场,要尽可能准确地估计该产品的潜在的市场有多大、自己能占多少份额、多长时间能实现等,如果是要挤进成熟的市场,则要考虑在竞争的状态下能够得到的收益是多少。4可行性研究最根本的任务是对以后的行动方针提出建议。 系统分析员应该为每个可行的解法进行评估,形成一个
11、可行性分析报告,作为开发该项目及选择方案的依据。 如果问题求解没有可行的方案,分析员应该建议终止该项目计划,以避免人力、物力、财力和时间的浪费。如果问题值得去做,系统分析员应该推荐一个较好的解决方案,并且制定一个初步的计划。可行性研究需要的时间长短取决于工程的规模。 一般说来,可行性研究的成本大概是预期的工程总成本的 510。2.1.2可行性研究的步骤为了保证可行性研究的结果全面、准确、有效,并尽量减少所需成本,可行性研究可按照以下步骤进行。确定系统规模和目标分析员通过对关键人员进行调查访问, 仔细阅读和分析有关的材料, 确认目标系统的规模和目标,并清晰地描述对目标系统的一切限制和约束,以确保
12、分析员正在解决的问题确实是要求他解决的问题。研究目前正在使用的系统现有的系统是信息的重要来源。 因为当前正运行的系统, 不论是人工操作的系统,还是计算机系统,一定能完成某些有用的工作,这些功能,往往是新的目标系统必须完成的基本功能。同时,现有的系统必然还存在某些问题,这些问题在新系统中必须要解决。此外,运行使用旧系统所需要的费用是一个重要的经济指标。从经济角度看,要求新系统能增加收入或减少使用费用。对当前系统的研究,可通过仔细阅读分析现有系统的文档资料和使用手册、实地考察现有的系统、访问有关的人员等途径实现。研究时应该注意了解这个系统可以做什么,为什么这样做,以及使用这个系统的代价。由于绝大多
13、数系统都和其他系统有联系,所以还应该注意了解并记录现有系统和其他系统之间的接口情况,这是设计新系统时的重要约束条件。分析员可画出现有系统的高层系统流程图 ( 参见后面 2.3 节) ,描述其对当前系统的认识,并请有关人员检验是否正确。分析现有的系统不应花费过多时间。 这个步骤的目的是了解现有系统能做什么,而不是了解它怎样做这些工作。5导出新系统的高层逻辑模型通过前一步的工作, 分析员在逐步明确目标系统应该具有的基本功能、 处理流程和所受的约束的基础上,可利用建立逻辑模型的工具,定义新系统的逻辑模型。如利用数据流图(下一课具体介绍)描绘数据在系统中流动和处理的情况,利用初步的数据字典(下一课具体
14、介绍)定义系统中使用的数据。数据流图和数据字典共同定义了新系统的逻辑模型,概括地表达出分析员对新系统的设想,以后可以从这个逻辑模型出发设计新系统。重新定义问题分析员通过新系统的逻辑模型表达对新系统必须做什么的看法后, 应该和用户一起再次复查问题定义、工程规模和目标,以发现并改正分析员对问题的误解或者用户曾经遗漏的某些要求。这次复查应该把数据流图和数据字典作为讨论的基础。可行性研究的前 4 个步骤实质上构成一个循环。 分析员定义、 分析问题,导出一个试探性的解。在此基础上再重新定义问题,再一次分析这个问题,修改这个解。继续这个循环过程,直到提出的逻辑模型完全符合系统目标。导出和评价供选择的方案分
15、析员在建立了完全符合系统目标的系统高层逻辑模型后, 要给出若干个较高层次的(较抽象的)物理解法供比较和选择。导出供选择的解法的最简单的途径,是从技术角度出发考虑解决问题的不同方案。首先从技术可行性出发,初步排除一些无法满足功能需求的处理方案。其次从操作可行性出发,分析员充分考虑使用系统的用户的工作方式和习惯,检查技术上可行的那些方案,将那些操作方式或操作过程不能被用户接受的方案去除。接下来分析员应该从经济可行性出发, 估算余下的各种方案的开发成本和运行费用,进行成本/ 效益分析(参见后面 2.5 节),对预计能带来利润的系统进行比较,选择那些所带来的预期利润更理想的方案。最后分析员需要详细说明
16、选择各行动方案的理由制定进度表, 估计各行动方案在生命周期每个阶段的工作量,为项目负责人进行决策提供充分的依据。推荐一个方案并说明理由6根据上述可行性研究结果, 分析员应该做出是否继续进行这项开发工程的决定。如果结论是值得继续进行这项工程,则应该推荐一种最好的解法,并且说明选择这个解决方案的理由。通常情况下,根据分析员对于所推荐的系统的成本/效益分析结果,由项目负责人决定是否承接该项目,并选择一种经济效益最为理想的解法作为实施方案。推荐行动方针分析员应该为所推荐的方案草拟一份开发计划。 该计划除了制定工程进度表之外,还应该估计对各类开发人员 (例如,系统分析员、 程序员)和各种资源(计算机硬件
17、、软件工具等)的需要情况,并指明什么时候使用以及使用多长时间。此外还应该估计系统生命周期每个阶段的成本。最后应该给出下一个阶段(需求分析)的详细进度表和成本估计。书写计划任务书并提交审查将上述可行性研究各个步骤的工作结果写成清晰的文档, 请用户和使用部门的负责人及评审组审查, 以决定是否继续这项工程及是否接受分析员推荐的方案。其中,可行性研究的文档内容可依照以下提纲书写。引言简单介绍系统背景情况,包括国内外相关系统的发展水平和市场需求程度,实现系统的环境,以及与其他系统之间的关系。系统技术描述总体设计方案,系统分解情况,涉及的关键技术,各阶段目标。系统经济效益即经济可行性,包括设计开发总花费、
18、预期经济效益以及长期效益。系统技术评价即技术可行性,包括开发队伍的技术实力,设备条件和已有工作基础。法律上的可行性系统开发是否存在侵权行为或要承担的法律责任。其他与项目开发有关的问题, 比如对现有的系统进行分析, 并为开发系统提供可行性建议等。7结论可行性报告的最后必须提供一个明确的结论,结论的内容可能是: 项目开发可以立即开始;或系统开始的前提是要具备某些条件或对系统目标进行某些修改;还可能是系统在技术、经济或操作等方面不可行,要求立即终止该项目的所有工作。例 2、福建工程学院学生基本信息管理系统 可行性研究报告暨初步设计方案编写提纲一、项目概述(一)项目名称(二)业主单位(三)工程背景(四
19、)建设规模(五)投资概算(六)设计依据(七)设计范围(八)设计分工1. 系统集成商职责分工2. 设备供应商职责分工3. 业主职责分工二、现状与需求分析 (详细描述项目现有软硬件、 人才基础情况和业务需求、数据量大小)(一)项目的意义和建设必要性(二)现状分析(描述现有的信息化建设情况)(三)需求分析(描述业务需求和数据量大小)三、总体设计(一)建设目标(描述从用户角度看到的系统所实现的全貌)(二)建设内容(详细程度达到可以作为验收的依据)(三)系统的总体结构(四)信息的分类编码体系(五)质量保证体系(列出系统设计所遵循的标准)四、建设方案(一)网络 ( 通过分析和比较,推荐2 至 3 种系统建
20、设方案)1. 广域网(描述与国家系统、数字福建基础设施、下级系统、横向系统、互联网以及内部网的关系;描述系统采用的各种接入方式)2. 局域网(系统内所有信息点的网络设计, 包括结构、类型及采用的技术)3.IP 地址及域名系统(包括与国家系统、数字福建以及下级系统的地址规范)4. 网络管理系统 (描述网管系统的类型、 功能、管理范围以及操作规程)(二)主机及存储系统 (通过分析和比较,推荐 2 至 3 种系统建设方案;包括小型机、PC 服务器和存储设备的业务应用范围、功能指标、以及它们之间的8逻辑关系)(三)系统软件 (通过分析和比较,推荐 2 至 3 种系统软件的类型、购买数量、版本及应用范围
21、)1. 操作系统2. 数据库管理系统3. 应用服务器软件4. 群件系统5. 工具软件(四)应用软件1. 业务处理流程2. 功能设计(细化到模块)3. 数据库设计4. 技术路线5. 开发方案(五)其他系统 (通过分析和比较,推荐2 至 3 种系统建设方案)1. 安全系统(根据系统的安全密级要求设计,包括防火墙、防病毒、入侵检测、漏洞扫描、身份认证、数字签名、信息加密、系统安全、制度建设等)2. 外部设备3. 布线系统4. 机房(根据系统的安全等级要求设计机房装修和硬件设备, 包括电源系统、保密措施、空调、防雷、地线等)5. 接口系统(各系统之间的连接设计)(六)关键技术(七)标准化工作(八)数据
22、采集(数据采集的来源、方式、主体等)五、设备配置及安装 (包括逻辑设计中出现的所有设备,每个设备均包括型号及性能指标参数)(一)网络设备(二)存储设备(三)主机设备(四)安全设备(五)外部设备(六)布线方案(七)机房设计(八)应用软件运行环境六、培训及维护(一)应用培训 (详细列出培训计划)(二)运行测试设计 (列出测试方案)(三)系统维护机制与定员 (提出系统运行所需的人员配备等必要条件及管理机制)七、项目实施(一)项目管理(二)项目建设工期及进度计划( 项目进展跟踪, 为分期验收提供依据 )(三)施工注意事项9八、概算编制(一)编制说明1编制依据2各种费率的取定3概算修改内容4工程投资(二
23、)概算表格九、项目招标方式十、项目效益分析十一、图纸十二、设计单位资质证书2.3 系统流程图分析员在进行可行性研究时需要了解和分析现有的系统,并以概括的形式表达对现有系统的认识。而在进入设计阶段以后还需将设想的新系统的逻辑模型转变成物理模型,因此需要描绘未来的物理系统的概貌。系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件 ( 程序、文档、数据库和人工过程等 ) 。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它表示的是物理数据流图而不是程序流
24、程图。2.3.1系统流程图的符号系统流程图符号如表2-1 所示。表 2-1 基本符号10表 2-1 基本符号续以概括方式描述一个实际系统时, 用表 2-1 列出的基本符号就足够了, 但当需要更具体地描绘一个物理系统时,还需要使用表 2-2 所示的系统符号。表 2-2 系统符号2.3.2系统流程图的作用制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。系统分析员可直接在系统流程图上拟出可以实现计算机处理的部分。可利用系统流程图来分析业务流程的合理性。2.3.3系统流程图举例下面举两个例子
25、说明系统流程图使用方法。11某图书馆借书系统流程如图2-1 所示:图 2-1 图书馆借书系统流程图读者须先被验明证件后才能进入查询室; 读者在查询室内通过检书卡或利用终端检索图书数据库来查找自己所需的图书;找到所需图书并填好索书单后到服务台借书;如果所借图书还有剩余,管理员将填好借书单,从库房中取出图书交给读者。某高校的考试考务业务流程如图2-2 所示:图 2-2 考试考务业务流程图命题人员依据教学大纲的要求,从试题库中抽取试题,生成试卷;教务部门印制试卷,安排考试日程及监考人员,并制定日程安排表;根据考试日程安排,学生考试,完成答卷;教师批改试卷, 生成课程成绩单, 交成绩管理子系统处理。系
26、统流程图的习惯画法是使信息在图中自顶向下或从左向右流动。由图 2-1 和图 2-2 可知,系统流程图并没有指明每个部件的具体工作过程,每个符号用黑盒子形式定义了组成系统的一个部件。图中的箭头确定了信息通过系统的逻辑路径(信息流动路径) 。2.3.4分层软件工程的一个基本原则是采用分层次抽象,自顶向下、逐层细化的办法控12制软件开发过程的复杂性。面对复杂的系统时,一个比较好的方法是分层次地描绘这个系统。 所以在绘制系统流程图时,首先绘制高层次的系统流程图,描绘系统总体概貌,表明系统的关键功能。然后分别对每个关键功能进行详细描述,画在单独的一页纸上。这种分层次的描绘方法便于阅读者按从抽象到具体的过
27、程逐步深入地了解一个复杂的系统。2.4 制定软件计划为了成功地开发软件, 必须知道要做的工作的范围、 要用的资源、 要花的工作量及应遵循的进度,这些就是软件计划的任务。软件计划的内容及过程如下。2.4.1确定软件计划软件计划以可行性研究报告为基础,由软件人员和用户共同确立软件的功能和限制,提出软件计划任务书。计划任务书是对软件开发总体思想的一份简洁的文档说明,通常使用自然语言进行描述,必要时也可辅以图表说明。文档的内容不涉及特别的专业知识,因此,无论是管理人员、技术人员还是一般的用户都能很好地理解软件需求描述。一个典型的软件计划任务书的内容应该包括如下 4 个方面。2.4.1.1软件的工作范围
28、软件计划的第一个任务是确定软件工作范围, 主要是对软件功能、 性能、可靠性和接口等方面的需求进行描述,形成一个总体的任务说明,作为指导软件开发各阶段的工作的依据。功能需求说明是给出整个软件系统所提供的服务的简短描述, 主要由用户提出要求,并与软件人员共同商量,确定软件功能的具体内容。在进行功能需求描述时,重点在用户所关心的最终服务要求,描述中应尽量避免涉及与实现有关的概念和细节,必要时,可根据情况进行功能分解,并提供更多的子功能描述。性能需求考虑系统提供的服务应遵循的一些时间、 空间上的要求, 即对系统的执行效率和所需存储空间的要求。主要包括处理时间的约束、存储限制以及具体使用环境的特点,对功
29、能和性能要同时考虑才能做出正确的估计。由于软件将与计算机系统的其他部分交互作用, 计划者必须考虑每一接口界面的性质和复杂程度,以确定对开发资源、成本及进度的影响。最后,还要考虑软件可靠性的要求,不同性质的软件有不同的要求,特殊性13质的软件可能要求特殊考虑以保证可靠性。2.4.1.2环境资源软件计划的另一任务是分析软件开发所需要的资源情况,包括人力资源、 硬件和软件的分配和使用情况,对每种资源的描述基本上可从资源的基本状况描述、对资源要求的日程安排及对资源应用的持续时间3 个方面来说明。其中,人是最主要的软件开发资源。参与软件开发的人员主要包括项目负责人、管理人员、系统分析员(高级技术人员)及
30、相关专业的程序员等。对这些人员的分配和使用需要考虑开发软件的实际情况。如果开发的是相对较小的软件项目,开发时间较短,人员一般需要一个或少数几个人就可以完成所有的软件开发工作。如果是开发大型的软件工程项目,由于开发的持续时间长,参加人员的数量多,在整个生命周期中,人员组成的变动是不可避免的,这时必须考虑对人力资源的有效利用,合理规划各开发阶段的人员配置。图 2-3 描绘了开发一个典型软件时,在软件工程不同阶段对不同人员的要求。图 2-3 软件工程不同阶段对不同人员的要求在项目需求分析和总体设计阶段, 主要是高级技术人员参加; 进入系统详细设计和编码阶段,主要由程序员承担设计和编码工作;而测试阶段
31、各层次技术和管理人员都要求参加。硬件也是软件开发过程中必不可少的资源。 主要包括开发系统、 目标机器和新系统的其他部件。其中,开发系统是指软件开发过程中使用的计算机系统,它14能够提供支持系统开发要求的多种软件开发平台,满足用户信息存储与通信的要求,能够模拟用户运行环境。目标机器是指目标软件实际运行的硬件系统,是支撑软件正常运行的配置。另外硬件资源还包括支撑系统运行的其他部件。从成本效益出发,目标机器应该是在满足用户需求前提下的最低限度系统配置。软件资源是指系统开发、 运行要求的支持软件系统, 这些软件资源在软件开发中起辅助的支持作用,有些甚至可以成为新软件的一部分,比如操作系统、程序设计开发
32、环境、数据库系统或特定领域的软件包等。由于市场上开发的各类支持软件很多, 经过实践检验且被认可的软件也有不少,因此,对软件资源的选择余地很大。综合技术、经济和操作等可行性因素,选择一种有效的支持软件组合,可以极大地提高软件开发效率与质量。选择指定支持软件的原则如下。该支持软件是软件开发中必不可少的资源。借助该支持软件可以显著提高质量, 减少开发工作量, 且获得该软件的费用应该小于等于不使用该软件进行开发所要求的费用。若获得的软件资源需经过部分修改才能有效使用, 则需考虑修改可能需要的费用。如果该费用所带来的收益超过开发同等软件所需的费用, 则可考虑使用。否则如果该费用所带来的收益小于开发同等软
33、件所需的费用,则需考虑更换其他软件或自行开发。所有软件资源的获取手段应合法、有效。2.4.1.3进度安排进度安排是软件计划工作中一项困难的任务。 较好的情况是软件开发项目的进度安排从最佳利用各种开发资源的角度出发, 估计各开发阶段所需的工作时间,最后得到总的工作时间, 这是最合理的进度安排情况。 而实践中最常见的情况是,用户已经确定软件最终交付的日期,软件开发人员必须在规定的时间期限内完成任务,这就使得计划者必须综合考虑各种因素,合理组织、分配各种可用资源,尽可能并行安排工作,保证能够在指定期限内完成开发任务。进度安排的主要内容进度安排的主要工作是制定软件进度表, 以明确开发各阶段的任务和时间
34、安排情况。 软件进度表的内容包括软件的任务划分情况、各任务的起始时间和结束15时间、各任务的工作量和所需的人数、各任务之间的衔接关系、各任务所需的资源情况、各任务完成后所应提交的文档以及对各任务的审查和审查记录等。在软件开发过程中,严格按照进度表开展工作,并确保各任务在规定时限内完成。对任务的时间进度安排可采用数据结构中求关键路径法,当估计出各任务的工作量和时间要求以后,确定各任务的开发时间限制,找出影响开发进度的关键任务,通过缩短这些关键任务的时间来确保开发任务及时完成。在做进度安排计划时, 还需要考虑人员的使用问题, 要正确处理软件开发进度与开发人员数量的关系。为保证软件开发进度,开发人数
35、不能太少,但也不是说开发的人数越多开发进度越快,开发进度与人数之间不是简单的正比关系。人数的增多只能说明每个人的任务减少,但同时人员的增加意味着增加了开发人员之间信息交流的复杂性,可能还会影响进度。因此,人数选择的较好的比例关系是 402040 规则,即在软件开发中, 软件开发各阶段的人员配备应按照以下比例分配:编码前的工作占 40,编码占全部工作量的 20,编码后的工作占 40。402040 规则是一个指导性的参考标准,这种分配强调了软件需求分析、设计以及软件测试的重要性。软件进度计划的编制方法编制项目进度计划的常用方法有甘特图与网络计划法。甘特图法甘特图(Gantt Chart) 又称线条
36、图,是一种对各项活动进行计划调度与控制的图表,它具有简单、醒目和便于编制等特点。一般甘特图的横方向表示时间,纵方向列出工作, 主要符号及含义如图 2-4 所示。16图 2-4 甘特图中的符号及含义用甘特图编制工作计划示例如图 2-5 所示。图 2-5 甘特图示例甘特图标明了各任务的计划进度和当前进度, 能够动态反映软件项目开发进展的情况。但这种图难以反映多个任务之间存在的复杂的逻辑关系。网络计划法网络计划法是用网状图表安排与控制各项活动的方法, 可通过对网状图的分析,方便地确定完成整个工程至少需要多少时间,以及哪些子工程是影响工程进度的关键。一般适应与工作步骤密切相关、错综复杂的工程项目的计划
37、管理。网络计划法中常用的符号及含义如图2-6 所示;图 2-6 常用符号及含义一个简单的网络计划如图 2-7 所示。17图 2-7 网络计划简例网络计划方法的步骤如下。第一步:利用网络计划对项目进度进行控制, 要计算每个事件的最早时间与最迟时间。具体方法如下。事件最早时间:由始点事件顺向计算,事件j 的最早时间 Tj E 等于前一事件i 的最早时间 Ti E 加上先行活动(i,j) 的时间。例如:图 2-7 中事件 2 与事件 3 的最早时间分别为:T2E = T 1E + t 1,2T3E = T 2E + t 2,3= O + 1 = 1= 1 + 5 = 6当事件的先行活动有两个以上时,
38、 事件的最早时间按其中时间最大的活动计算。例如事件 5 取最早时间 12 与 7 中之大者,所以T5 E = 12。事件的最迟时间:由终点事件逆向计算。终点事件的TL 与 TE相等,事件 i的最迟时间 Ti 是后继事件 j 的最迟时间 Tj L 减去活动(i,j)的时间。例如:图 2-7 中事件 5 的最迟时间为:T5L = T 6L + t 5,6 = 14 2 = 12当事件开始的活动有两个以上时, 事件的最迟时间取对应路线中时间的最小值。例如:事件 4 的最迟时间取 8 与 9 中的小者,所以T4L8。第二步:确定关键路线。如果两个事件的最早时间与最迟时间相等,则称其为关键事件,由关键事
39、件联结的各个活动所组成的路线称为关键路线。图 2-7 中的关键路线为“12356” 。上述两种编制开发计划的方法, 各有特点。一般将软件开发项目的工作计划分两个层次:第一层次:按开发阶段安排,以作总体进度的控制。该层次宜采用甘特图;第二层次:按各开发阶段或子项目的工作步骤安排, 以便能在细节上安排人力,对项目进度进行控制,该层次宜采用网络计划方法。18由于软件开发项目带有不确定性与不稳定性因素, 工作计划不宜也不可能制定得过于具体,一般可在计划前预留一定的机动时间,随着计划的进行,情况会逐步明朗,因此可在计划落实过程中不断修订与充实。2.4.1.4软件成本在计算机发展的初期,软件成本在整个计算
40、机系统的成本中仅占很小的比重,软件成本概算中即使出现数量级的误差, 影响也不大。但如今大多数系统中,一个软件的成本误差可能会造成盈利和亏损间的巨大差异,导致严重的后果。由于影响软件成本的变化因素很多,因此对成本的估算也存在很大的困难。软件价格计算不可能是精确的,许多可变因素都可能影响软件的最终价格。但是,可以采用一系列的方法对软件价格进行估算,从而使估算的结果基本上是可以接受的。有关软件成本估算详见 2.5 节。2.4.2复审软件计划在实施软件计划之前, 应该对软件计划的主要内容, 包括人员安排、 进度安排、成本估算和开发资源保证进行复审。 复审中涉及有关软件工作范围和软、硬件资源问题时,应该
41、邀请用户参加,用户可提出建议,并与软件开发人员协商以确定最终内容。复审内容可以分为管理与技术两个方面。管理方面主要考虑的问题如下。计划中描述的工作范围是否符合用户的需求?计划中对资源的描述是否有效、合理?系统开发存在哪些风险?计划中系统开发成本与进度要求是否合理?计划中人员的安排是否合理?技术评审要求考虑的问题如下。系统的任务划分是否合理?系统的功能复杂性是否与开发风险、成本、进度一致?系统规格说明是否为后续的开发提供了足够的依据?系统规格说明中关于系统性能的要求是否恰当?经过评审,如果需要对软件计划进行修改,则必须由分析员 ( 计划制定者)重新查看用户需求文档,然后再根据复审提出的问题或修改
42、要求进行修订,形成最终指导软件开发实施的计划文档。2.5 成本/ 效益分析开发一个软件系统实际上是一种投资,期望将来获得更大的经济效益。软件系统的经济效益通常表现为减少运行费用或 ( 和) 增加收入。但是,投资开发新系统往往要承担一定风险,因为系统的开发成本可能比预计的高,效益可能比预期的低。成本/ 效益分析的目的正是要从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地做出是否投资于这项开发工程的决定。而为了对比成本和效益,首先需要估计它们的数量。2.5.1成本估算19为了使开发项目能够在规定的时间内完成,而且不超过预算, 成本估算和管理控制是关键。成本估算是软件费用管
43、理的核心,也是软件工程管理中最困难、最易出错的问题之一。下面介绍一些常用的成本估算方法。自顶向下成本估算这类方法基于软件的整体。 根据被开发项目的整体特性, 首先估算出总的开发成本,然后在项目内部进行成本分配。因这类估计通常仅由少数上层 ( 技术与管理) 人员参加,所以属于专家判断的性质。 这些专家依靠从前的经验,把将要开发的软件与过去开发过的软件进行比较,以估计新的开发软件所需要的工作量和成本。自顶向下估计的缺点是, 对开发中某些局部的问题或特殊困难容易低估, 甚至没有考虑到。如果所开发的软件缺乏可以借鉴的经验,在估计时就可能出现较大的误差。当参加估计的专家人数较多时,可采用特尔斐 (Del
44、phi) 法来汇集他们的意见。特尔斐(Delphi) 法的传统做法是: 把系统定义文件或规格说明发给各位专家,各自单独进行成本估计,填入成本估计表 ( 见图 2-8) 。图 2-8 特尔斐成本估计表然后由协调人综合专家意见,摘要通知大家,并开始新的一轮估计。这种估计要反复多次,直到专家们的意见接近一致为止。自底向上成本估算与自顶向下估计相反, 由底向上估计不是从整体开始, 而是从一个个任务单元开始。其具体做法是,先将要开发的系统分解为若干个子系统,子系统又分成若干个功能模块,功能模块再分成若干个子模块,直到每一任务单元的内容都足够明确为止。然后把各个任务单元的工作量和成本估算出来,汇合成项目的
45、总成本。由于任务单元的成本可交给各该任务的开发人员去估算,得出的结果常比较实际。这种方法也有缺点。 由于具体工作人员往往只注意到自己范围内的工作, 对综合测试、质量管理和项目管理等涉及全局的费用可能估计不足, 甚至完全忽视。因此,就会有可能使成本估计偏低。基于代码行的成本估算与其他商品比较, 软件成本估算的特殊性是软件生产过程的非实物性。软件20的开发过程也是软件的生产过程。软件是高度知识密集型的产品,开发过程中,几乎没有原材料或者能源消耗,设备折旧所占比例很小。因此软件生产的成本主要是劳动力成本,即软件开发全过程以劳动力消耗为主的全部代价作为软件成本。因此软件生产率是软件成本估计的基础。常用
46、的软件成本估算计量单位有:源代码行交付的可运行软件中有效的源程序代码行数,通常不包括程序中的注释。工作量指完成一项任务所需的程序员平均工作时间,其单位可以是人月(PM)、人年(PY)或者人日(PD)。软件生产率开发全过程中单位劳动量能够完成的平均软件数量。例如,一个软件的开发中工作量分配估算数据如表2-3 所示:表 2-3 工作量分配估算表若共交付源代码2900 行,其中包括 500 行系统演示和测试代码,则生产率是:生产率 = 2400行/9PM = 267 LOC/PM (LOC:Line Of Code)软件生产率不仅可以用于成本估算,也可以用于软件计划的进度估算。行代码估算方法是比较简
47、单的定量估算方法。通常根据经验和历史数据估计系统实现后的各功能的源代码行数,然后用每行代码的平均成本相乘得到软件功能成本估算。每行代码的平均成本取决于软件复杂程度和开发人员的工资水平。如果用软件生产率相乘,则得预期开发期。进行功能或者任务分解,则可以估计开发进度。任务分解成本估算首先把软件开发工程分解为若干个相对独立的任务, 再分别估计每个单独的开发任务的成本,最后加起来得出软件开发工程的总成本。 估计每个任务的成本21时,通常先估计完成该项任务需要用的人力,以人 月为单位,再乘以每人每月的平均工资而得出每个任务的成本。通常按开发阶段划分任务。 如果软件系统很复杂, 由若干个子系统组成, 则可
48、以把每个子系统再按开发阶段进一步分成更小的任务。应该针对每个开发工程的具体特点, 并且参照以往的经验尽可能准确地估计每个阶段实际需要使用的人力,包括编制文档需要的人力。 表 2-2 给出了各阶段在生命周期中所占百分比。表 2-4 各阶段在生命周期中所占百分比任务分解技术步骤如下:确定任务,即每个功能都必须经过需求分析、设计、编码和测试工作。确定每项任务的工作量,估算需要的人月数。找出与各项任务的对应的劳务费数据,即每个单位工作量成本(元/人月)。因为各阶段的劳务费不同, 需求分析和概要设计阶段需要较多的高级技术人员;而详细设计、编码和早期测试要求较多初级技术人员,而他们的劳务费是不同的。计算各
49、个功能和各个阶段的成本和工作量,然后计算总成本和总工作量。经验统计估算模型参数方程静态单变量模型的一般形式:代价 = C1x( 估计特点)X exp(C2)式中代价可以是工作量、需要人数、项目持续时间等;估计特点通常是估计源代码行数。例如Walston-Felix模型为:工作量 E = 5.2L 0.91 (PM)22项目时间 D = 4.1L 0.35 ( 月)源代码长 L = 2.47E 0.36 ( 月)程序员人数 S = 0.54E 0.6 ( 人)文档资料 DOCL = 2.47E0.35 ( 页)其中 L 为估计目标程序指令代码条数,对于高级语言源程序, 应该在不包括程序注释、编译命令的前提下,将所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年国家公务员录用考试《申论》真题(地市卷)及答案解析
- 中班 秋天课件
- 2024年1月福建省普通高中学业水平合格性考试化学试题(原卷版)
- 社区少先队课件
- 苏教版科学课件
- 西南林业大学《材料研究及分析方法实验》2022-2023学年第一学期期末试卷
- 西京学院《新媒体短视频运营实训》2023-2024学年第一学期期末试卷
- 西京学院《前端开发技术》2021-2022学年期末试卷
- 颌下腺结石课件
- 西京学院《句法学概论》2022-2023学年期末试卷
- 辽宁交投物产有限责任公司招聘笔试题库2024
- 合肥包河区人力资源开发有限公司招聘笔试题库2024
- 4.2.2指数函数的图像和性质教学说课课件高一上学期数学人教A版
- 肺结节诊治中国专家共识(2024年版)解读
- GB/T 44464-2024汽车数据通用要求
- 2024-2025一年级上册科学教科版1.6《校园里的植物》课件
- 统编版(2024新版)七年级上册道德与法治第九课第一框《增强安全意识》教学设计
- 老旧小区整体改造施工投标方案(技术标)
- 新湘教版八年级上数学复习计划
- GB/T 44200-2024建筑垃圾再生骨料生产成套装备技术要求
- 幼儿园小班科学活动《小手摸一摸》课件
评论
0/150
提交评论