【个人阅读】软件工程M1/M2阶段总结

这次作业是好久以前布置的,由于学期末课程设计任务比较重,我在完善M2阶段的代码的同时又忙于数据库的实现和编译器的实现,一度感觉忙得透不过气来。。。。到这些都基本完成的时候,会看自己以前的阅读心得,觉得经过了M1/M2阶段自己第一次接触android代码开发的一无所知到后面通过合作编程以及不断的查找资料和测试代码下,我对结对编程以及软件开发又有了一些个人的理解和建议,正好发现还有一次阅读作业,就顺便我的想法都记下来。。。

还是从学期开始来说吧,第一次是个人统计词频的项目,这次作业还没有纳入团队编程的范围之中,我感觉应该是准备工作吧。词频统计程序不是很难,所以用基本的语法,很快的完成了代码的编写,调试阶段还是花了一点功夫,主要是之前写的代码冗余太大,篇幅太长,看的时候有点眼花(就1词 2词 3词的检索代码基本都差不多),而且自己写代码的时候分号不对齐,喜欢把简单正确的一部分代码合在一行写。结果当逻辑出现问题的时候(多跳了一次光标)等,感觉看自己的代码越看越恶心。所以从头到尾优化了一下代码风格,把检索写成了一个模块,用正则表达式来进行检索(之前不懂这个概念,因为和同学讨论时同学都说正则表达式好用,我就上网学了挺久时间才弄懂),最后调试运行终于成功了,感觉还可以,不过速度还是有点慢。。。

结对项目实现电梯调度算法的设计,每个电梯属性都不一样,最初我和同学讨论的时候,设计了一种谁来搭谁的很简便的算法,后面发现这种算法在人少的时候比较合理,但是在人多的极端情况下,比入300人一起在1楼等的情况,这个算法还没有傻瓜调度快,所以后面我们综合了几种极端情况结合助教的代码终于设计出了一个比较合理的算法,拿了50分。

之后就来到了M1阶段,由于黄金点游戏的排名比较靠后,我们是作为自选题目小组选择了开发一个android运用。我分配的任务是实现一个底层页面的设计,展示出一道菜的制作过程。对于android,之前没有一点基础,所以我也特地花时间在android页面开发的学习上。但是在实现的时候也遇到额很多问题,第2周和第三周的时间我都在上网或者问同学来解决这些问题,开始对于json数组及json的分析提取及封装等过程比较迷茫,和队长讨论的时候,队长建议我去网上找一个关于json解析运用的实例代码去看一下会比较好。我同意这个看法,就去网上随便找了个(真的是随便找的么。。)结果看了个逼格比较高的代码,看了半天硬是没看懂,就老老实实去图书馆借了本开发实例结合语法学习才一步一步知道。之后在页面布局的设计阶段,我使用listiew的时候发现listview套用图片文字会使图片显示不出来,看来了半天也不知道为何(其实很多时候我都觉得一些错误我怎么看都看不懂。。包括解释。。),后面查询资料才知道,得改写其中的方法,弄了半天才把基础的M1版本写完。。感觉虽然很累但是真正学到了很多有用的东西。

M2阶段,由于各种课程设计的压力,我一度忽略了软工作业。。。不过对于团队作业,自己的部分还是应该在规定的时间内要完成对应的目标,不然会影响进度和队长的工作,所以在M1的基础上我明确了自己的目标,花了一下午和队长讨论了界面的优化方案,最后确定后我有通过对页面结构的学习为listiew添加了headeview以及一些相对布局的实现,顺利完成了要求。

虽然自己的工作是完成了,但是得到的成绩并不理想,我简单的回顾了一下自己的开发代码以及之前阅读作业的感想,发现了几个比较大的问题。

1.对于自己的代码,我们不止应该去完成它,还要想办法去找它的bug并解决它,对于M1/M2阶段的开发,我是鉴于学习的基础上做出来的,原则上还有很多可以优化的地方,在测试阶段对软件的使用时我们也发现关于我页面的一些问题,如果在自己完成代码优化时多考虑一些问题,就能避免这样的尴尬,也能加快团队的开发进度。。。

2. 在阅读作业中我也明白了团队项目的开发最重要的不仅仅是个人部分的开发的晚上,更重要的事团队之间协商的代码的连接架构以及全局解决方案和各种情况下软件实现方面问题引申到每个人的代码的问题,要写好团队项目,就必须及时和正确的和队员沟通,无论是困难的解决以及接口的规范或者是代码连结的调试,都能及时发现问题,提高效率。

