在软件项目早期,需要对软件问题进行高层构架分析,以确定项目的可行性。还需要根据 可行性分析的结果制定出有效的项目实施计划,以指导软件项目的顺利开展。
一、计算机系统分析
当某个软件问题被作为项目提出时,即意味着,这个软件问题将成为一项工程任务,需要按照工程化作业流程来分阶段解决。其中,计算机系统分析是软件项目工程化作业流程中首先 需要进行的预备性工作,它以整个计算机系统作为分析背景,由此得到对有待开发的软件系统 及其工作环境的全貌性的了解。
1.计算机系统
系统是一个群体概念,一个事物若被称为系统,则表明这个事物之内包含有许多元素。系统由元素组成,但系统并不是其所包含的元素的简单组合,而是一个有机整体,其内部元素之间相互关联、协同工作,具有一致的任务目标。 有些系统是简单的,比如钢笔,它仅由笔尖、吸墨器、笔杆、笔套等简单零件组成,其构造可以一目了然。然而有些系统则是复杂的,比如汽车,具有复杂的内部构造。 一般来说,比较复杂的系统大都具有分层构造,其内部元素也具有系统特征,可以作为子系统看待。计算机系统就是一个非常复杂的系统,包含有:硬件系统、软件系统、 络通信系统、人工操作系统等诸多子系统,而其中的软件系统又由操作系统、数据库系统、应用程序等更小的系统元素组成,如图 3-1 所示。
它所表达的是:自动阅卷系统由成 绩数据库、读卡程序、阅卷程序、成绩查询程序、成绩分析程序、成绩单打印程序和成绩备份 程序组成,并以成绩数据库为核心构建。 一般情况下,可以使用系统框架图说明系统的功能分配和划分系统边界。
(2) 系统流程图
系统流程图被用来描述系统的工作流程,以系统中的物理组件为单元说明系统的基本构造,并由此说明系统对数据的加工步骤。表 3-1 所列是系统流程图中常用的图形符 。
二、项目可行性分析
1.可行性分析意义
(1)通过少量的费用,对项目能否实施尽早作出决断,以避免项目开展以后所带来的大量 的人力、物力和时间的浪费。
(2)根据项目所受到的条件限制,对有待开发的系统在体系构造、工作模式等方面作出高层抉择,以利于项目今后的实现。
(3)可以把可行性分析看作软件定义时期需要进行的前导性工作,其结果可以作为一个高 层框架被用于软件需求分析过程之中,以方便今后软件规格定义工作的顺利开展。
2.可行性分析内容
软件开发总是离不开对软件中技术因素的考虑。但是,当软件问题成为工程问题时,它还将受到来自项目费用预算、开发期限和应用环境等其他方面因素的制约。因此,对软件项目的可行性分析,也就包括了技术、经济、应用等诸多方面的分析。
(1) 技术可行性
技术可行性是关于软件项目技术问题的高层策略,涉及对有待开发系统的高层技术构架的 探索。技术可行性需要确认的是:项目所准备采用的技术是先进的、成熟的,能够充分满足用户系统在应用上的需要,并足以从技术上支持系统的成功实现。 对技术可行性的判断是基于软件开发者可能采用的技术而提出的,并需要从技术与技术资 源这两个方面作出可行性评估。
a.技术限制。一般来说,用于开发软件的技术会受到先进性、成熟度等因素的限制。
例 如,软件技术的先进性与成熟度是否能够保证开发出来的系统达到预期的功能、性能、安全等技术目标。其中,技术的先进性与成熟度是两个需要平衡考虑的技术因素。例如,开发者可能希望使用一种刚刚诞生不久的新技术,以使所开发的系统能够获得技术先进性所带来的开发上 的便利,并使系统获得更好的应用效果。但是,刚诞生的新技术却有可能缺乏使其成熟的比较 充分的工程验证,因此有可能会给项目带来比较高的技术风险。
b.技术资源限制。这是指开发机构对所采用的技术的把握程度方面的限制。
例如,开发人员对技术的熟练程度,开发机构目前所拥有的软件资源、设备、工程经验和能够得到的技术支持等。显然,尽管将采用的技术既先进又成熟,但假如开发机构刚刚使用这种技术不久,其 在该项技术的应用上工程经验还积累得不够,技术资料也相对比较缺乏,那么,从工程角度考 虑,它仍有可能不具备可行性。
(2)经济可行性
(3) 应用可行性
应用方面的可行性将涉及法律法规、用户操作规程等方面的问题。法律法规方面的问题有: 开发的软件会不会构成法律侵权,会不会跟国家的相关政策、法律发生冲突,开发者、用户双 方的职责和权利有没有通过合同等法律形式明确体现出来等。用户操作规程方面的问题有:用 户单位的组织结构、与软件有关的用户工作流程、用户在计算机应用上的素质等。 软件是开发给用户使用的,因此应该考虑所开发的软件是否能够跟用户单位已经形成的管理模式、工作流程、操作方式等保持良好的协调。例如,基于传统的 C/S 结构的局域 上的信 息系统,由于具有较好的工作性能和便利的操作方式,而且技术成熟、容易实现,它比较适合 一些地域集中的企业的信息化管理。但是,一个跨区域的企业,由于需要通过互联 进行通信, C/S 结构就可能不太合适了,更加合适的结构可能是基于 B/S 结构的 Web 信息系统。
3.可行性分析过程
可行性分析的一般步骤是:建立系统模型,进行项目可行性评估,撰写可行性分析 告。 下面将介绍这几个步骤。
(1) 建立系统模型
可行性分析所针对的是一个尚未创建的新系统,为了使可行性分析具有研究对象,在进行 可行性评估之前有必要先建立起该系统的工作模型。 建立系统模型可以按照以下步骤进行。
a.研究现有系统的物理模型。有足够的理由使人相信,新的系统将建立在现有系统基础 之上。例如,新系统与现有系统由相同的用户使用,新系统与现有系统涉及了一些相同的工作内容,现有系统积累下来的数据,将要由新的系统继续给予维护等。因此,在建立新系统模型 时,有必要研究现有系统的工作模型。 需要注意的是:现有系统是一个处在工作状态的现实系统,因此,对现有系统的研究,可 以从它的物理模型着手,例如,可以使用系统流程图来对它做直观的物理描述。
b.导出现有系统的逻辑模型。对现有系统的研究是为了更加合理地对新系统提出可供参 考的实施方案,但是,物理模型是一种相对固化的模型,当需要由现有系统对新系统进行推断时,物理模型不如逻辑模型灵活。因此,为了更方便地构造新系统的工作模型,有必要将现有 系统的物理模型转化成为它的逻辑模型,例如,从现有系统的系统流程图模型推导出它的数据流图模型。
c.设想新系统的逻辑模型。逻辑模型具有变通性,因此,可以将现有系统的逻辑模型作 为前提条件,并以新系统需要获得的功能为目标,对新系统的逻辑模型作出合理的设想。
d.提出新系统的物理模型。可行性研究是对项目能否实施、软件能否实现的可行性评估。 由于软件系统的实现最终都将体现为某种具体的物理形态,因此,为了使得可行性研究所提出 的建设性意见更加具有可信度,还需要以系统的逻辑模型为依据,提出有关系统的物理模型。 需要注意的是:由于逻辑模型所体现出来的只是系统的功能构架,往往可以采用许多种不 同的物理方案给以具体实现。因此,基于同一个逻辑模型,有必要提出几个适当的物理模型供 项目参考。
(2)进行可行性评估
随着系统初步模型的产生,可行性分析已经有了一个适当的研究对象。 在新系统的物理方案被提出来以后,接下来需要进行的工作就是针对所提出的物理方案,从 技术、经济、应用等方面进行可行性评估,并由此归纳出对于软件项目的总的可行性评估结论。 下面是一些可供参考的可行性评估结论:
a.项目各方面条件都已经基本具备,并能够产生很好的影响或获取有效的成果,建议立即着手实施项目。
b.主要条件已基本具备,但准备工作仍显得不充分,例如,项目管理中还缺少专门的质 量监控机构,有关技术资源不够充分等,建议在相关条件得到进一步完善之后,再着手实施项目。
c.项目实施的基本条件不具备,例如,项目资金缺口太大、项目技术难以在限定时间内 有所突破等,建议中止项目。
(3) 撰写可行性分析 告
三、项目成本效益分析
经济可行性研究是对项目实施成本和所能带来的经济效益的分析,以确定等待实施的项目 是否值得投资。
1.项目成本估算
在项目初期,无论是进行可行性分析,还是制定项目预算,或是向客户提供软件 价,都 需要针对软件项目进行成本的初步估算。下面将要介绍的是一些常用的软件项目成本估算方法。
(1)基于软件规模的成本估算
传统的软件规模是通过代码行数计算的。也就是说,通过估算软件代码总行数,可以计算 出创建软件的总工作量和软件总成本。 基于软件代码行数的人力成本估算公式是:
WC = ( TCL / MPACL ) × MPAP
计算公式中的 WC 是软件工作成本, TCL 是软件总代码行数, MPACL 是以参入项目所有人员 为基数计算的每月人均完成的代码行数, MPAP 是以参入项目所有人员为基数计算的每月人均工 资。其中,参入项目所有人员既包括技术人员,也包括管理人员。 在对软件代码行数进行估算时,往往需要先将软件按功能进行分解。例如,可以将软件系 统按照功能分解为许多子系统,子系统又可以继续分解为许多功能模块,这种对软件系统的分 解工作可以一直进行到基本模块。应该说,基本模块的代码行数是比较容易估算的,而通过对 基本模块代码行数进行估算与累计,可以估算出整个系统的总代码行数。 代码行数估算方法比较适合一些需求比较容易确定,并且采用传统开发工具(例如:汇编 语言、C 语言等)开发的系统。但在目前,更多的应用项目是面向用户的,项目非常庞大,软 件需求在项目初期也往往只有一个框架。开发这些系统所采用的开发工具则一般是面向对象或 基于组件的,例如:C++、Java、Visual Basic 等;并且在软件实现过程中,还有可能会大量 地应用到诸多重用技术,例如,将一些已经存在的对象或组件引用到当前新的项目之中来。这 些都给代码行数估算方法带来了困难。对于这样的软件系统,一种更加合适的软件规模估算是 基于面向用户的应用对象进行的,例如,用户的操作窗口、提供打印的数据 表、用于数据计 算的功能组件、数据库中的数据表或数据视图等。这个时候,诸多复杂程度不同的应用对象可以采用合适的对象点数加以标识,例如,简单的用户窗口其对象点数取“1”;中等复杂程度的 用户窗口其对象点数取“2”;而非常复杂的用户窗口其对象点数则可以取“3”等。 显然,比起传统的代码行数估算方法来,基于应用对象的软件规模估算,能够更加方便地 在项目初期对那些只是进行了高层结构描述的软件系统进行成本估价。 基于应用对象的人力成本估算公式是:
WC = ( (∑ ( NOP ( 1 - R ) ) ) / PROP ) × MPAP
计算公式中的 WC 是软件工作成本, NOP 是应用对象的对象点数, R 是构造应用对象的代码 复用率, PROP 是以参入项目所有人员为基数计算的每月人均完成的对象点数, MPAP 是以参入项 目所有人员为基数计算的每月人均工资。其中,参入项目所有人员既包括技术人员,也包括管理人员。
(2)基于任务分解的成本估算
这是一种以项目任务的人力消耗为依据的成本估算方法。可以把项目任务分解成诸多活 动,例如,按照工程过程将项目任务分解成需求分析、概要设计、详细设计等若干个阶段,然后根据每个阶段的人员配备、周期长短和阶段任务参加人员平均工资情况,而估算出每个阶段 的人力成本,由此累计出项目总成本。 例如为某企业开发“企业资源综合管理系统”时考虑按表 3-2 所列进行人员配备。
由表 3-5 可以推算出以下结果:
(1)纯收入 = 293 600–200 000 = 93 600(元)。
(2)投资回收期 = 3 + ( 200 000 – 47 000 – 71 200 – 67 200 ) / 63 200 = 3.23(年)。
(3)投资回收率的计算则相对比较复杂,需要通过一个高阶代数方程才能计算出来。当前 软件问题的投资回收率计算的高阶代数方程是: 5 / (1 + j ) + 8 / (1 + j )2 + 8 / (1 + j )3 + 8 / (1 + j )4 + 6 / (1 + j )5 =20
四、项目规划
专业的软件开发总是要受到成本预算、工程进度、质量要求等因素的制约。因此,开发机构在项目实施之前需要对项目作出全面的规划,并通过计划书的形式明确体现出来。一些常用的项目计划书包括:项目开发计划、验收计划、质量计划、维护计划、配置管理计划、人员计划等。 软件工程对项目的要求是计划在先、实施在后,这意味着:项目初期拟定的计划将会成为 项目开展的驱动或指南。
1.项目开发计划
当项目经过可行性评估获得通过以后,接着就应该编制项目开发计划,其涉及的内容包括:
(1)开发团队的组织结构,人员组成与分工。
(2)项目成本预算。
(3)项目对硬件、软件的资源需求。
(4)项目任务分解和每项的任务里程碑标志。
(5)基于里程碑的进度计划和人员配备计划。
(6)项目风险计划。
(7)项目监督计划。
项目开发计划需要给出影响软件项目的各项约束条件,例如:项目交付期限、现有的人员情况、项目总体预算等。但是,项目初期的问题往往是比较模糊的,项目进行过程中也有可能 出现一些没有预料到的问题。因此,制定开发计划时应该有一定的灵活性,以保证当项目进行 过程中出现偶然事件或没有完全按计划达到预期目标时,能够对计划做适当的调整。 当需要调整的计划和用户所提出的要求发生矛盾时,就不得不和用户进行协商了。为了避 免或减少出现这些问题,有经验的项目管理者在项目初期制定计划时往往会保持一种低调,他 会把各种不利因素尽量考虑进去。
2.项目进度表
项目进度是基于里程碑制定的,例如,可行性分析、需求分析、概要设计等。每一个里程碑都将产生明确的结果导出。通过里程碑来管理项目进度,其好处是能够使对项目的管理落实到项目过程中的每一个关键点上去,由此达到对项目的微观管理的目的。 在安排项目进度时,需要估算完成各项活动所需的时间和资源,并按照一定的顺序把它们 严密地组织起来。除非进行进度安排的项目与原来的项目相似,否则新的项目进度不能沿用原来的安排。由于不同的项目可能使用不同的设计方法和实现语言,使得对资源和时间的估算更 为复杂。 项目进度需要把项目中的所有工作分解为若干个独立的活动,并需要判断完成这些活动所需的时间。通常,有些活动需要并行进行,以保证人力资源得到充分利用。在安排进度时,关键任务要重点考虑,要避免因某项关键任务没有完成而使整个项目延期交付的情形出现。 正常情况下项目的各项活动应该至少持续一个星期。因此,项目进度中的活动可以以“周” 为单位计量,更细的计量划分则意味着在项目进度的估算和进度表的修订上会花掉太多时间。 项目进行过程中难免有偶然事件发生。例如,做这个项目的个别人员可能生病或离职,设 备可能会出故障,按计划需要配备的一些基本支持软件或硬件有可能没有按时配备等。如果这是个新项目并且技术先进,还有可能遇到没有预计到的技术困难。因此,在估算进度时,需要有一定的时间宽松。各项活动之间还应该有短暂的时间间隔,以利于活动的过渡。
可以使用进度图表来描述项目进度。其中,甘特图表是一种比较常用的进度图表,可以直 观地描述项目任务的活动分解,以及活动之间的依赖关系、资源配置情况、各项活动的进展情 况等。 甘特图表使用条形图表示每项活动的开始、结束时间以及活动进展,通过链接的箭头线可 以表达活动之间的依赖关系,还可以通过表格对每项活动进行详细的描述。例如图 3-4 中的甘特图,能够清楚地展现某“人力资源管理系统”开发过程中各项活动的时间安排,活动之间的 依赖关系,以及各项活动的进展情况

