程序员开发思考-1

今天对忽然对本身平时的开发凡是思考了一下,出于如下两个缘由:算法

  1.本身对本身负责的需求的开发时间评估老是不许或者说压根就没有认真评估过,致使一直都没思考这个主题的内容。数据库

  2.以为本身对某个功能的开发周期太长,或者说是开发出来了,老是记不住本身的开发思路,老大问起的时候,老是解释不全,要从新翻看本身的代码才知道本身的逻辑,有点好笑。编程

  3.本身开发出来以后,bug老是比较多。架构

基于以上缘由,本身回顾了一下软件开发过程,以下。以为任何一个功能,都要按照软件开发流程的模式去执行才符合一个高级工程师或者说架构师的风格。根据本身的思考,手绘了如下图(ps.哪位朋友有比较好的关于画图这方面的软件,但愿能够介绍几个,下次我就不用手工画图了,嘿嘿~)并发

问题1:编程语言

  开发需求,只有每次都本身主动去评估开发周期,本身才会对本身更了解,同时对需求的开发周期评估才会更准确,更有经验。——这样你才有胆量去作项目经理或者说“老大”。至于说如何去评估开发周期,我我的认为有两个参考点:①业务复杂度;②算法复杂度;高并发

这里附带个链接,挺有意思的:人生经验——如何在三分钟内完成开发周期评估性能

 

问题2:单元测试

  软件开发,任什么时候候思考都比编码更重要。思考过的编码才更清晰更少bug。大牛都是90%的时间思考,而后10%的时间用于编码的。若是思考好了,编码真的是个简单的事情。关于如何思考,在软件开发这方面,固然是按照工业的软件开发流程啦,认真想一想,这个流程真的是颇有道理的,按照流程去开发(也不用严格按照要求每一步都作完,可是思路上得是这样),开发出来系统(功能),才更具可扩展性,可用性以及可伸缩性。软件开发就是要求开发系统要考虑如下几个特性:①可扩展性;②可伸缩性;三高性能;④可用性。至于这几个词是什么意思,这里我就根据本身的理解大概说一下:测试

可扩展性:能适应需求的变化,以及后面软件的扩大,达到改动最小;

可伸缩性:单机性能达到瓶颈的时候,能够方便的经过横向扩展,增长机器就能够承载更大的请求;

可靠性:其实就是容错性,在系统正常处理的过程当中,出现异常的时候,也能保证系统整理逻辑正常的,最简单的例子就是:数据库的事务,等等~

高性能:这个就不用说啦,就是让系统的处理能更加高效,更少的资源占用或者说处理逻辑更加简单等等~

 

问题3:

  其实答案和问题2同样,只是开发出来以后,本身要认真地作单元测试走一遍流程。在临界值的地方,要认真度量好,最好也作一下临界值测试~

 

下面是关于上面这样图的如下思考总结:

1.其实软件开发流程,就是跟哲学同样解决几个问题:能够作?-》作什么-》怎么作-》怎么样

可行么:

  可行性分析:经济可行性+法律政策可行性...

作什么:

  需求分析:功能+性能+硬件环境条件

怎么作:

  概要设计:创建系统的逻辑模型,与计算机无关;架构(分模块等)+数据库(那些表,不用具体到表字段)

  详细设计:物理模型,能够直接翻译成代码;算法+数据库(表字段)

  编码:根据详细设计,把详细设计的文字翻译成具体的编程语言而已~

怎么样:

  测试:单元测试+回归测试+系统测试

 

2.概要设计阶段要认真考虑如下几个特性(各个特性的含义以上已经有解释):

  可扩展性,可伸缩性,可靠性,高性能

 

3.平时说的电商网站有如下几个特性:

  高并发,高可用,高性能

  即所谓的三高。这只是电商网站或者说是一些软件的特性而已。而咱们平时说,设计一个系统的时候,要考虑的是不同的概念来的,好比说,咱们设计一个系统,要考虑:可扩展性,可伸缩性,可用性,高性能~

相关文章
相关标签/搜索