【软件工程】软件开发精打细算——可行性研究

日常生活中有很多精打细算的例子。说到精打细算,想起了一个小笑话:妻子用白灰反复地粉刷房间。丈夫生气地大叫:“够了!太浪费了!”妻子得意地说:“你知道什么呀,这白灰是白送的!”丈夫摇着头说:“笨蛋!就算白灰不要钱,那也应该刷外面,这里面刷了一层又一层,房间比原来小多了。”

假如要开一个超市,就不得不考虑超市的地理位置、环境、投入与收益等问题,这些问题都直接关系到超市能不能开。同样,在软件开发前也要经过精打细算那样的过程——可行性研究。

软件可行性研究是什么?有什么必要性吗?

简单来说,项目在开始之前要先确定能不能做,值不值得做。它不仅可以降低软件开发风险,也决定了后续开发是否进行。

那么,可行性研究如何做呢?

从宏观方面看,根据系统的要求,采取“三步走”来进行可行性研究,即需求获得—系统定型—分析报告

首先来看需求获得。根据新系统的目标和功能,采用初步调查和对现行系统研究来获得新系统的需求。

在初步调查中,由开发方的项目经理、市场调研人员以及广大用户参与共同合作完成。项目经理负责制定调查计划,最后获得所需信息;调研人员在调查后将资料分类、汇总到《需求调研记录》的文件中。

另一种方法是对现行系统的观察分析来得到新系统功能的基本需求。现行系统可能的三种类型:完全手工的、半自动化的和自动化的。 不管是哪一种,都可以从中发现新系统所需要的信息,并且找出现有系统的优缺点,得出新系统的雏形。

对比这两种方法,感觉后一种是获得系统需求的不错的捷径。

其次,来看关键的第二步——系统定型。

这个阶段有四个部分,对系统定型起到了决定性的作用。

在定义这个部分,根据第一步获得的资料来确定系统的规模,数据和功能等。

根据以上定义结果,将新系统的功能结构和他们之间的数据处理关系用图形表示出来,就构成了新系统的逻辑模型。 开发方法的选择关系到图形的描述。 若系统开发时采用结构化开发方法,则可用功能模块图、系统流程图表示逻辑模型;若用面向对象开发方法,则可用用例图和类图来表示逻辑模型。

前两步都是开发人员根据对系统的理解做出来的,做的怎么样,还得用户说了算。 那就是在第三部分要看看用户的态度了。 用户审查就是看看这个模型是否存在不符合自己需求的地方,或者遗漏的地方。

确定了符合用户要求的逻辑模型后,下面就要说怎么干的事了。 分析员给出了几个可供选择的方案。要从技术、经济、操作等方面综合分析,得出最佳的方案。

最后一步,就要写可行性分析报告了,经过上面两步,接下来应该把上面设计到的东西整理一下,写成一个报告交给领导和用户进行审批。 这个报告如何写,写成什么样子呢?

可行性分析报告需要写的非常详细,我就把这个报告中大致的逻辑说明一下了。每个环节在上面的总结中都提到了,我就不细说了,最后说一下结论性意见。 它主要有3种情况:

如果系统需要的条件都已成熟,且有最优方案,那么要立即开发;如果条件还不满足,但经过一段时间能够满足,那么就推迟开发。如果开发没有价值或由于某些重要因素在短时间能得不到解决,那就终止以后的开发工作。

通过以上三步的分析我懂得了可行性分析报告在系统开发中的重要地位,在以后学习中,要加以重视,训练自己在这方面的能力。

时间: 2024-08-29 19:38:40

【软件工程】软件开发精打细算——可行性研究的相关文章

软件工程—软件开发生命周期

正如任何事物一样,软件也有其孕育.诞生.成长.成熟以及衰亡的生命过程,一般称其为“软件生命周期”.把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理.通常,软件生存周期包括: 一,问题定义.要求系统分析员与用户进行交流,弄清“用户需要计算及解决什么问题”然后提出关于“系统目标与范围的说明”,提交用户审查和确认. 二,可行性研究.一方面在于把待开发的系统的目标以明确的语言描述出来,另一方面从经济.技术.法律等多方面进行可行性分析.

敏捷软件开发和传统软件工程

一.   传统软件工程 从上个世纪60年代开始,人们开始逐渐认识到了确实存在着"软件危机" 这样一个事实,软件开发人员被诸如下列问题困扰: 软件生产不能满足日益增长的需要 软件开发成本和开发进度估计往往不准确 软件开发人员和用户之间信息交流不充分,用户对完成的软件满意度很低 软件价格昂贵,软件成本在整个计算机系统中所占的比例急剧上升,软件已成为许多计算机系统中花钱最多的项目 软件质量难以保证 软件可维护性差,程序中的错误很难改正,适应性或完善性维护都极其困难 导致危机问题的一个重要原因

