软件开发流程思考及建议

  • 一般开发团队需要以下几个组成部分:

    • 开发负责人:要求懂技术和开发管理,较强的沟通能力,负责系统的架构、编码质量和开发进度的控制、难题攻克等任务、团队建设和管理;(建议1人)
    • 开发人员:可以由经验丰富的高级开发和经验一般的普通开发组成;(建议2-3人,大型项目根据情况适当增加)
    • 测试人员:一般大型系统需要一个测试组,需要有专业的、经验丰富的测试组长负责(一般小型开发团队由于各种原因不去配备专有的测试人员,但软件的测试工作不能省去,所有,很多时候就由开发人员自行测试);(建议1-2人,复杂项目可能需要5人以上)
    • 界面设计或美工:一般有条件的还是需要一个界面UI的设计的专业人员负责界面布局、功能设计之类的工作。(建议1-2人)

以上建议必须有的人员为:开发负责人、开发人员,最好有测试人员,因为这直接关系到最终产品的实现和质量。

  • 一般的开发分为以下几个步骤:

    • 需求确认

一般该步骤需要开发团队负责人(有时也会整个团队参与)与需求提供方开会(或其他形式)沟通,来了解需求;然后,根据客户需求进行需求分析,可以出一份分析报告,比如直接出需求分析报告或需求设计文档;最后,根据分析结果或需求设计进行进一步的沟通来确定需求。

该步骤一搬能解决70-80%左右的需求,因为开发阶段或者开发后期肯定会出现新的需求或在对已有需求的进行修改,但是这已经可以开始考虑系统的设计和开发了。

    • 系统设计

在大致的需求定下来之后接下来该着手设计系统了,这个环节可以考虑和团队中一些经验较丰富,技术较好的同事一起讨论设计,但一定要注意效率,不要一味地讨论,而不定不下来设计方案。

最后对系统的设计定好后就要好好设计每一部分的具体实现了,这时一般就是写详细设计文档(也有边开放边设计、或者开发后补设计的,但我不建议这样,至少也要尽量做到设计一部分就开始进行这一部分的开发),详细设计的目的是为后面的开发进行服务和约束的。

服务体现在在开发的时候可以直接参考详细设计就很快明白如何实现,而不再需要重新考虑应该怎么实现,以此来提高开发效率。

约束体现在在开发时以免忘去最初的想法,而采用其他方式实现(很有可能实现的原来或结果都出现很大差异),最终很有可能偏离原本的初衷,从而影响系统的开发进度、质量等,导致很大不良后果。

    • 系统开发

根据设计阶段的设计指导开发团队进行系统的开发。

    • 系统测试

在系统的开发过程中和系统部分功能开发完成后以及最后全部完成后都需要进行测试,也就是测试是分布在开发过程中的各个阶段。

    • 系统交付

开发完成后,最终测试完毕就可以交付系统了,此时的系统应该以及实现主要功能、不应该存在明显BUG,基本能够保证日常使用。

最终完成后后续还需要不断升级,进行修复和增加新的功能。

  • 一般的开发流程

在以前的开发中大多数采用的是瀑布是的流水线式的开发,这种开发方式有很多问题,经常会影响实际的开发进度、开发质量、甚至导致最终的项目失败。

现在一般不会采用这种单纯的开发方式。我认为可以考虑分步分阶段的方式进行。因为在实际开发过程中经常会遇上需求变更的问题,甚至有时会推翻前面的重新再来;或者最初设计的问题导致开发难以进行下去;人员流动带来的种种问题等等。所以,我觉得按照以下的方式进行开发会有很大好处:

首先,前期确定大致需求后先定好系统架构,各功能模块的设计,把核心的功能确定后先设计出一套可行的方案,最好能出一个简单的DEMO,可以不实现具体功能,但要能够说明对需求的实现,能够让用户看懂你的实现方式,目的是让用户再次确定需求。如果这一步没有问题,那就可以开发这部分功能了,其他系统功能类似。

这个步骤肯能会贯穿到系统开发的中前期,一般很少有到后期还做大量的调整和修改的,如果有小的调整也需要在确定需求后再去做后面的步骤

第二步,开发已确定部分的功能,并最好能够在开发时每开发一个实现方法测试一个(最好能做到这一点,这会对后续的测试和BUG的修改都有帮助——很多问题都会在这时就被发现,可以节省后期的工作量,一般这种测试被叫做单元测试)。在开发完一个功能或一个完整的模块后也要进行整个功能模块的测试,这可以发现一些在单元测试阶段不能发现的问题。另外,在每次提交一个测试好的功能后最好能进行代码审查,最好由经验丰富、技术较强的开发人员,或者技术负责人来审查,这个过程目的是及时的发现不规范的代码——规范代码和规范开发的目的是为了以后的代码维护和其他开发人员修改提供方便——个性的代码书写少了,理解的过程就会大大缩短。

