个人阅读作业3
1.M1/M2总结
软件工程这门课上我们接手了学霸系统安卓端的移植项目
在M1阶段,我们进行了明确的分工,还做了一个整体性的计划.可是在移植的过程中,我们发现学长的代码里漏洞百出,他们后台的数据库更是惨不忍睹,根本没有什么规范,连一些最基础的约束都没有.
当时我甚至都在想,这样一个项目有移植的必要吗? 连基础平台的版本都如此不能直视.
不过大家的态度都是积极的,我们中的好多人,包括我,都从零开始疯狂地学了ASP.NET,ANDROID开发,XML,SERVLET,LUCENE等等知识,每个人都非常努力地修改错误,与此同时还在不断地进行移植,大家都很累,累到每天光为干这一个事都要熬夜到3,4点钟,甚至更晚.
开发的过程中,组内有技术经验的人也对我们有所指导,而前端与后端开发人员的交流沟通从未停止,PM则为我们做各个方面的把关,每个人都在认真地工作.
于是,在我们的努力下,学霸的M1版本开发成功了.
这个M1阶段给我的感觉就两个字:坑,累. 我想,如果我们没有那么的团结,那么的积极的话,这个项目是不可能完成的,至于为什么你懂的.
M2阶段,这是大家都忙的不可开交的时候,几门课设都临近验收,一门一门课程陆续结业,考试,重要的必修课的考试也很近了,在这么重的压力下,我们团队的精神仍然不可磨灭,各种各样优化的尝试都在不断地进行,大家也是见缝插针,有时间开发就开发一点.没有浪费时间.即使是现在,还有很多新的优化内容被不断提出.
我想,我们的项目不一定是最好的,最漂亮的,但我们的团队一定是最认真,最努力,也最团结的.
2.链接到以前问题的博客
http://www.cnblogs.com/suwako/p/4019760.html
其实当时的问题大多是设计原理方面的,通过看书以及实践,这些问题很快地被消化掉了.
3.看看以前读过的文章,有没有新的体会?
确实有新的体会
还记得在《No Silver Bullet - Essence and Accidents of Software Engineering》中,布鲁克斯提到的附属性(将概念上的构思施行于电脑上,所遭遇到的困难),这一点说得确实对,当我在做前端的时候,就发现自己的许多构思都被安卓的一些硬性规定所限制,还有一些方面,比如说界面布局,就这么简单一个事,就那么几个位置,在实际操作的时候就发现非常恶心,甚至对齐都不是那么容易做到的,还有等间距什么的,都要好好研究...... 另外就是配合性(在大型软件环境中,各子系统的接口必须协同一致。由于时间和环境的演变,要维持这样的一致性通常十分困难),我们程序的接口真的是一改再改,改了无数次,因为前端在开发的过程中会遇到各种各样的情况,所以接口之间就需要自我协调,互相协调,前端对后端的需求更是在随时改变,那么后端的接口也要不断地修改,可是修改的时候还要考虑其他使用这个接口的人员,这一点就非常地麻烦,需要各方商议,达成一致意见.在M2阶段,还涉及到整合的步骤,这个就对一致性的要求就更高了,我们各个组之间做了好多的讨论,才在接口方面达成一致.
还有《The Cathedral and the Bazaar》中提到的市集开发模式,我觉得我们的团队在这个模式下做得很好,虽然我们接到的这个学霸版本让我们很无语,不过我们每个人对自己还是有着比较明确的要求,也有责任感,所以能将Android端开发出来.
另外一点,也是感受最深的一点,就是《Worse Is Better》中优先分级将简单性放在第一位,确实有道理.对于我们这种接受了棘手项目的初学者,如果在设计时不做到简单明了的话,一定会出现很多很多无法预料的错误.其实就连简单明了的设计,也会出现不少错误,不过这些错误,因为它们出现在简单的思路中,所以比较容易捕获.我想,追求高大上是要分场合的,你要是有能力,有经验,还对项目开发理解透彻的话,要尝试的话未必不可;否则的话弄得云里雾里,又复杂又漏洞百出,还调试不出来,这不就是傻么.
最后看看学到了什么吧
需求阶段:
ASP.NET基础 , MD5加密校验原理 , HTML基础 , LUCENE原理 , 盘古分词器的操作 ,还有一部分网站搭建的知识
设计阶段:
ANDROID开发基础,XML,ANDROID工程配置方法,各种布局,各种控件的使用方法,ANDROID端向服务器端上传,从服务器端下载文件的方法,服务器端SERVLET的编写,ANDROID端的文件存取方法,各种权限的控制.
实现阶段:
学会使用后台的接口,尝试使用线程进行数据库访问,ANDROID端应用的调试方法.
发布阶段:
软件工程整合的一般方法.
维护阶段:
ANDROID端应用错误类型分析.