对《软件工程》课程的总结

软件工程课程总结

 

一、对前期提出的问题的回答

      学了一个学期的《软件工程》之后再回顾自己第一天的博客,重新再看当初提出的问题,如今都在学习和实践中找到了自己的答案。

   1.为什么我们不能只精通一种语言?

     回答:

    我总结一下自己大学三年的经历说一说吧。曾经大一的我以为精通C语言就够了,直到后来学习了Java,后来我发现Java还能写网站挺不错,直到发现部署windows太麻烦大三上个学期后又学习了C#,于是乎我以为C#就够了,结果发现网页很丑,然后又要学习了HTML5/CSS3,后来发现这样还不够炫,这个学期又有了J2EE的学习。于是就这样我跟着学校的课程学了一样有一样的技能,学的东西越多就会发现,好像自己会的东西越来越不够用。 

     所以我觉得分阶段来说:首先,要做的是,搞定一门语言,我们不说精通,因为没有几个人能精通一门语言,说自己精通XXX的,大多是吹嘘的。首先要搞定一门语言,如果知道好多门语言,结果做起项目来,稍微深一点的东西就做不了了。其次,你的主要语言周边的一些东西,开始接触别的语言。但是,需要注意的是,永远都是,学一个东西,就要让这个东西能工作,不然就是浪费时间。  

    我以为我们应该掌握至少两门语言(当然这只是个人意见,仅供参考):面向过程的和面向对象的!(1)c语言是面向过程中最好的语言了,而且也比较好学,容易入手! (2)Java是面向对象中最好的语言了,而且现在大部分编程都用用的Java。但是这门语言比较难入门,要有耐心。对于专业课当然要学好,数据结构和数据库当然要学好啦,学不好这些以后的课就很难看懂了!

  

  2.什么是单元测试?

    回答:

      单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

     经常与单元测试联系起来的另外一些开发活动包括代码走读(Code review),静态分析(Static analysis)和动态分析(Dynamic analysis)。静态分析就是对软件的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和执行。动态分析就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。 

      我认为测试应该是一个挺招程序员嫌弃的一个过程。测试到底有什么用呢?在我看来测试不可能保证一个程序是完全正确的,但是测试却可以增强我们对程序完整的信心,测试可以让我们相信程序做了我么期望它做的事情。测试能够使我们尽早的发现程序的 bug 和不足。一个 bug 被隐藏的时间越长,修复这个 bug 的代价就越大。在日常的开发中,代码的完工其实并不等于开发的完工。如果没有单元测试,那么如何保证代码能够正常运行呢?测试人员做的只是业务上的集成测试,也就是黑盒测试,对单个的方法是没有办法测试的,而且,测试出的 bug 的范围也会很广,根本不能确定 bug 的范围,还得去花时间来确定 bug 出在什么地方。难道这就不浪费时间了吗?甚至,这样的方式,时间浪费的会更多。

    我的老师在上课的时候曾经警告我们:最后才修改一个 bug 的代过价是在 bug 产生时修改它的代价的10倍。我想正因为是这样单元测试才显的重要。它旨在强调在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完成全部功能的开发。

  

 

  3.如何让自己的代码更简洁?

    回答:

     我在之前的博客上曾经明确的表达过自己观点:自己的才华应该表现在设计良好的结构和模式,表现在干净易懂的代码,表现在对空间的尊重,对代码的尊重。这样您才能赢得别人的尊重!代码不是一次性的,需要重复的修改和重构,所以我们很多时候是在为未来写点代码。     

        我的总结了几个步骤,依其重要顺序:

       (1)能通过所有测试;(2)没有重复代码;(3)体现系统中的全部设计理念;(4)包括尽量少的实体,比如类、方法、函数等。

        这里我还有两个小技巧可以分享:

       (1)空语句:清理垃圾代码的最后一步就是删除空语句,空语句就是指标签间不存在任何内容的空语句。

   (2)注释语句:我们在添加注释语句时,就会要尽量避免添加那些即使删除后也不会影响网页源代码可读性的注释语句。 

 

 

  4.软件开发领域都有那些思想?

     回答:

        对于软件开发来说大致上可以分成两种思想:(1)分层思想;(2)模块思想

 

 

    5.如何开发出符合用户需求的软件?

     回答:

 

posted @ 2016-06-15 11:06  今年大三明年大四  阅读(389)  评论(0编辑  收藏  举报