建议单元测试、功能测试等各种测试和代码审查要贯穿在整个的代码编写的开发阶段

第三步,在开发进行一定的时间后,经常会出现新的需求或者需求的变更,所以,我们需要再次的了解需求和确认,以便能够及时更正系统设计时的不足或者开发产生的偏差,如果最后或者后期才去做这些,到时候系统的架构就已经无法修正,即便只是一个小模块很可能都很难修改了。所以,这个过程很重要,而且,需要在整个开发阶段中不断的重复执行,不断的修正系统的设计和开发。——需要注意的是,这里所说的修正系统设计并不是说系统的整体框架或者核心的结构可以随便修改,这些一般在定下来之后除非非常严重的问题,导致无法进行后续开发是不能调整和修改的,尤其是在中后阶段更不能调整核心设计。没有任何设计开始就说完全合理的,所有,允许一定的调整,但一般会在后面需要调整的会越来越少,最后能够达到局部的、小范围的修改代码就比较理想了。

(阶段性的需求确认、系统的重构等工作基本会不断的重复,一般需求确认是贯穿编码的大部分时间的,而且要视情况而定,不能机械的固定执行;系统重构需要慎重考虑——最好能够在前期稳定下核心架构,不随便修改。一般代码级的重构较多,而且多数在中后期考虑)

第四步,在第三步后一定会有对系统架构或代码方面的变化,此时一定要做第二步中说到的一些测试,而且,很有可能在修改了某一功能后还要进行相关功能的联合测试,以保证修改的功能测试通过的同时不会影响到其他功能、不会影响到整个系统的完整性、稳定性、高效性。

(测试很重要。一定优先保证系统的稳定性,其次考虑效率问题)

最后,在开发过程中多次重复第三、四步的工作后基本就能保证系统的顺利完成了,在系统的开发后期和完成阶段一定要进行整体的测试,这个也很重要,他会影响到最终的上线。在团队内部测试完成后,没有其他变化后,可以考虑上线测试,也就是发布一个测试版,公开到用户那里小范围的使用和测试,此时,主要需要做的是采集用户意见、收集实际运行中的问题、系统BUG(BUG基本不能消除,但是,一些无关紧要的小问题可以不必太计较),然后在根据收集的信息进行分析,根据轻重缓急在此安排版本修订,在基本满足需求和基本没问题的情况下就可以发版了。后续需要注意的就是升级,任何产品、系统都需要不断的升级来不断的完善和优化。

如果可能得话,在系统设计中最好能够融合进好的日志系统,在日志系统中要有分析模块,这个主意是用来收集系统在运行中的问题和日常使用中的一些正常或异常信息,主意是异常信息,通过分析模块来判断问题的严重性、出现频率等,来帮助对系统的使用情况分析和日后的修复、升级、优化等的工作安排。

时间: 2024-10-09 23:14:37

软件开发流程思考及建议的相关文章

软件开发流程(转载)

软件开发流程 迭代化软件开发技术 1. 传统开发流程的问题 传统的 软件开发流程是一个文档驱动的流程,它将整个软件开发过程划分为顺序相接的几个阶段,每一个阶段都必需完毕所有规定的任务(文档)后才可以进入下一个阶段. 如必须完毕所有的系统需求规格说明书之后才可以进入概要设计阶段,编码必需在系统设计完毕之后才可以进行.这就意味着仅仅有当所有的系统模块所有开发完毕之 后,我们才进行系统集成,对于一个由上百个模块组的复杂系统来说,这是一个很艰巨而漫长的工作. 随着我们所开发的软件项目越来越复杂,传统的瀑

软件开发流程

软件管理 1:指定详细的工作计划,把任务分下去. 2:分配任务的时候,验收时间点的确定. 人员 如何帮助开发人员有所进步提升 不要只站在自己的立场上要求开发什么时间点必须实现什么功能 软件开发 1:设计优先,把要做哪些东西,有什么要求都列出来,指定设计方案,评估设计方案是否可行 2:讨论设计方案,和测试,其他开发,项目经理等讨论方案是否有问题 3:编码 4:开发自己的测试,指定测试的案例,和分支,先通过自己这一关 5:测试人员测试,提出BUG,迭代设计,讨论,修改. 6:上线用户体验,提出问题,

软件开发流程选择

