您好,欢迎访问三七文档
南昌塞普信息技术有限公司项目规划软件开发流程软件开发流程,是指按一定顺序实现软件项目的步骤。要实现一个软件项目,需要实现需求分析、分析设计、系统编码及测试等步骤,把这些步骤按一定顺序进行排序,就形成了软件开发流程。本节主要介绍两种常用的开发流程,即瀑布式与迭代化开发流程。●瀑布式开发流程瀑布式开发流程,是由线性开发流程演化而来的,把实现软件项目的步骤,按线性顺序排列好,就形成了瀑布式开发流程,如图12.1所示。使用瀑布式开发流程实现项目,先要对项目进行需求分析,再根据分析结果进行编码以及单元测试,经过最后地集成测试和系统测试后,就可以向用户提交项目了。软件开发流程需求分析分析设计编码/单元测试集成测试系统测试使用瀑布式开发流程实现的项目,通常会根据情况估算一个提交项目的日期。在这个日期之前,开发人员需要完成编码,以及测试等方面的工作,而用户只有等到这个日期之后,才能见到产品。瀑布式开发流程的优点在于,其非常简单明了,在开发周期比较短的项目时,有明显的优势。但是瀑布式开发流程也有其明显的缺点。图12.1瀑布式开发流程图示软件开发流程¾如果在项目需要分析阶段,用户需求判断不准确,则只有到了项目后期才能够被发现。¾项目的系统测试是在后期进行的,很难控制开发过程中出现的代码错误。¾如果项目产生意外,将打乱开发进度,造成项目延期。在开发一些小型项目时,瀑布式开发流程完全能胜任。但是当要开发的项目比较庞大、需要的时间比较长时,就要考虑使用其他的开发流程了。软件开发流程●迭代式开发流程为了克服瀑布式开发流程的缺点,可以使用迭代式开发流程来实现项目。迭代式开发流程,会把项目分为一些阶段性的小目标,这些小目标都有明确的阶段性评估标准。当完成了这些小目标后,将在完成的基础上,计划下一次要完成的目标,形成迭代式开发。软件开发流程例如一个项目需要10个月的开发周期,使用迭代式开发流程,可以把项目分为5个小的开发周期,每个周期两个月。在第1个周期完成后,用户会得到一个初步的产品,虽然会有很多错误,但是其功能是完善的。在用户根据这个初步产品提出意见后,开发商结合已经完成的工作,制定下一个周期要完成的开发计划。依次类推,只有到项目开发周期结束,一个成型的产品才能够完成。下面通过图形的方式,演示迭代式开发流程的步骤,如图12.2所示。软件开发流程计划布置编码评估测试需求图12.2迭代式开发流程图示软件开发流程迭代式与瀑布式开发流程相比。具有以下特点。¾允许用户按需要变更,当一个迭代式开发周期完成后,用户会根据测试产品来提出意见。有助于及时更改客户需求,保证软件质量。¾在每次迭代式开发完成后,根据评估标准可以准确地了解开发进度,便于及时进行调整,保证项目开发进度。¾迭代式开发允许把一个问题分为几次解决,这不仅可以降低工作难度,也可以提高代码的完成质量。¾迭代式开发在确定系统架构后,经过迭代就可以发现系统存在的问题,及时解决,有助于降低开发风险。迭代式开发流程的缺点在于周期长、成本高。但如果要开发的项目风险较大的话,使用迭代式开发流程,是一个很好的选择。需求分析当项目被确定开发后,就需要通过需求分析来了解项目所需要的资源、要实现的功能,以及在编写程序时需要注意的相关问题。需要分析所涉及的方面很多,本节主要简单介绍如何开始项目的需求分析,以及需求分析时应该注意的问题。●需求分析的工作要对一个项目进行需求分析,应该首先做好对用户需求的总结,以及软件需求的总结。用户需求的总结,将决定项目要实现哪些功能。一般由用户根据需要提出,由于用户本身对于技术性的东西,了解的并不是很全面。在做项目需求分析时,可以通过提出问题的方式,来了解用户希望项目实现的功能。在提这些问题时,有一定的技巧可以使用。需求分析¾要与正确的人接触:例如要想了解生产的详细情况,可以与车间主任进行接触。而要了解账务问题,就需要与财会人员进行接触。这样才能保证问题的有效性与准确性。¾要提出正确的问题:例如要了解仓库的进出货情况,就不能在财务问题上做太多的文章,这很容易产生本末倒置的结果。¾使用正确的方式来总结问题:与用户沟通并总结出的问题,不仅仅是用户需求的体现,也要使程序员理解这些问题,才能更好地实现用户的想法。需求分析通过总结用户需求和问题,就可以列出初步的软件需求,软件需求包括以下3个方面。¾功能需求:即用户希望完成的功能。¾软件特性:例如:稳定性、扩展性、可维护性等。¾项目需求:对硬件环境、软件环境、数据库及其他资源等方面的要求。在大型项目中,可以使用更多方法,例如:用图表、模型等来描述项目,使整个项目的需求分析更加规范化。小型项目根据分析出的软件需求,就可以开始项目的创建工作了。需求分析●功能需求要开始一个项目,最基本的就是了解项目要实现的功能,才可以根据功能来规划数据库、模块、代码之间的关系。一个项目可能功能很少,例如留言板,其只需要完成留言功能即可。但这只是用户的需求。对于开发人员来说,需要考虑的事情很多。下面根据这个留言板项目,具体分析其功能需求。9前台:留言功能,留言分页,显示留言用户的昵称、性别、IP地址信息等功能。9后台:管理员登录,回复、编辑、删除留言,回复、编辑、删除回复信息等功能。需求分析虽然用户提出的需求很简单,但完成这个需求,所要做的工作并不少。这就需要在了解用户明确提出的功能需求后,进一步从技术角度了解功能需求。功能需求只是一个计划,告诉开发人员应该完成的工作。对于开发人员来说,实际开发过程中,需要注意的一些细节问题,最好也能列入功能需求。例如在留言板的功能需求中,要求用户在留言时,不能使用HTML代码。列出功能需求的方法有很多,可以使用表格,可以使用文字描述,也可以使用项目管理软件。列出功能需求的方法并不重要,重要的是这种方法能否被开发人员理解和接受。需求分析●软件特性在开始一个项目之前,除了对项目的功能做出分析外,分析软件特性也是完成项目的一个重要步骤。软件特性包括很多方面,最常提及的特性包括:安全性、兼容性、稳定性、扩展性、维护性及移植性等。软件特性是根据用户需求,以及项目的实际需要确定的。例如用于银行的项目,会要求软件的安全性比较高,这也要求开发人员在编码工作时,强化代码安全、运行安全等方面的工作。下面简单地介绍部分软件的特性,及其实现时要注意的问题。需求分析¾安全性:来自多方面的需求,在黑客问题日益严重的情况下,软件系统安全问题是一个不得不关注的问题。特别当软件系统中,存储的数据有一定保密级数时,在软件安全方面的要求会相对要求较高。¾兼容性:可以支持PHP语言服务平台,不仅仅只有APACHE,实际情况中,用户使用的运行平台,与开发人员使用的开发平台,总是或多或少的有些差别。这就要求软件要有很强的兼容性,使其兼容不同的服务器,不同版本的PHP。要使得软件具有很强的兼容性,需要做的工作很多,所以在开发项目时,昼保持运行环境与开发环境的一致。需求分析¾稳定性:这是软件一个非常重要的特性,没有用户愿意使用一个经常出错的软件。软件的稳定性表现在很多方面,例如对大量数据处理时的表现,对不确定目标操作时的表现等。软件系统所有功能的正常工作,就是系统稳定性的最好体现。¾扩展性:可扩展性是针对用户不断变化的需求提出的,当软件系统实现可扩展性后,可以轻松应对用户的需求变化。但是,实现软件的可扩展性所需要做的工作非常多,主要在一些大型项目中才会体现。在小型项目中实现这个特性是没有必要的,完全可以加强对项目的需求分析,更深入地了解用户需求,这才是解决之道。需求分析¾维护性:即开发人员对软件系统进行理解、修改的难易程度。其主要体现在:是否有好的技术文档、灵活的架构、规范的编码、简洁的变量命名等方面。具有良好可维护性的软件系统,可以使软件实施后的维护成本大大降低。¾移植性:可移植性是指软件从一个平台,移植到其他平台的方便程度。一个很简单的例子,phpMyAdmin不仅可以运行在Windows平台下,也同样可以运行在其他支持PHP的操作系统下,就是因为其有良好的可移植性。因为PHP是一个跨平台的语言,很容易写出可移植性好的软件。软件特性还有很多,项目需求分析阶段总结的软件特性,在代码开发时,一定要把其融入代码的开发当中。需求分析●项目需求项目的需求分析,不仅包括用户与软件特性的需求分析,也包括项目自身的需求分析。项目自身的需求分析包括:对硬件环境、软件环境、数据库、其他资源等。¾硬件环境:是指开发项目使用的硬件平台。例如要使用APACHE运行PHP程序,那么就需要一台可以安装操作系统的计算机,安装的操作系统,必须支持APACHE和PHP的运行。¾软件环境:是指支持项目开发的软件平台。例如要使用APACHE作为PHP的运行平台,必须安装APACHE服务,以及配置PHP环境。需求分析¾数据库:数据库发球软件环境的一部分,其主要根据项目的实地需要来确定。例如小型的项目可以使用SQLite数据库,一般项目可以使用MySQL数据库,而大型的项目可以使用ORACLE数据库。当确定要使用的数据库后,才能实现访问数据库的代码。¾资源:指项目开发时需要使用的资源,包括一些工具软件,如:phpMyAdmin。或者是图书、技术手册等。上面只是介绍了项目的大体需求,实际使用中,也可以根据情况来增加或减少需求。项目需求的最终目的是服务于项目开发本身。编程方式最早的PHP代码都嵌入HTML中运行的,很自然地就使用了过程编程的方式。随着版本的升级,PHP也引入了面向对象的编程方式。本节将主要介绍这两种编程方式,以及其优缺点。●面向过程面向过程是以事件为中心、以算法为驱动的编程方式,在早期的程序设计中,得到了广泛地应用。即使在面向对象的编程方式纵横天下的时代,其他程序设计中,占有一席之地。热爱面向过程编程的程序员,特别钟爱C、汇编等语言。程序员可以通过面向过程的编程方式,完成文件系统、驱动程序等与系统底层相关的工作。编程方式在PHP的编程中,由于解析网页是一个过程化的动作,所以使用面向过程的编程方式编写的PHP代码,相对来说运行速度有一定优势。同样实现一个功能,面向过程化比面向对象的编程方式,所使用的代码也要少很多。可以通过下面的演示,了解使用面向过程的编程方式,实现输出字符串功能的方法,代码如下所示。?phpecho“这是面向过程的编程方式”;?面向过程的编程方式就是这么简单。效率和精炼的代码,是其追求的目标。面向过程编程方式代码的高效率,可以用来编写PECL模块,但并不意味着不能用来编写其他程度。编程方式phpMyAdmin是使用PHP编写的,用于管理MySQL数据库的工具。phpMyAdmin除了使用PEAR中的MimerSQLValidator类外,其他功能都是使用面向过程编程方式实现的。phpMyAdmin的运行速度很快,功能也很完善,这充分证明了面向过程编程方式的强大。面向过程编程方式的优点,也是其缺点所在。在简单的项目开发中,使用面向过程编程方式,可以很快实现想要的功能,并且有很好的运行效率。但是随着项目的增大,要维护的代码不断增加,使用面向过程编程方式的项目会出现以下问题。编程方式z面向过程的代码可重用性比较差,如果要实现的项目功能很多,最终实现的项目会因为过于庞大而降低其稳定性。z面向过程的代码可维护性比较差,往往因为极小的变化,改动很多相关的代码。由于面向过程编程方式本身的原因,以上存在的问题不能通过其本身解决,而使用面向对象编程方式,则可以轻松完成这些任务。编程方式●面向对象面向对象是一种以对象为中心、以消息为驱动的编程方式,其最基本的3个特性是封装、继承和多态。封装:隐藏对象内部属性和方法的实现,使用户只能使用指定接口,访问具有权限的属性及方法。继承:通过继承,子类可以使用父类的属性和方法。多态:内部的多种方法使用一个接口表示的形式。面向对象编程方式比较抽象,而与面向过程编程方式相比,实现同一个功能的代码相对比较多,可以通过下面的演示,了解面向对象编程的方法,代码如下所示。编程方式?php//定义一个类classshow{functionsh
本文标题:项目规划
链接地址:https://www.777doc.com/doc-815631 .html