在软件项目早期,需要对软件问题进行高层构架分析,以确定项目的可行性。还需要根据 可行性分析的结果制定出有效的项目实施计划,以指导软件项目的顺利开展。

一、计算机系统分析

当某个软件问题被作为项目提出时,即意味着,这个软件问题将成为一项工程任务,需要按照工程化作业流程来分阶段解决。其中,计算机系统分析是软件项目工程化作业流程中首先 需要进行的预备性工作,它以整个计算机系统作为分析背景,由此得到对有待开发的软件系统 及其工作环境的全貌性的了解。

1.计算机系统

系统是一个群体概念,一个事物若被称为系统,则表明这个事物之内包含有许多元素。系统由元素组成,但系统并不是其所包含的元素的简单组合,而是一个有机整体,其内部元素之间相互关联、协同工作,具有一致的任务目标。 有些系统是简单的,比如钢笔,它仅由笔尖、吸墨器、笔杆、笔套等简单零件组成,其构造可以一目了然。然而有些系统则是复杂的,比如汽车,具有复杂的内部构造。 一般来说,比较复杂的系统大都具有分层构造,其内部元素也具有系统特征,可以作为子系统看待。计算机系统就是一个非常复杂的系统,包含有:硬件系统、软件系统、网络通信系统、人工操作系统等诸多子系统,而其中的软件系统又由操作系统、数据库系统、应用程序等更小的系统元素组成,如图 3-1 所示。

软件工程之项目分析与规划-风君雪科技博客

计算机系统还是一个具有智能特性的开放系统。计算机的智能特性就是通过它的软件系统 提供的,一个新的软件的诞生,实质上也就是计算机又得到了一次智能扩充。

2.系统分析法

软件项目是基于计算机的系统工程,因此,针对软件项目的系统分析需要以计算机这个更大的系统为背景进行,需要将软件问题放置到整个计算机系统中去看待。因此,针对有待开发的软件系统的前期分析,也就不只是软件系统本身了,它还需要分析与有待开发的软件系统有 关的其他方面的问题,例如,硬件环境、网络环境、支撑软件等。 系统分析是对项目的高层分析,需要得到的是系统的基本框架。因此,系统分析并不需要对有待开发的软件系统的内部构造作出过多的研究,但需要对系统按能够独立工作的组件或子系统为单位进行分解,由此使系统能够从它所处的环境中分离出来,其结果将作为划分系统边界与确定系统框架结构的基本依据。 系统分析也不需要研究有待开发的软件系统的控制机制,但却有必要以独立组件或子系统为单元,研究系统的工作流程、系统与外界的数据通信。 具体说来,系统分析可以从以下几个方面对软件及其相关问题作出描述:

(1)软件系统的规模大小、功能范围。

(2)软件系统对硬件环境、网络环境、数据环境和支撑软件的依赖。

(3)软件系统中有关安全保密问题的考虑。

(4)软件系统与其他相关系统之间的数据通信。

(5)软件用户,包括:用户单位的组织结构,与软件有关的用户的工作流程。

3.建立系统模型

建立系统模型,也就是以作图方式对系统进行直观的描述。计算机系统前期分析过程中使用得比较多的图形模型有:系统框架图、系统流程图。其中,系统框架图用于描述系统的基本 框架,系统流程图用于描述系统的基本工作流程。下面分别加以介绍。

  (1)系统框架图

系统框架图使用矩形与带箭头的线段来描述系统的基本体系构造,能够用来描述系统的逻辑框架。 系统框架图中的矩形用于表示构造系统的组件或子系统,线段则用于表示组件或子系统之 间的关系。

例如图 3-2 所示的自动阅卷系统的系统框架图,

软件工程之项目分析与规划-风君雪科技博客

它所表达的是:自动阅卷系统由成 绩数据库、读卡程序、阅卷程序、成绩查询程序、成绩分析程序、成绩单打印程序和成绩备份 程序组成,并以成绩数据库为核心构建。 一般情况下,可以使用系统框架图说明系统的功能分配和划分系统边界。

(2) 系统流程图

系统流程图被用来描述系统的工作流程,以系统中的物理组件为单元说明系统的基本构造,并由此说明系统对数据的加工步骤。表 3-1 所列是系统流程图中常用的图形符号。

软件工程之项目分析与规划-风君雪科技博客

显然, 系统流程图中的符号是一些可以从系统中分离出来的物理元素,例如,设备、程序模块、报       表等。

 图 3-3 是关于“自动阅卷系统”的系统流程图,它所表达的是:阅卷系统首先通过读卡程序读入考试答题卡片上的数据,然后经过阅卷程序计算出成绩并存入成绩数据库,在产生出成绩数据之后,系统可以通过成绩查询程序、成绩分析程序、成绩单打印程序和成绩备份程序, 对成绩数据库中的数据进行相关操作。 显然,与系统框架图比较,系统流程图包含了更多的数据加工细节,并能通过物理元素表现系统的物理构架,以及与外部接口的连接通信等。

