软件工程提问回顾与我的总结

学期初提问博客

传送门html

对当时的提问进行回答

结对编程

在结对编程的模式下,一对程序员肩并肩、平等地、互补地进行开发工做。他们并排地坐在一台电脑前,面对同一个显示器,使用过同一个键盘、同一个鼠标一块儿工做。前端

回答:程序员

亲自体会告终对编程以后才会真实的体会到,沟通与交流的重要性,这其中主要的一点就是一块儿编程的过程当中的交流。固然,在写代码以前的沟通也很重要,那关乎结对项目的整个问题,因此确实像书中所说的,在一块儿编程能够沟通起来方便不少。数据库

产品的周期

随着时间的推移,这几类功能也会发生变化,例如手机的多点触摸曾经是“惊喜”的功能,后来是全部厂家竞争的核心功能,再后来已是最基本的功能了。编程

回答:后端

这个问题我这个学期学习了经济管理中的产品设计以后有了一些本身的见解,对于客户来讲,兴奋需求是永远没法知足的。因此开发者不断地了解客户,客户也会在潜移默化中将兴奋需求转变为指望需求,开发者应该从指望需求的角度来设计与管理产品的周期。服务器

关于 goto 语句的使用

函数最好有单一的出口,为了达到这一目的,可使用goto。网络

回答:框架

这个问题是一个同窗给我解答的:书中写的是“函数最好有单一的出口”,在函数退出以前,可能还须要作一些清理工做。若是不用goto,在每一个return语句前都须要把作清理工做的代码加上,这样就会出现重复的代码,而且比较繁琐,容易出错。函数

用户的体验

咱们的软件要为新手和专家提供可定制化的设计。一些操做方式,如快捷操做,用户能够自行调整。咱们还应该为存在某些障碍的用户(色弱、色盲、盲人、听力有缺陷的用户、操做键盘鼠标不方便的用户等)提供必定程度的便利。对于长期使用某个软件的用户,软件应该能适应用户的使用习惯,让用户越用越顺手,最后产生感情上的好感和忠诚度。

回答:

这个问题仍是从经济管理中获得一些启示,若是咱们从经济管理的供应链的角度看这个问题(一个不是很恰当的比较),那么咱们考虑的就是产品的纵向与横向的设计。在产品的市场竞争优点中有一种优点是集中化的策略,顾客的集中化也是重要的一方面。可是在这个问题上仍是要作到权衡,因此最直接与有效的方法就是经过使用者的反馈。

项目经理

软件团队里除了能写代码、测试代码和画图作设计的成员,还有一类角色,不作上面这些事情但也很重要,咱们叫他们项目经理——PM。

回答:

一个优秀的项目经理彻底是能够承担一部分的开发的任务的,不过这是相对于一个小的团队来讲,好比说我以前所在的的那个 PureMan 的兼任项目经理与开发的吴昊同窗就很优秀,参与到开发中还能够更好的把控整个项目的进度。

IT行业的创新

这个想法看起来没什么错,咱们不就是为了成为某个领域的专家,才来上学,拿学位,但愿拿到学位以后成为专家,而后再开始这个领域的创新?可是统计数据代表,70%的创新者说,他们最成功的创新,是在他们的拿手领域以外发现的。

回答:

这个问题我是在读了吴军老师的浪潮之巅以后,有了一些本身的看法,也算是解决了本身的当时的困惑吧,IT行业的创新,不只仅是行业内技术的创新,还能够是与外界技术的结合的创新,还能够是商业模式的创新。

在实践中各个阶段学到的知识点我学到的知识点

需求阶段

软件开发是一个过程,我但愿他是一个螺旋

需求阶段更多的了解客户,毕竟一切都是为了使用者,咱们的目标就是提供更好的服务,因此要撤离知道需求是什么,就必须去了解客户,去了解市场。

设计阶段

这一阶段除了要考虑到客户以外,咱们还要从开发者的角度看这个问题。从客户的角度,设计的目的就是尽最大的可能去知足客户的需求,这一阶段还能够达到使用者的兴奋需求,也就是需求者意料以外的惊喜,可是考虑到开发者的角度,以及其它因素,时间成本,人力成本等等,因此须要作出一些权衡。

实现阶段

实现阶段主要就是工程的推动,这个过程当中,开发者要对本身的时间把握以及过程的推动有必定的掌控,既要保证质量,又不能开发的太慢,致使整个过程都滞后,这个过程也须要开发者本身权衡与考虑。同时要注重团队开发之间的合做与交流性,好比接口这些关键的地方。

测试阶段

开发的过程很重要,可是测试的过程一样很重要。由于没有人可以写出彻底没有bug的代码,更况且是团队合做。测试的过程是对项目的进一步保证。测试不只仅要从产品的需求的角度来看待成品,还有不少须要测试的地方,不是一个客户的需求,可是当客户组成一个群体的时候,它就变成了一种需求。

发布阶段

发布阶段,发布阶段主要的问题是平台的选择。若是不借助宣传以及平台的影响力的话,很难实现大规模的推广产品。因此平台的选择很重要,因此在开发的阶段还要考虑到以后平台的需求,也就是推广的需求。

维护阶段

维护阶段,主要是后期阶段,有一些项目只有前端没有数据库的维护起来就很简单,好比 PureMan 的博客园手机 APP,可是我以后参与的葫芦娃的神经网络可视化的,就遭遇过服务器被攻击的状况,不过还好当时没什么重要的数据,代码也使用 GitHub 管理,只好从新部署。

心得

学习方面的心得体会

我在软件工程开发的过程当中,担任的角色是测试者的角色。我在博客园手机 APP 开发度过了 \(\alpha\) 阶段,而后在生成深度学习代码的网站小组度过了 \(\beta\) 与 $\gamma $ 阶段,这两段的测试分别是安卓软件的测试,与网页的测试。这两个阶段的测试,有些相同又有些不一样。

相同之处

  1. 前端的测试都是以组件为基础测试,组件之间的相互做用是实现功能的基本方式
  2. 须要对接口进行测试
  3. 均可以使用自动化的方式进行功能测试

不一样之处:

  1. 第一个不一样是使用的软件不一样,可是测试方法类似
  2. 对网站的测试,须要对后端的服务器测试,博客园APP原本也须要测试,只不过他调用的是博客园官方的API,
  3. 对 Django 框架下的代码作单元测试,

在功能方面,很难作到万无一失,可是天网恢恢,疏而不漏,我采用的是使用bug树的方式进行测试,可是这个方式也有局限性,那就是在咱们这种产品功能较少的状况下,可以完整的覆盖功能,可是对于状况复杂的软件,使用的话,就会过于冗余。而对后端的测试,本身的体会就是,须要注意开发的代码是否过于冗余,这样不只仅会下降效率,接口之间的相互调用也容易出错。

其它的心得体会

除了在学习技术上获得的知识外,在团队开发中也有一些体会。我经历了两个团队的两个不一样的开发的过程。从一个队伍融入另外一个队伍,而后一块儿学习,一块儿工做,一块儿将本身的事情作好,我以为是一件很可贵事情,还有就是,沟通真的很重要,进入葫芦娃的时候,有些地方感受仍是没法适应的那么块,与开发者之间的沟通,使本身的效率大大的提升了。

相关文章
相关标签/搜索