[摘要] 对一个软件项目进行系统分析首当其冲。随着信息化产业的发展、软件企业的增多,尤其是当面对一些大中型的软件项目,对软件生命周期的各个环节进行系统详细的分析将更加重要。系统分析,是根据用户的要求,运用科学的方法提出问题和解决问题的过程,是软件开发前期的重要工作。它包括:系统需求说明、系统概要设计和系统详细设计。
[关键词] 系统分析 需求说明 概要设计 详细设计
当一个软件项目摆在人们面前时,进行系统的分析是首当其冲的,正如我们的一句古语:三思而后行。因此,无论做任何事都应考虑是否有意义以及它的可行性。在过去,人们将“软件”与“程序”、“开发软件”与“编程序”划等号,粗略地进行估计和设计软件产品势必会影响软件的质量和生产效率。然而现在,随着信息化产业的发展,软件企业的增多,尤其是当面对一些大中型的软件项目,对软件生命周期的各个环节进行系统详细的分析将更加重要,而且会提高软件的质量和效率。
一、系统分析概论
系统分析,笔者个人认为它应该是能体现系统的灵魂性的文档。系统分析书中应该有以下内容(视项目而定):
1.系统需求说明:说明系统是一个什么样的系统,用市场上现有的系统来类比,用客户(或是我们自己)需要一个什么样的系统进行说明,力求完整。并对系统的发展可扩充性进行描述。
2.系统资源说明:对系统所需要的软件、硬件资源进行说明。描述系统所需要的所有成本。包括人员、时间、设备、系统,一次性投入资金、持续性投入资金这样的所有资源。
3.系统可行性分析:对系统的实施中的资源进行分析,说明投入的合理性和必然性,对其中的所有不可预见性的投入进行合理的量化说明,来说明系统的实施的可行性。
总之,系统分析的任务就是将用户的业务逻辑转化为程序逻辑,计算时间和成本。
二、软件系统开发
无论动物、植物,作为一个完整的事物,都有它的生命周期、或者说它的轨迹。作为先进高科技的产物――软件
产品,自然也不例外。这期间,要经过一系列的过程,例如,开发者首先要考虑它的可行性,是否能坚决当前问题或是将来是否能有更大的发展,当然要有详细的规划和设计,要形成书面的文档记录下来,以便开发员之间的交流。其次关键是能否满足用户的需求,因为判断开发出来的软件是否成功的标准之一就是看它有无实用性。之后便是一系列的实施,例如程序设计,系统测试,以及接下来的后续工作――维护与修改工作。
三、系统分析
系统分析是软件生命周期的一个关键环节,其目标是将对计算机应用系统的需求转化成实际的物理实现。然而实际面太多,增加了软件分析的复杂度,我们在系统分析的过程中需要考虑以下因素:
1.系统目的。在考虑系统目的时,应更多的侧重于系统的最终目标考虑,因为一个系统不可能在最初就是完美的,要为系统留些余地。
2.系统参与者。在整个项目中,要考虑有哪些方面参与了系统,这些参与者人可能在系统建设中起重要作用,他们采取什么样的态度将会对系统有一定的影响。另外,还要了解各参与者的初衷是什么。
3.明确的评价标准。最好从参与的各方面都进行考虑,要知道他们对这个系统是否有一个明确的评价标准。
4.系统开发计划的完善度。计划表要有明确的阶段,每一阶段要有详细的完成计划,以及对阶段完成情况进行的评价。
当然还有很多因素值得考虑,可以根据面对的项目的不同而改变,譬如与软件开发人员的交流等等。
四、软件开发的内容
开发软件系统最为困难的部分,就是准确说明开发什么。这就需要在开发的过程中不断的与用户进行交流与探讨,使系统更加详尽,准确到位。这就需要确定用户是否需要这样的产品类型以及获取每个用户类的需求。需求类型包括三个:
1.业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目的要求,它们在项目视***与范围文档中予以说明。
2.用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。
3.功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
总之,无论是商业性或非商业目的的产品,都应具备完整的说明书,以避免发生状况时引起不必要的损失。
五、软件的总体设计和系统方案
在考虑完各方面的实际因素后,就要对项目进行总体的分析设计。简单地讲,总体设计需要确定的内容应当包括:1.系统需要实现哪些功能; 2.开发使用什么软件,在什么样的硬件环境;3.需要多少人,多少时间; 4.需要遵循的规则和标准有哪些。
一般情况下,在总体设计出来后,就需要给客户一个系统的方案。如果在客户需求不是十分明确的情况下提交方案,往往和实际制作后的结果会有很大差异。所以应该尽量取得客户的理解,在明确需求并总体设计后提交方案,这样对双方都有益处。
总之,总体设计阶段是以比较抽象概括的方式提出了解决问题的办法;而详细设计阶段的任务,也就是把解法具体化。详细设计主要是针对程序开发部分来说的,但这个阶段的不是真正编写程序,而是设计出程序的详细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝***,它们应该包含必要的细节,例如:程序界面、表单、需要的数据等,程序员可以根据它们写出实际的程序代码;而至于后续的工作,就有程序员来完成编写程序,系统测试员来完成测试,还有之后的维护和修改。
六、系统分析策略
在进行软件开发系统分析时,一般有以下策略:
1.“简单―复杂―简单”。这是技术型分析人员经常碰到的情况,认为分析出错综复杂的关系,花哨的***表才能显示出分析水平高,其实,分析经常要经历“简单-复杂-简单”的过程,前一个简单表现为分析人员“认为简单”;随着分析的深入,原以为简单的问题会越来越复杂;最后,经过概括、消化、分解,使得需求简单明了。
2.软件复用技术。新开发的软件,要从一开始就考虑其可演化性,以便以后的再工程和构件提取。随着软件复用技术的不断发展,从头开始的软件大量减少,使用的遗产系统相应增多,这就避免了重复的工作,使得已完善的模块遗传下去。
3.模块化概念。模块化可以增强系统的***性,使耦合度降低,实现“高内聚―松耦合”。对于模块的内部,使其高度集中,而模块与模块间的联系相对减少,这样使系统各模块***的进行运转。
若想有出色的成果必然要有对事物进行总的分析的能力,这就包括是否着眼于长远利益,是否能对其很好的管理掌控。系统并不是简单的计算机代替手工劳作的一种方式,它是一种高于现实的管理模式。因此,系统分析是软件开发过程中必不可少的一个环节,它为高质量软件产品的开发奠定了基础。
参考文献:
[1]薛四新.软件项目管理.机械工业出版社,2005.
[2]陆丽娜.软件工程.经济科学出版社,2000,3.
[3]王立福,麻志毅,张世砚.软件工程.北京大学出版社,2002,3.
(作者单位:贵州大学科技学院04计算机科学与技术专业)
转载请注明出处学文网 » 软件系统分析的方法和策略浅谈