小 结
1. 计算机系统分析
(1)计算机系统 计算机系统是一个非常复杂并具有智能特性的开发系统,包括:硬件系统、软件系统、 络通信系统、人工操作系统等诸多子系统。
(2)系统分析 系统分析是对软件项目的高层分析,需要获取的是有关系统的框架描述,并需要使系统从 它所处的环境中分离出来,为划分系统边界与确定系统构架提供依据。
(3)系统分析模型 分析模型是指采用作图方式对系统进行直观的描述。系统前期分析过程中经常使用的图形 模型有系统框架图和系统流程图。其中,系统框架图用于说明系统的基本构造框架,而系统流 程图则用于表现系统的基本加工流程。
2. 项目可行性分析
(1)意义
? 以少量的费用对项目能否实施尽早作出决断。
? 根据项目条件限制,对系统的体系构造、工作模式等作出高层抉择。
? 其结果可作为一个高层框架被用于需求分析之中。
(2)分析内容
? 技术可行性:从技术与技术资源这两个方面作出可行性评估。
? 经济可行性:从项目投资和经济效益这两个方面作出可行性评估。
? 应用可行性:从法律法规、用户操作规程等方面作出可行性评估。
(3)分析过程
? 建立系统模型。
? 进行可行性评估。
? 撰写可行性研究 告。
3. 项目成本效益分析
(1)项目成本估算方法:基于软件规模的成本估算;基于任务分解的成本估算。
(2)项目效益分析指标:纯收入;投资回收期;投资回收率。
4. 项目规划
(1)项目开发计划 项目开发计划涉及的内容包括:
? 开发团队的组织结构,人员组成与分工。
? 项目成本预算。
? 项目对硬件、软件的资源需求。
? 项目任务分解和每项的任务里程碑标志。
? 基于里程碑的进度计划和人员配备计划。
? 项目风险计划。
? 项目监督计划。
(2)项目进度表 项目进度是基于里程碑制定的,可以使用进度图表来描述项目进度。甘特图表是一种常用 的项目进度图表,可以直观地描述项目任务的活动分解,以及活动之间的依赖关系、资源配置 情况、各项活动的进展情况等。
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成表32933 人正在系统学习中 相关资源:基于Devexpress的winform开源框架(伍老师de)_devexpresswinform…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!