个人阅读作业——回顾与体会

  一开始的5个问题:http://www.cnblogs.com/hello-jane/p/4025407.html

  第一个是断言的问题,在当时的博客中已经得到解决;

  第二个是瀑布模型的问题,也在当时通过阅读书籍得到了解决;

  第三个问题是形式化开发的问题,这个问题当时也是查阅网络资料解决的。不过当时对其数学性阐述较多,下面再阐述一下它的其他特点:

   形式化方法的出发点是数学逻辑方法,其目的是开发可靠的软件产品。形式化方法可以分为形式化描述和建立在形式化描述基础之上的形式化开发。形式化的描述就是用形式化的语言(具有严格的语法语义定义的语言)做描述。形式化的软件开发,就是用形式化的语言来描述软件需求和特征,并且通过推理验证来保证最终的软件产品是否满足这些需求和具备这些特征。这样的验证需要建立在严格的语法语义的基础之上,在实际应用中肯定不容易做到,但形式化方法研究的目的就是希望能够提供更好的理论、方法和工具,扩大形式化方法的应用范围和使用价值。

  形式化方法还能帮助发现其它方法不容易发现的系统描述的不一致、不明确或不完整,有助于增加软件开发人员对系统的理解。因此它是提高软件系统的安全性与可靠性的重要手段。

  软件开发自动化技术是提高软件生产率的根本途径之一。软件自动化的前提是形式化,虽然自动化化技术到目前还是有很多局限,但是这始终是追求的一个方向。目前形式化方法对编程自动化也有一定的帮助。对于一些简单的系统,形式化的描述有可能直接转换成可执行程序,这就简化了软件开发过程,节约了资源和减少了出错的可能性。另外,形式化方法可以用于程序的验证,以保证程序的正确性。对于测试来讲,形式化方法可用于测试用例的自动生成,这可以节约许多时间和在一定程度上保证测试用例的覆盖率。在结对编程时,我们也使用了VS自动生成一些单元测试的代码。

     不过,形式化方法的应用在电路设计和协议设计上取得的成绩更大,但是对于软件来讲还有很多没有解决的问题。软件的描述要比电路和协议复杂,一个软件描述所包含的状态空间通常来讲可以是无限的,因此验证的难度很大。

  第四个是TDD的问题,当时查阅资料对其进行了一定了解。有一些人的意见是保留单元测试,舍弃TDD;但记得vczh大神说他自己的感受是做好TDD可以将开发出相同质量代码的时间缩短到30%左右。至今没用过这种开发方式,希望有机会感受一下吧~

  第五个是每日构建的问题,当然在这次的团队项目中这一部分可谓是得到了实践。在开发过程中每日构建是很有用的,像我负责的部分由于相对独立,所以影响较小,但有的队友的部分比较紧密,每日构建对大家保持一致性,提高开发效率很有效果。

 

  至于之前阅读的文章,经过实践开发过程对软件工程的一些方法论有了一些切实的感受,但总的来说还是实践较少,讲不出来太多有意义的东西。

 

  六个阶段中的学到的知识点:

  ·需求阶段:

  需求是开发过程的基础,没有需求,就不用开发…… 我们说开发需要迭代,其实需求也需要迭代。特别是现在出现的APP等开发周期短的软件,在吸取用户意见后也需要对需求进行迭代。而我们这次的项目也可以说是在开发中自我调整、迭代需求。因为我们是在上一届的基础上做,所以刚开始的时候有一种不知道要做什么的感觉……一边动手一边更有了改进的灵感。

  ·设计阶段:

  设计阶段制定出的标准不止是对软件开发来说很重要,对大部分工作都如此。标准使大家的工作协调一致,减少了集合的工作量。不过我们这次项目开发在这方面做的不算很好,没有注重细节。

  ·实现阶段:

  敏捷开发是时下流行的开发方法,无疑也是一种有魅力又有效率的开发方法。在网上看到敏捷建模的价值观,觉得很有启发意义:敏捷建模(Agile Modeling,AM)的价值观包括了EP(Extreme Programming:极限编程)的四个价值观:沟通、简单、反馈、勇气,此外,还扩展了第五个价值观:谦逊(最优秀的开发人员都拥有谦逊的美德,他们总能认识到自己并不是无所不知的。事实上,无论是开发人员还是客户,甚至所有的 project stakeholder,都有他们自己的专业领域,都能够为项目做出贡献。一个有效的做法是假设参与项目的每一个人都有相同的价值,都应该被尊重)。

  ·测试阶段:

  程序员的自测不仅是测试需要,也是开发的需要。不过第三方的测试也非常重要,不可缺少。实践表示,人对自己写的程序真的不如别人能痛下杀手。。。

  ·发布阶段:

  发布就像是生孩子,如果准备充分能顺产;不充分就是难产了……说不定还会胎死腹中。。。 但不管是否顺利,开发人员紧张的心情都是不会减少的。。。

  ·维护阶段:

  这个更深的感受不是出自我们的项目,毕竟从alpha到beta的过程更像是继续开发+测试,当然我们曾经的bug也是让人费了力气,感受到每一步都要认真对待的重要性。我自己在用软件时还是挺注重对开发者的反馈的,有些开发者或公司对我的反馈处理很及时并能体现在软件的更新中,用户体验很好。其实维护,不是维护程序,而是维护用户的体验。希望未来我在工作中也能做好这个阶段,做一个“善解人意”的开发者。

 

    

 

posted @ 2015-01-10 00:50  Hello_Jane  阅读(327)  评论(2编辑  收藏  举报