软件工程之项目分析与规划-风君雪科技博客

二、项目可行性分析

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)成本估算中的其他因素

软件成本主要是工作成本,上述对软件成本的估算主要是基于软件开发的任务量计算的。 尽管如此,软件项目中的其他因素也不能完全忽略不计,例如,计算机硬件设备费用,软件资 源费用,差旅培训费用,开发场地、电力和网络通信费用等。在项目初期制定项目预算时,需 要将诸多问题逐项列出,以防止由于计算遗漏而造成项目实施过程中出现经费短缺现象。 实际项目中,影响项目成本的因素可能更多,例如,软件的应用领域、开发环境、开发队 伍、国家差别等。实际上,影响软件成本的诸多因素大都是一些模糊因素,这使得对项目成本 的估算不可能很精确。为了避免成本估算中出现大的偏差,对成本的估算还可以考虑采用其他 不同方法,并有必要运用统计技术。例如,邀请多位软件技术和应用领域方面的专家,由他们 分别用其所熟悉的方法对项目做成本估算,然后再进行成本统计分析。 为了提高成本估算的准确性和便利性,开发机构有必要根据自己的项目经验或有关资料, 建立项目成本模型,并依靠有关模型参数使诸多经验数据在成本估算中产生作用。其中,项目 的类型、规模、难度、应用领域等,都可以作为量化参数。另外,在项目具体实施以后,还需 要根据项目的实际进展情况和项目的需求变动等情况,对项目成本进行修正,这可以使对项目 成本的估算更加接近实际。

2.项目效益分析

无论是开发机构或是用户,都会关心项目效益,但值得注意的是,开发机构的效益直接来源于软件产品,而用户的效益则来自于对软件的应用。并且不同的软件产品会有不同的效益来源,例如,软件机构自主开发的通用软件和用户委托开发的定制软件,它们在效益来源上就分别有各自不同的途径。 通用软件由软件机构自主开发,然后投放到软件市场上销售。开发机构的最低期望可能是, 软件在销售中所获取的直接经济利益至少能超过软件的开发成本,以保证收回投资。对于通用软件,开发机构大都需要在开发软件之前进行深入的市场分析,看软件市场是否已有了同类型 的产品,假如已有同类型产品,则要看开发的产品在功能、性能、价格等方面是否具有市场优 势等。 而对于由用户委托开发的软件项目,开发机构的效益则取决于用户对项目的资金投入与软 件实际成本的差额值,其计算看起来是简单的。但是,这些项目由于完全由用户进行巨额投资, 其效益也就必然受到用户的特别关注,所以计算起来非常复杂。用户的期望可能是,花费巨额 资金开发出来的软件在其使用过程中能够提高工作效率、改善工作质量、节约工作成本、拓宽 业务领域等,由此带来的间接经济效益至少能够超过软件的开发成本。

在计算项目的经济效益时,还不得不注意到,软件的经济效益是在软件投入使用之后的若 干年里逐渐产生出来的,而资金投入则是当前之事。为了更加合理地计算资金效益,未来效益 中产生的资金需要折算为现值进行计算。 资金折现公式是:    

资金折现值 = 资金未来值 / ( 1 + k ) n
 其中, k 是银行利率; n 是年份。 可以使用一些经济指标来衡量项目的经济效益,其主要经济指标有:

(1)纯收入:指软件在估算的正常使用期内产生的资金收益被折算为现值之后,再减去项 目的成本投入。

(2)投资回收期:指软件投入使用后产生的资金收益折算为现值,到项目资金收益等于项 目的成本投入时所需要的时间。

(3)投资回收率:指根据软件的资金收益进行利息折算,可以将其与银行利率做比较。 显然,若项目的投资回收期超过了所开发软件的正常使用期,或项目的投资回收率低于银行利率,或纯收入为负值,则项目在经济效益上不具有可行性。 例如某“企业资源综合管理系统” 的开发。假设开发过程中,人力、设备、支撑软件等 各项成本总计预算是 20 万,计划一年开发完成并投入使用。表 3-5 所列为预计有效 5 年生命期 内的逐年经济收益与折现计算。其中,银行年利率按 6%计算。

软件工程之项目分析与规划-风君雪科技博客

由表 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)项目进度表 项目进度是基于里程碑制定的,可以使用进度图表来描述项目进度。甘特图表是一种常用 的项目进度图表,可以直观地描述项目任务的活动分解,以及活动之间的依赖关系、资源配置 情况、各项活动的进展情况等。