在自己的开发阶段,我曾经想通过自学自己干来“独立”完成代码编写,事实发现这样的想法是不成熟的。遇到的问题应该多多结合和队员的交流讨论,并且在代码功能及结构的设计层次上,自己在设计时由于没有和队长进行完全的沟通,导致开发时的接口以及参数引用不正确,自讨苦吃。。

不过,自己也在后两次阶段实现时收获了很多的感悟

首先,1+1>2,在我实现json的解析与展示的时候遇到的问题在和相关开发任务的同学经过交流,一起解决困难,这样比两个人分开解决好多了,并且我们也互相借鉴了对方的开发方法和部分开发风格,都得到了代码的优化。

由于自己的组织能力不是很强,所以没有选择当队长,后面我认为,队长不仅要负责协商团队编程的进度,也得承担代码连结方面的工作,强度可见一斑。。。对于每一位队员来说,应该服从队长的安排,最规定的时间完成目标,有什么结构问题优先找队长协商,而不是找其他队员私下决定。我在和队长交谈算法和处理问题的时候也交流了许多界面以及功能结构方面的知识,也渐渐对自己的部分有了全局的理解,这对于自己的开发也大有好处。

对于代码强度来说,我觉得还吃得消,虽然之前没有接触,在实现代码的时候在优化算法方面以及功能设计方面也会有很多的不足,但是至少前面的空白自己都硬着头皮一点一点学来了,后面的高级部分我们也应该抱有信心和热情,努力克服困难。

关于个人的建议,其实我不太建议选学长代码的完善,我更倾向于选一个新的问题从头做起,这样我能够从头到尾经历一次比较完整的开发过程,才能真正体会到团队项目的特点和交流,整合以及优化测试的重要性,这样也让我认识到了大工程不仅仅要重视算法,更要重视架构上和变化上对软件目标实现的综合整合。

唯一很遗憾的就是,对于《构建之法》的理解不是很深入,其实软工的东西基本都是从这本书上整合来的。。遗憾自己没时间更加深入android开发的一些优化算法,对自己的页面不太满意,对其他的大作业花了比较多的心思,软工没有投入更多的时间去做也是自己的问题。。。

此时我又想到编译老师和计组老师说过,大作业虽然会累得让你喘不过气,但是你付出的越多,收获的也会越多,所以我们也没有必要去抱怨什么,软工也是如此,团队的工程,多学多实践,多多交流,寻找好的方法和途径,从头开始虽然很痛苦,但是我也学到了团队开发的基本过程,如何去解决问题(问同学,上网差书籍,学习别人的代码也是一种很好的方式,但也要找一个比较合适的代码。。),总能写出点什么好东西来的!

之前阅读博客链接

http://www.cnblogs.com/12061174lj/p/4027885.html

http://www.cnblogs.com/12061174lj/p/4072310.html

时间: 2024-10-08 23:24:56

【个人阅读】软件工程M1/M2阶段总结的相关文章

软件工程M1/M2总结及阅读作业总结

一.软件工程M1/M2总结 写下这篇总结的时候,我们的软件项目尚未完工.虽然尝试申请了延期答辩,但最终未能成功.这意味着,我们的项目能否正常发布已经处于了一个微妙的状态.可能可以,也可能不可以.只能尽力而为了. 整个一学期的开发下来,我在软件工程方面体会最深的是成本问题以及技术债.以前写的项目往往没有特别严格的deadline,很多是个人的随兴而写的东西,写不动了就不写了.又或者是作业,最多也就那么一千行,怎么都是可以写完的.而软件工程这门课的团队项目,7个人,一个完整的网站,特别是对于我们这个

个人阅读作业 --软件工程M1/M2总结

软件工程M1/M2总结 写在前面的话: 这学期的软件工程伴着考期的展开逐渐落下帷幕,回顾这学期的软件工程,我感觉我的热情在一次又一次的失落中逐步消耗殆尽,每个人对于这门课的体验都会有所不同吧,可以确定的是软件工程的方法论非常重要,于实践中的应用也非常重要.但是这是否就自然而然的衍生出我们对于这门课程发自内心的认可呢?我认为这个问题还值得继续探讨.

