软件工程老师给我们留了阅读作业,刚开始觉得老师留的作业阅读量太大,而且时间太短,对此感到不是很理解,但是当我开始阅读《移山之道》这本书的时候,感觉这本书真的写的很通俗易懂,利用移山软件公司人员开发经营石头销售的软件的故事贯穿整本书,使我们很清楚的理解每个环节的顺序和重要性,同时也给我们实例展示了怎么开发项目。通过这本书的阅读,我意识到以下几个问题,这都是以前我的误区和不曾想到的事情。

1,软件开发的工具和方法十分重要。想要做出高质量高水平的软件并不是团队中只要有高超的编程能力和熟练地技巧就能完成的。一个软件开发团队需要一系列的管理工具,协作工具,软件构建工具,以及能保证软件质量的测试工具。软件开发的方法很多,每种方法都有着各自的使用原则,虽然说瀑布模型和螺旋模型已经过时的,但是依然有着各自的优势,不能被忽略。

2,软件开发过程不同角色的成员有着不同的作用。刚开始接触的时候,总觉得会编程的就是牛人,个人技术好的就能够独当一面,通过这次阅读,扭转了我的这种想法。PM虽然听起来好像级别高,其实和团队中的每个人都是一样的,只是工作不同;DEV看似是软件工程的核心,没有好的DEV就无法完成代码编程,无法实现高超的功能,也就没法完成软件开发,但是DEV并不是万能的,如果没有PM的需求规划,项目管理,没有好的测试人员寻找小强,就无法完善自己的程序,无法开发出满足顾客需求的软件;开始时觉得测试人员无关紧要,但是通过老师的讲解,我懂得了软件测试是必不可少的也是至关重要的环节,对于一个功能完整的软件,遇到的典型用户和情景非常之多,而且还有很多情况会违规操作,还有很多特殊的情况我们容易忽略,这些都需要好的测试人员来挖掘。每每个角色的成员都要各司其职,共同对项目负责。

3,软件开发流程必需每步都做好。上学期学面向对象的时候,我们是这样写项目的,首先我们编写代码,如果中途觉得想要添加什么功能就继续补充,写完之后开始根据我们写好的代码编写需求文档等等,结果发现我们有很多功能我们想要补充但是很麻烦,而且和我们刚开始想的有很大的出处。现在懂得了我们的失误之处。在考虑软件开发的时候要考虑NABC,哪一个环节没有想清楚都会给以后的工作带来麻烦,并不能一味的要求写代码。需求文档,设计文档都必须考虑清楚,并用这些指导我们编程。

4,充分利用TFS,规划好每天的工作。开发软件并不像我们参加竞赛编写一道程序题目一蹴而就,每天定期的规划好团队中每个人要做什么是十分必要的。根据整体的规划来决定自己的进度,并且告知同伴自己的成果,以便他人使用。虽然说这样有些麻烦,但是这是保证每个人按照进度步步前行的必要手段。

虽然说这次阅读作业收获很多,但是还是有很多的知识没有太理解,有很多概念也不是很清楚,需要自己重新阅读和查找。大致列出自己疑惑的问题:

1,VSTS功能好复杂,每天查看TFS也很麻烦,很多时候难以做到更新,有些人可能完成了也懒得修改,这样势必给团队协作造成影响,如果遇到这种情况又该采取怎样的办法。

2,如果一个人同时参与了不同的项目,那么能用一台机器同时管理这两个项目吗?

3,在敏捷开发时,提及程序可修改性和迭代性,可是我们在做软件开发的过程中,难道不应该时考虑清楚,规划清楚,不能出现提及到的汽车安装失误的事情吗?

4,在软件开发的过程中,我们应该面对大多数用户的需求,那么还需要考虑添加特殊的功能吗?这样会不会增加软件开发的时间和成本,但是也没有特别显著的效果?

5,我们可以利用VSTS学习所有的经验,俗话说的好“纸上得来终觉浅”,我们可以借鉴阅读别人的经验教训,可是能有多大的作用?我们都很清楚,在高中的时候经常听到别人说这个地方容易出错,可是还是得等到我们自己正在在这个地方出错之后才能明白为什么才能记住。

6,MSF团队模型中讲究角色平等,重要的决定又大家共同提出,可是如果大家各执己见,协调需要花费时间,而且可能出现多数人的建议并不太理想。有一个好的leader是十分重要的,可以很好地把握软件开发的方向,那么究竟是有一个领头人还是MSF团队模型好?

7,MSF过程模型和传统的瀑布开发模型有什么区别,不都是规划好每个阶段吗?不都是完成一个阶段就进入另一个阶段吗?

8,如果一个团队的项目取得成功,那么怎么评论谁的功劳最大?对于MSF团队是不是很难确定?而且纠纷不断?

9,在团队开始期间和在团队进行到后期测试阶段,那么DEV是不是就空闲下来,那么这么长的一段时间都没有什么重要的事情要做?

10,如果在项目开始时进行代码规范,那么如果有人不习惯这样的修改怎么办?如果不同的项目要求不同的规范,那么岂不是很麻烦?如果代码规范大家都不自觉的不使用,那岂不是没有任何价值?

11,代码复审的效果会不会很低?个人觉得如果查看别人的代码会比较无聊也很浪费时间,而且查看一般无法发现问题,而且两人意见不一致容易出现分歧。

12,一次次的迭代过程会不会很浪费时间,能不能把主体功能一次实现,如果遇到问题再修改?

13,使用VSTS,对于我们软件开发究竟在哪方面起到很大的作用,如果我们不使用这个,但是基本上都会按照软件开发的流程开发,两者有多大的差别?

给本书的建议:

1,最好再把具体的概念讲解清楚些,建立各种概念之间的联系

2,举例详细的分析不同开发流程和方法的区别,这样可以使读者阅读更加清楚

3,文章中的故事很清晰地表达软件开发过程中需要做的事情和遇到的问题,最好能最后总结整理一下

4,软件开发工具介绍的多余其他方面,希望其他方面再完备些,写的在具体详细些。

5,本书的条理清晰,实例讲解印象深刻,如果在每章讲解故事的同时旁边标注具体的知识点,会使读者更容易学习