软件测试方向怎么选
要开发一个软件应该考虑哪些方面?
要开发一个软件应该考虑哪些方面?
软件是一个系统工程,业界有软件工程一说。软件工程也是各校计算机系必修科目。开发一个软件应该考虑哪些方面,我们将引入软件工程中的一些概念和元素进行描述。
同时,作为企业,客户或者个人而言在进行软件开发时,除了要考虑软件工程外,还需要考虑到相关的资源。这里的资源包括人,预算,开销,时间等等。而这些包含进去,就涉及到项目管理的范畴。
接下来我就从 软件工程和项目管理的角度进行描述软件开发需要注意的方面。
从软件工程的角度看,软件开发包括了前期的需求分析,系统设计,详细设计,然后才到大家通常认为的编码实施阶段,接下来时测试培训,交付上线。最后还有一个不能忽略的阶段,那就是系统维护阶段。
需求分析阶段:通常采取访谈(interview),workshop,调查表等多种方式,由资深的应用/业务顾问 (Application Consultant/Business Consultant),向客户了解需求并进行确认。初始阶段的需求分析非常重要,稍有偏差,便有失之毫厘,谬以千里的风险。相信广大程序员朋友们都经历过变更,尤其是项目后期。当你的代码测试了一遍又一遍,自信满满确定几乎没有bug了,这时候leader告诉你不好意思,变更来了,你做的那一块要改成这样,改成那样 : ( 。当然项目前期需求收集,分析阶段不确定性比较大,所以我这里强调需要有自身的应用/业务顾问进行把关。当然有些变更是不可避免的。系统设计:需求分析好了,需要做Solution Design了,这时候Solution Architect进场(资深方案架构师)。要想后期编码实施轻松,系统设计阶段,如果有资深大牛把关后面的日子就会好过很多。包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等。有时候要用到新的技术,还需要进行快速的新技术调研。当今技术蓬勃发展的年代,有时候客户的需求必须使用到新的技术,也许是整个团队之前都没有接触过的,这时候就需要架构师总体把关了。通常会有技术天分的小组成员进行技术可行性调研。详细设计:大的框架结构,技术方向在系统设计阶段完成,确定了以后,对于各个模块而言进行详细设计。好的详细设计文档包含了模块内所有用例(use case)的逻辑处理,以及逻辑处理涉及到的算法。通常需要资深的程序员进行这部分文档的书写。好的文档写出来,后面coding的同学就会一身轻松。编码实施:如果前面详细设计做的好,到了这个阶段就相对轻松。但是对于程序员的基本功还是很有要求的。另外有一点就是自己的单元测试一定要做好。测试培训:这个阶段其实分两个小阶段。一个是测试,一个是对用户的培训。测试包括集合测试,压力测试等,最后是UAT(User Acceptance Test)。如果都没有问题,就择良辰吉日上线了。用户培训这个环节相当重要,千万不可忽视,直接关系到最终用户对整个系统的接受程度。一般会选取种子用户先进行功能培训,并和种子用户一起对所有用户进行整个软件的使用培训。交付上线:前面这么多的阶段都完成了,所有的测试也通过了,是不是上线就一帆风顺了。呵呵,根据笔者的经验,未必。上线的时候或多或少都有一些幺蛾子。新系统上线还算好,对于旧系统升级,如果系统相当庞大,国内一般也就只能是国庆/春节进行了。为啥,有7天假期,也就是说有7天的时间用户不使用系统,这7天过程中如果出现问题也不影响用户的操作。但是如果7天时间无法上线,不好意思,只能回退,等待下一个7天的假期。维护:上线了,该庆祝了,一般软件公司上线后都有庆功会。庆祝后,不要忘了还有软件系统的维护。首先,任何系统都无法保证不出bug。其次,对于实际的应用来讲,对于复杂的系统,每天产生的数据量巨大,对于性能方面,是需要有相关监控以及相应的。在用户使用了一段时间以后,会发现一些问题也会产生一些需求。所以,软件系统的维护也是相当重要的。
上面说了这么多,都是从软件工程的角度,也都是提到了资深架构师,资深顾问,好的详细设计等等。这些都是资源,都是需要争取的,如果争取不到,不好意思,项目经理就要多辛苦了。
接下来就从软件开发这个项目的角度出发,站在项目管理的角度上,有哪些需要注意的。项目管理方面我是用PMP的体系来进行描述,笔者之前通过PMP认证,觉得PMP的体系在整个项目管理过程中也是行之有效的。PMP中涉及到项目的范围管理,时间管理,成本管理,质量管理,人力资源管理,沟通管理,风险管理,采购管理,干系人管理等。对于软件开发尤为重要的几个环节,我这边会进行描述。
时间管理:做软件开发,一定会有schedule,什么时候开始,什么时候结束。那么这里的进度计划就显得尤为重要了。一定需要在规定的时间进行交付。成本管理:无论今天是一个公司,或者一个客户,或者一个独立的自然人所拥有的资源和时间都是有限的,能投入到软件开发中的资源也是有限的,如何能够在给定的资源中完成软件开发,是对项目经理一个要求。很有可能我上面提到的那些资深顾问,资深架构师项目经理根本要不到,或者公司也提供不了,这时候就要另想方法。风险管理:进行早期的风险识别,以及相应的定性,定量分析,来制定应对的计划,从而能够达到对风险的控制。实施整体变更控制:绝大部分项目都会有变更,软件开发也不会例外。笔者对此就很有体验。对于变更的管控,也是对项目经理而言很有挑战的一项任务。
上述的都考虑到,基本整个软件开发也不会有什么大问题了。
如需要进一步交流,欢迎留言或私信。
软件开发一般学什么?
IT技术领域可以分为18个领域:
人工智能,云计算,大数据,区块链,物联网,设计,Web开发,移动开发,游戏开发,服务端开发,数据库,架构,测试,运维,网络管理,安全技术,认证考试,信息化建设。
软件开发一般指web开发、移动开发、游戏开发、服务端开发、数据库这几类,你可以选择其中一类或几类学习和研究,现在比较火的属于移动开发和游戏开发了。技术其实都是触类旁通的,能学号一个,就能学号好外一个。
高端的软件开发就是人工智能、云计算、大数据、区块链、物联网等,这里就不深入讨论。先从基本的软件开发开始吧。
web开发:
移动开发
游戏开发
服务端开发
数据库