怎样开发一款软件
首先,软件是一系列按照特定顺序组织的计算机数据和指令的集合。它也是一种产品,是为了满足某种需求而生的,通常可以分为系统软件、应用软件和介于这两者之间的中间件。软件还包括文档,也就是说,程序和文档加起来才是软件的完整定义。
那软件是如何开发出来的呢?通常一款软件的开发流程是这样的,对软件先进行需求分析,设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编码和调试、程序联调和测试以及编写、提交程序等一系列操作以满足客户的需求并且解决客户的问题,如果有更高需求,还需要对软件进行维护、升级处理,报废处理。
这样说或许比较抽象,下面以一款反黑粉的软件为例简要说明。既然软件是满足某种需求的产品,那肯定是有需求在先的,比如说你的朋友A喜欢刘亦菲,但微博上总有黑粉黑她。微博的机制是一条微博举报人数足够多的时候才会进行处理,因此A成立了一个反黑组,将黑刘亦菲的微博汇总发出来,让大家一起举报。但A发现这样效率很低,于是他想,要是有一个软件,能自动识别黑粉微博,然后粉丝都到这个软件上去举报就好了。
但A不会做软件,于是将这个想法跟你说并委托你来做。其实A的想法就是一个需求,但是不够具体,所以你要跟他确认好他想做的东西是什么样的,比如大体功能、软件形态(Web、APP、小程序、桌面应用等),然后你需要做一些可行性分析,如经济可行性(比如只给1000块钱让你开发个百度、经济效益等)、技术可行性(能否自动识别)等方面确定这款软件是否可以开发。确定好可以开发之后需要做具体的需求分析。需求分析其实也是一个很复杂的过程,需要经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么。同时在需求分析阶段,还要确实好团队组成,包括产品经理、研发项目经理、研发工程师、测试团队等。确定好团队之后,产品经理要向团队进行整个需求的讲解,然后使用Balsamiq Mockup/Axure等工具以线框图的形式设计完整的原型图。
需求分析做好之后差不多就可以进入设计阶段了,这一阶段UI设计师根据原型图设计出完整的UI交付件。然后研发工程师们要做出需求规格说明书、概要说明书、接口规范(有些软件还有通讯协议)、数据建模等等。
之后就是就可以行软件的编码工作了,也就是大家熟悉的写代码的阶段,这个阶段还需要进行后端和前端的联调,这里的前端可能是Web、APP、小程序或者桌面应用。最后,还需要进行功能评审。
软件编码工作结束以后,就可以提交给测试团队进行测试了,现在一般是做自动化测试。对于测试发现有问题的部分还要重新提交给开发人员进行修改后重新测试。最后一般会有一个测试报告。
这一系统工作结束之后还需要与你的朋友A进行最后的确认,如果你开发的产品确实就是他想要,就可以进行试运行。运行稳定后可以就可以发布到线上了。
至此,一个软件开发完成。总结来说,一个软件的开发过程大致如下图所示:
开发流程
一、需求分析
1.相关系统分析员向用户初步了解需求,然后用相关的工具软件列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
2.系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚列出系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。
3.系统分析员向用户再次确认需求。
二、概要设计
首先,开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。
三、详细设计
在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。应当保证软件的需求完全分配给整个软件。详细设计应当足够详细,能够根据详细设计报告进行编码。
四、编码
在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你必须永远面对这个问题!
五、测试
测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能。软件测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试范围,可以分为模块测试和整体联调;按照测试条件,可以分为正常操作情况测试和异常情况测试;按照测试的输入范围,可以分为全覆盖测试和抽样测试。以上都很好理解,不再解释。总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3个月到1年的外部测试都是正常的,因为永远都会有不可预料的问题存在。完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营状况并持续修补升级,直到这个软件被彻底淘汰为止。
六、软件交付
在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。
《用户安装手册》应详细介绍安装软件对运行环境的要求、安装软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置。
《用户使用指南》应包括软件各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明。
六、用户验收
七、维护
根据用户需求的变化或环境的变化,对应用程序进行全部或部分的修改。