【个人总结】软件工程M1/M2总结

个人博客连接: http://www.cnblogs.com/lwq12061168/p/4094252.html http://www.cnblogs.com/lwq12061168/p/4028450.html 这次作业是老师很久之前布置的,今天晚上是截止日期,也是才想起来写.其实前几天也想起来了,但是忙于其他的考试和课程设计,所以推后了.这使我又想起高小鹏老师的经典之言:“deadline是第一生产力!”,真是无比正确.只是无端有一种“呵呵”的感觉. 我实在是不想写一些冠冕堂皇的话,说我在

【个人阅读作业】软件工程M1/M2总结

链接:”看<快速软件开发>的五个问题“ http://www.cnblogs.com/leiyy/p/4027759.html 一.较为明白的问题 1. 在文章的第一个关于Square_Tech的案例中,代码测试和优化都是在所有程序完成以后才进行的,这应该也不符合快速软件开发的要求吧.如果测试工程师在最开始的时候就加入到软件开发中的话,软件开发进程会不会更快呢? 在团队项目之前,虽然并不是特别了解测试工程师的工作内容,但想到既然是软件开发项目中的一个单独列出来的角色,那就肯定大有用处.当初为什

软件工程M1/M2总结

已经清楚的问题: 1. 什么是“没有银弹”论断? 通过阅读Brooks最著名的这篇文章,我知道了在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道.而各种声称如何如何神奇的理论或方法,都不是能杀死“软件危机”这头人狼的银弹.在软件工程中,虽然各种高阶语言的使用有效地移除了次要复杂度的问题,但是软件本身的必要复杂度却无法被移除掉.就比如我们平常的作业,面向课程中的电梯调度,电梯的状态变化和各种属性都必须考虑和实现,如果参考现实生活中的一些实际例子,情况就变得更加复杂.总而

M1/M2总结

M2阶段也快结束了,在此对M1和M2阶段做一份总结. 之前的问题 之前在http://www.cnblogs.com/encoin/p/4027044.html中提出了5个问题,现在去看觉得当初提的问题挺幼稚的.而且自己也给出了回答,在此就不再赘述,仅对最后一个问题做一些补充. 对于最后一个问题,我之前的答案是先多了解几门,然后选择自己感兴趣的.经过这学期的学习,我觉得我也不知道自己到底对什么语言最感兴趣,感觉就是这一段时间用什么语言写多了,写惯了,似乎就偏向于那种语言了.只是很多时候会因为需求

M1/M2项目阶段总结

1.M1/M2总结 我们这学期完成了学霸项目. 在M1阶段,我们首先进行了分工,完成了一个系统的计划,然后是对学长代码的移植和优化.在优化代码的过程中,我们遇到了不少问题,比如一些代码的冗余以及指向性混乱,数据方面的处理也是没有系统,没有结构.由于大家之前接触的语言都是C,C+和Java,而且只知道git,没有用过TFS,好在大家勤勤恳恳,努力学习了C#,JSON,TFS,并对代码中的错误进行修改,在此过程中付出了极大的辛苦,才得以将M1版本开发出来. M2阶段是在与很多科目的竞争中做出来的,当

M1/M2个人总结

软件工程整个学期结束了,很开心学了这门课,在学到知识的同时也提高了自己的动手实践的能力,感觉自己在整个软件工程的各个环节中都能有所把握,可以将学到的知识运用到设计.实践更多的项目中去. M1阶段个人总结 这是之前写的总结的链接:http://www.cnblogs.com/zmpy/p/4117668.html M2阶段个人总结 人员分配与任务调整 由于M1阶段基本所有代码都是我写的,之前软件开发中的所有框架我都已经搭建完善,所以我们团队讨论了一下,决定把M2阶段的任务分配给他们每个人,每周每人

“北航学堂”M2阶段postmortem

“北航学堂”M2阶段postmortem 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 这个问题我们在M1阶段的时候就已经探讨的比较明确了,就是要做Android端的北航MOOC精品课堂:典型用户就是那些渴望接触北航特色教学课程的同学. 2. 是否有充足的时间来做计划? M1阶段结束后,我们小组召开了一个事后诸葛亮会,因为M1阶段很不成功,其中一个重要原因就是没有预留一个充分的时间来做计划,分配任务的时候也比较粗糙,导致很多出乎意料的事情出