敏捷软件开发与传统软件工程——因果篇

因--差异之源 近来秋将尽,京中阴霾好几日不见好转,更有几天雨水扰人心烦.幸得一日周末,又逢雨过天晴,秋高气爽,捡得几番文笔来细述敏捷软件开发与传统软件工程之异同. 从字面看来,二者无非是"敏捷"与"传统"一词之差.然而这两个词又同属修饰之词,因此就这两个词之差自然就是两种开发方法的差别所在. 敏捷一词,自然是好理解.正如众人所云如游侠身手之敏捷,为称赞游侠反映之迅速,应对变化之机敏.此处用以修饰软件开发,我们亦可套用迅速应变之意,也就是在软件开发过程中能迅速应对需

敏捷软件开发VS传统软件工程

敏捷软件开发:又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新兴软件开发方法,是一种应对快速变化的需求的一种软件开发能力. 与传统软件工程相比,它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中"人"的作用. 本文将介绍敏捷软件开发的历史背景与发展,

软件工程过程 第2章 软件开发的主要活动

1.需求工程.P13 需求是任何软件开发项目的基础. 好的需求是项目成功开发的必要条件. 需求分析工作可划分为两个阶段:需求开发和需求管理.需求开发就是传统意义上的需求分析. 2.需求开发(需求分析)的目标.P13 与客户和其他涉众在系统的工作内容方面达成并保持一致. 使系统开发人员能够更清楚地了解系统需求,定义系统边界: 为软件实施计划提供基础: 为估算开发系统所需成本和时间提供基础: 定义系统用户的需求和目标. 3.需求开发阶段包括需求获取.需求分析.规格化说明和需求验证4个活动:需求管理包

软件工程:传统软件工程 vs 敏捷软件开发

前言 软件工程(Software Engineering): 是一种层次化技术. 将系统化的.规范的.可量化的方法应用于软件的开发.运行和维护,即将工程化的方法应用于软件. 研究"建立和使用一套合理的工作原则,以便经济地获得可靠的.可以在实际机器上高效运行的软件"的方法. 敏捷软件开发(Agile software development): 一种应对快速变化的需求的一种软件开发方法.基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作. 一.传统软件工程 (一)产生背景 随着

敏捷软件开发与传统软件工程

敏捷软件开发与传统软件工程 北航计算机学院 14061157 李奕成 引言 软件开发过程是软件工程中相当重要的一环.一个正确.高效的软件过程能够提高软件工程活动的稳定性.可控性和有组织性.但是,并不存在一种软件过程能够完美的适应所有的软件工程情况.因此,在不同情况下选择合适的软件开发过程显得尤为重要.现代软件工程方法必须是"灵活"的,也就是要求软件工程活动.控制以及工作方法适合于项目团队和要开发的产品. 说到软件工程.敏捷开发,就要提到软件过程的发展历史.20世纪60年代,不存在现代意

敏捷软件开发 VS. 传统软件工程

敏捷软件开发 VS. 传统软件工程 软件工程这一术语1968年被提出,之后美国软件工程专家巴利·玻姆对十多年间研究软件工程的专家学者们提出的一些准则与信条,于1983年对提出软件工程的七条基本定理,将软件工程这一学科具体化,软件工程中开发与管理软件的方法也不断完备.而敏捷软件开发于2001年由Kent Beck和其他16位知名软件开发者提出,敏捷开发是人们对于传统软件开发方式的一种提出的新的挑战.本文将具体介绍软件传统工程与敏捷软件开发两种方法,并对两者进行对比分析. 一.传统软件工程 软件工程

浅谈敏捷软件开发与传统软件工程的对比与敏捷开发产生的原因

引言 在"计算机程序的蛮荒时代",人们对于程序的设计.编写是随想随写.灵活变化的.正如我们初学各种编程语言时那样,似乎把程序写对也不是什么很难的事情.然而,这种程序设计模式或许适用于几百行至几千行的小程序,而当我们面对更大的软件规模.更多的代码行数以及更复杂的人员架构时,这种随想随写的程序开发模式似乎不再适用,于是使人们遇到了「软件危机」,进而促使了软件工程这样一门学科的产生. 在我上一门程序设计的课程的时候,老师讲过,当我们学习各种语言.算法和数据结构时,我们学习的是怎样进行&quo