摘要:对一个软件项目进行系统分析首当其冲。过去,人们将“软件”与“程序”、“开发软件”与“编程序”划等号,粗略地进行估计和设计软件产品势必会影响软件的质量和生产效率。现在,随着信息化产业的发展、软件企业的增多,尤其是当面对一些大中型的软件项目,对软件生命周期的各个环节进行系统具体的分析将更加重要。开发者首先要考虑其可行性,是否能果断当前问题或是将来是否能有更大的发展,还要有具体的规划和设计、以及形成书面的文档记录,以便开发员之间的交流;其次要害的是能否满足用户的需求,因为判定开发出来的软件是否成功的标准之一就是看它有无实用性。
当一个软件项目摆在人们面前时,进行系统的分析是首当其冲的,正如我们的一句古语:三思而后行。因此,无论做任何事都应考虑是否有意义以及它的可行性。在过去,人们将“软件”与“程序”、“开发软件”与“编程序”划等号,粗略的进行估计和设计软件产品势必会影响软件的质量和生产效率。然而现在,随着信息化产业的发展,软件企业的增多,尤其是当面对一些大中型的软件项目,对软件生命周期的各个环节进行系统具体的分析将更加重要,而且会提高软件的质量和效率。
一、软件系统开发
无论动物、植物,作为一个完整的事物,都有它的生命周期、或者说它的轨迹。作为先进高科技的产物---软件产品,自然也不例外。这期间,要经过一系列的过程,例如,开发者首先要考虑它的可行性,是否能果断当前问题或是将来是否能有更大的发展,当然要有具体的规划和设计,要形成书面的文档记录下来,以便开发员之间的交流。其次要害的是能否满足用户的需求,因为判定开发出来的软件是否成功的标准之一就是看它有无实用性。之后便是一系列的实施,例如程序设计,系统测试,以及接下来的后续工作---维护与修改工作。
软件生命周期的各个环节将软件系统开发大致分为四个阶段,用图示的方式表现出来即通常所说的“瀑布模型”,如图:
二、系统分析系统分析是软件生命周期的一个要害环节,其目标是将对计算机应用系统的需求转化成实际的物理实现。然而实际面太多,增加了软件分析的复杂度,那么究竟在系统分析的过程中需要考虑那些因素呢?
1、系统目的。在考虑系统目的时,应更多的侧重于系统的最终目标考虑,因为一个系统不可能在最初就是完美的,要为系统留些余地。
2、系统参与者。在整个项目中,要考虑有哪些方面参与了系统,这些参与者人可能在系统建设中起重要作用,他们采取什么样的态度将会对系统有一定的影响。另外,还要了解各参与者的初衷是什么。
3、明确的评价标准。最好从参与的各方面都进行考虑,要知道他们对这个系统是否有一个明确的评价标准。
4、系统开发计划的完善度。计划表要有明确的阶段,每一阶段要有具体的完成计划,以及对阶段完成情况进行的评价。
当然还有很多因素值得考虑,可以根据面对的项目的不同而改变,譬如与软件开发人员的交流等等。
三、开发内容
开发软件系统最为困难的部分,就是准确说明开发什么。这就需要在开发的过程中不断的与用户进行交流与探讨,使系统更加详尽,准确到位。这就需要确定用户是否需要这样的产品类型以及获取每个用户类的需求。需求类型包括三个:
1、业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目的要求,它们在项目视图与范围文档中予以说明。
2、用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。
3、功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
总之,无论是商业性或非商业目的的产品,都应具备完整的说明书,以避免发生状况时引起不必要的损失。
四、分析设计和系统方案
在考虑完各方面的实际因素后,就要对项目进行总体的分析设计。简单的讲,总体设计需要确定的内容应当包括:
1、系统需要实现哪些功能;
2、开发使用什么软件,在什么样的硬件环境;
3、需要多少人,多少时间;
4、需要遵循的规则和标准有哪些。
一般情况下,在总体设计出来后,就需要给客户一个系统的方案。假如在客户需求不是十分明确的情况下提交方案,往往和实际制作后的结果会有很大差异。所以应该尽量取得客户的理解,在明确需求并总体设计后提交方案,这样对双方都有益处。而方案则应包括以下几个部分:
1.客户情况分析;
2.系统需要实现的目的和目标;
3.系统各个模块与结构;
4.使用软件,硬件和技术分析说明;
5.开发时间进度表;
6.维护方案;
7.制作费用。
总之,总体设计阶段是以比较抽象概括的方式提出了解决问题的办法;而具体设计阶段的任务,也就是把解法具体化。具体设计主要是针对程序开发部分来说的,但这个阶段的不是真正编写程序,而是设计出程序的具体规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包含必要的细节,例如:程序界面、表单、需要的数据等,程序员可以根据它们写出实际的程序代码;而至于后续的工作,就有程序员来完成编写程序,系统测试员来完成测试,还有之后的维护和修改。
五、运用策略
伟人有治国的策略,商人有致富的财路,巧妇有理家的本领,鹤发童颜的老人有长生的秘诀。在进行软件开发系统分析时,也要本着一些策略:
1.“简单—复杂—简单”。 这是技术型分析人员经常碰到的情况,认为分析出错综复杂的关系,花哨的图表才能显示出分析水平高,其实,分析经常要经历"简单-复杂-简单"的过程,前一个简单表现为分析人员"认为简单";随着分析的深入,原以为简单的问题会越来越复杂;最后,经过概括、消化、分解,使得需求简单明了。
2.软件复用技术。新开发的软件,要从一开始就考虑其可演化性,以便以后的再工程和构件提取。随着软件复用技术的不断发展,从头开始的软件大量减少,使用的遗产系统相应增多,这就避免了重复的工作,使得已完善的模块遗传下去。
3.模块化概念。模块化可以增强系统的独立性,使耦合度降低,实现“高内聚-松耦合”。对于模块的内部,使其高度集中,而模块与模块间的联系相对减少,这样使系统各模块独立的进行运转。
任何雄才伟略的人都能纵观全局,有一览众山小之气势。若想有出色的成果必然要有对事物进行总的分析的能力,这就包括是否着眼于长远利益,是否能对其很好的治理掌控。系统并不是简单的计算机代替手工劳作的一种方式,它是一种高于现实的治理模式。因此,系统分析是软件开发过程中必不可少的一个环节,它为高质量软件产品的开发奠定了基础。