软件工程把这些相关的技术和过程统一到一个体系中,叫作"软件开发流程",软件开发流程的目的是为了提高软件开发.运营和维护的效率,以及提升用户满意度.软件可靠性和可维护性.        软件开发流程有:写了再改模式.瀑布模型.瀑布模型的各种变形.统 一流程.老板驱动的流程和渐进交付的流程.        在这些开发流程中,我比较支持瀑布模型的各种变形中的大瀑布带着小瀑布,这个对开发者的个人能力要求比较高,需要吧各个子系统统一到最后做系统测试,用户只有到最后才能看到结果,从一开始的需要一个

QT开发(二十三)——软件开发流程

QT开发(二十三)--软件开发流程 一.软件开发流程简介 软件开发流程是通过一系列步骤保证软件产品的顺利完成,是软件产品在生命周期内的管理学. 软件开发流程的本质是软件开发流程与具体技术无关,是开发团队必须遵守开的规则. 二.常见软件开发流程模型 常见的软件开发流程模型包括即兴模型.瀑布模型.增量模型.螺旋模型.敏捷模型. 1.即兴模型 即兴模型的特点: A.与用户交流后立即进行开发 B.没有需求分析和需求发掘过程 C.没有整体设计和规划 D.没有软件文档,可维护性差 2.瀑布模型 瀑布模型的特

团队模式与软件开发流程的选择

1.团队模式的选择 软件团队的模式有主治医师模式.明星模式.社区模式.业余剧团模式.秘密团队.特工团队.交响乐模式.爵士乐模式.功能团队模式.官僚模式. 我比较倾向于交响乐模式和功能团队模式.交响乐模式的主要特点是门类齐全,各司其职,有共同方向的.其优点是在开发过程中分工明确,大家可以术业有专攻,效率比较高.缺点是适用于某歌软件领域处于稳定成长的阶段,如果是在刚开始的时候可能会产生分歧. 功能团队模式的主要特点是:人人平等,没有管理与被管理的关系.优点是小组间交流比较频繁,不同能力的人可以平等协

软件开发流程的选择

软件开发流程的定义:我们在开发.运营.维护软件的过程中有很多技术.做法.习惯和思想.软件工程把这些相关的技术和过程统一到一个体系中,叫做"软件开发流程". 软件开发流程有:写了再改模式.瀑布模型.瀑布模型的各种变形(生鱼片模型.大瀑布带着小瀑布).统一流程(RUP).老板驱动的流程.渐进交付流程. 软件开发的目的:为了提高软件开发.运营和维护的效率,以及提高用户满意度.软件的可靠性和维护性. 我选择统一流程. 统一流程的步骤:业务建模:需求:分析和设计:实现:测试部署:配置和变更管理:

软件开发流程------阅读《构建之法》 第5.5 第6 第7章

软件开发流程中的瀑布模型,圆形,螺旋都是根据用户所需而设计的模型,我们也要根据他们的特征特点去实现我们我们想要的开发流程. 1.一些项目需要很多暗箱操作和政治角力才能搞定,既然Scrum会吧这些矛盾都摆到明处,我们如何才能把风险降到最低?出自6.42敏捷流程的经验教训. 2.我还是分不清敏捷开发和MSF敏捷开发根本性的区别是什么? 感悟:<构造之法>这本书,传授给我的是另一种触动的知识,或许你看了好几章了,你才有那么一两个问题,那是因为我觉得这本书已经走向大众了,即使没有那么专业的我们也能把它

智能家居项目(1):软件开发流程

结合公司开发过的产品以及对自学知识的总结,整理出此系列文章  .侧重点还是在软件部分. 公司开发某个项目,肯定是为了盈利赚钱.开发的项目无非就是自己的产品或者承接甲方的开发任务. 大体的流程可以分为几个部分或阶段: 1.需求说明书 预期想要一个什么功能,达到什么样的效果.有的客户也说不明白具体的东西,描述不清.需要加强沟通交流,确定最终的模型.一般情况下是甲方就提供好了的.关键部分大致如下: 监控功能 监控室内温度,监控红外传感器,以阻塞或异步的方式对红外传感器进行检测,如果红外传感器探测到有不

软件开发流程纲要及各个阶段产生的文档

转自:http://blog.csdn.net/flyfish1986/article/details/3870053 软件开发流程纲要及各个阶段产生的文档   作者:邵盛松 2009-2-9 1需求调研与分析 当我们做一个项目时,可能客户口头告诉你他想要做一个什么东西,或者给了你一些文档告诉你这就是需求.就根据几句口头讲述,或者一些文档,很难知道到底具体需要做什么.这时候就要对需求进行挖掘,以得到功能列表,或者用例图.这时候交流是非常重要的.通过不断的与客户进行交流,将用例详细化,也不必要追求