软件开发流程简单介绍

2012-11-20 20:55

以下内容只代表本人观点,不保证正确性。。


软件开发是一项非常复杂的工作,团队协作也很复杂,当一个团队需要协作开发一款软件时,复杂度就会倍增,所以需要有一整套的流程来保证项目质量,让项目能够按期完成。
一般来说,软件开发的流程大概有以下几步:需求分析,概要设计,详细设计,测试,交付验收。下面会稍微详细的介绍每个部分。 软件一词并不是十分合适,以下均用项目代替。

需求分析

需求分析阶段一般需要说明,项目是做什么的,有哪些功能,有哪些角色,面向什么用户,是否收费,如何收费等等。
这个阶段主要是写文档,当然也可以写成ppt。

原型设计

原型设计就是根据需求,设计出项目的原型,展示项目的大概轮廓,可以有交互,动画等对需求的演示等。
可以使用的工具有Axure RP,Balsamiq Mockups,Adobe Director,Adobe Flash,Adobe Photoshop等,甚至手绘等都是可以的。

技术选型

技术选型就是指选用什么技术来实现这个项目,是使用开源产品还是使用收费产品,是使用Java平台还是使用.NET 平台,使用哪个数据库,基于Linux还是基于Windows等等。这个一般是和需求,还有项目性质有关,比如如果要开发一款iOS游戏,那只能基于Mac,选用Object-C或者其他工具比如phonegap来开发了。

工具选择

这个包括版本控制工具,系统平台,编辑器,等。 分别推荐Git,Mac或Linux,vim,这个当然不是绝对的,选用其他任何同类工具都是可以的。

架构设计

这个可以认为是概要设计,主要是系统的总体结构,如果项目很简单,那可能就不需要这个步骤了,反之如果项目非常复杂,那么可以考虑把项目拆分成几个小项目,然后不同的小项目之间通过接口传递消息。这个也是和需求,还有采用的技术有关。 这个没有统一或者万能的方案,总的来说就是低耦合,使用接口传递数据等。

开发和测试

这个阶段可能是最耗时的,而且事情也多。
有些团队测试和开发分开,有些则是开发人员负责测试,他们都各有道理。 开发有结对编程,极限编程,测试驱动开发(TDD),行为驱动开发(BDD)等,而测试则有单元测试,黑盒测试,白盒测试,集成测试,回归测试,性能测试等。还有一些其他概念如敏捷开发,持续集成等,大概了解一下,选择最适合自己的即可。

  • 项目管理

    项目进度追踪,开发计划等。 工具有Project,OmniPlan等。

  • API定义

    通常会定义项目里使用的API,表明是公开还是私有,如何认证,参数,响应等。需要考虑到扩展性,安全性等。

  • wiki管理

    开发阶段的文档,记录项目的进度,注意事项,机器列表,维护文档,快速入门,环境搭建等。 这个可选择范围很广,trac,jira等。

  • 缺陷追踪

    提交bug入口,版本控制工具集成,项目报告,Email通知等。 trac等。

  • 代码相关

    软件,项目说到底还是代码,和项目质量息息相关,有以下几点需要注意:

    • 代码规范

      有了代码规范,才能保证代码风格一致,保证代码可读性及可维护性。 比如Google C++规范,Google JavaScript规范等。

    • 代码校验

      使用代码校验工具保证代码中不会有错误,陷阱,兼容性等问题。 jshint, csslint等。

    • 代码审查

      代码提交后定期对代码进行审查,保证代码正确性及代码风格一致。

    • 项目部署

      自动化部署,测试环境搭建等。

交付验收

如果是外包项目,那么需要交付给客户验收,如果是自己的项目,则需要在项目完成并通过内部测试后,发布给部分最终用户试用,并根据用户的反馈,完善产品等。

后期维护

聆听客户或用户反馈,修改bug,添加新功能等。

完。