最后一次作业——总结
改作业所属课程 | https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 |
作业要求链接 | https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/3350 |
团队名称 | Eight party to gain(八方来财) |
作业目标 | 对一学期以来自己的学习状态进行回顾,总结自己所学知识和新增技能,为这门课做一个课程总结。 |
一、团队成员
姓名 | 学号 |
黄亚恒 | 201731082208(组长) |
肖磊 | 201731062534 |
肖莉 | 201731082408 |
邓召春 | 201731082206 |
方旭瑞 | 201731102211(PM) |
汪海鑫 | 201731081716 |
姜亦航 | 201731083311 |
郑智豪 | 201731062514 |
二、小组成员总结
201731083311+姜亦航
- 问题回答
第一次项目链接:https://www.cnblogs.com/Andrewhang/p/10557894.html
- 书中第七章第133页的问答中,阿超用了一个“围观下棋者支招”的故事,来说明责任人应该自己拿捏主意,别人的意见知识参考,不该讨好别人而采用别人的意见。我认为,在软件项目开发过程中,应该注重团队合作,有不同意见可以团队成员一起讨论,从而拿捏最好的方案。阿超的例子中,围观者的确与这盘棋的输赢无关,但是在我们的项目开发中,每一个细节我认为跟大家都是息息相关的,所以我认为这个例子不太恰当。那么在实际软件项目开发中,到底是责任人按照自己的想法做出决定,出了事情全部承担好一点,还是团队一起讨论定下方案,出了问题团员自身也为自己和责任人一起做出的决定负责好些呢?
答:经过一学期的学习,现在我认为还是要团队一起讨论。毕竟是团队合作,要有福同享,有难同当,既然决定了要一起做项目,就应该努力完成,无论结果是好是坏,对于我们无论团队还是个人都是一次好的经历。
2、在书中第八章168页开始就一直在强调做项目之前怎么做好估计,并在170页提出了沿边境线环游中国的例子。最后提出说做出决定之前可以先派人去探探路。但是176页第三段中又说在敏捷项目中团队一般不过分强调“估计”的价值,因为他就是一个“猜”字。那么这是否与前文相互矛盾呢?到底在开发项目之前估计的价值大不大?我们是否应该在有限的时间内花如此大量的时间去做计划前的估计呢?
答:现在我觉得在开发项目之前估计的价值很大。在软件开发之前,做好足够的准备工作,能够减少开发过程中的风险,也能使开发思路清晰,过程更轻松。
3、书中第五章93页所讲的秘密团队开发,一个公司秘密地同时让两三个团队开发一个项目,说一个团队的成员如果有很大的自由度,又有独特的使命,这对于大家来说是很大的驱动力。但是我认为,一个公司,一个项目让多个团队进行秘密开发,总有速度快的,也有质量好的,那么公司该如何采用他们的作品?就算最终选出一个,剩下的团队等于是被淘汰了,那么这些员工会做何感想?这样是否浪费了人力资源?是否同时寒了员工门的心?
答:现在我觉得公司这样做也有一定的必要。同时安排多个开发小组,有利于让各个小组竞争,能够开发出更好的产品。
4、第16章中提到“拼图模型”。我认为这个时代IT行业发展迅速,规模也越来越大,对于众多从事该行业的人员,机会也更多了,前景也更加明显。但是想要出类拔萃,似乎看上去显得有些困难。因为想要干出点事情出来,首先要能创新,但是IT行业的创新模式正如“拼图模型”所讲,这都是一代一代聪明人一点一点积累的,我们后来者很难恰好抓住契机完成最后一块拼图。那么作为未来即将进入该行业的我们,到底是老老实实从事自己的项目开发工作,多做力所能及的项目赚更多的钱好,还是多花时间将精力放在软件研究方面去努力创新更好呢?(这样的话也许最终无法成功,而前者有着更大的容错率)
答:现在我认为应该去创新。作为新生代的软件开发人员,在前辈的基础上,我们不能一直坐享其成,而要努力进步创新,为未来软件的发展做出贡献
5、在看完第九章之后,我对自己未来的发展方向又有了新的选择。现在感觉做PM似乎也是一个不错的前景,但是做一个好的PM,似乎要承担的东西太多了。既要有扎实的专业知识,又要有强大的管理能力(这是否意味着还得去学习经济学院管理学的知识 -。-)同时还要有强大的内心,强大的心里素质,以及承担风险的责任心。想到这些,感觉想要成为一个优秀的PM好难,如果大学期间定下这样一个目标,到底应该怎么完善自我,成为一个优秀的PM到底都需要具备哪些方面的能力呢?
答:现在我认为,要做好一个PM,要先有扎实的基础,才能够驾驭软件团队。同时还需要有强大的管理能力。
- 新问题
- 如何强化自己的软件开发能力?
- 以后专业发展方向怎么选择自己合适的路?
- 掌握的技能
经过一学期的技能,学会了如何在软件开发之前写详细分析,需求分析等,这些计划对于软件的开发有极大的帮助。同时,还学会了如何更好的融入到团队当中开发软件项目。
- 课程个人总结
通过一学期的软件工程原理学习,以及长时间的团队项目合作,我觉得自己的能力在这个过程中也得到了提升。在这门课之前,我不知道在软件开发之前还要经历那么多程序,要写那么多的报告书,做好提前的准备。现在我发现,做这些东西对于之后的软件开发帮助确实很大,能够降低开发过程中的风险,也能使开发过程更有条理。在以后的学习中,我会努力把现在所学到的知识,运用到以后的项目开发当中,使自己继续进步。
201731082206+邓召春
- 问题回答
第一次博客链接:https://www.cnblogs.com/201731082206DZC/p/10518978.html
1、我看了课本第12章253页(微软公司有“吃狗食”的传统),有这个问题(“吃狗食”是什么意思?)。经过查阅资料,是内部检测的意思,但我依然有一个疑问(为什么内部检测叫做“吃狗食”?)
答:对于第一个问题,经过百度,微软公司称内部检测为吃狗食是来源于一个典故(说 Kal Kan 宠物食物公司的总经理,每年的股东大会上,都吃一罐自己公司的狗粮。为了推广自己的产品也是拼了。如果公司打算让顾客买自己的产品,那至少公司自己也要愿意使用这些产品。)
2、我看了课本第16章343页(高级语言要比汇编语言要灵活和有效得多),有这个问题(高级语言和汇编语言分别是什么?有什么区别?)。经过查阅资料
答:通过讨论和查询资料得出结论(汇编语言编写的程序,直接翻译为机器代码。而高级语言,都要转译成与汇编对应的及其码才能执行虽然看起来汇编的程序代码比较繁琐,可读性不强,但是他是机器代码计算机能直接识别;而高级语言则不同虽然可读性强,但是计算机无法直接识别)。
3、课本第16章347页(正是这种看似简单的无状态的网页,改变了世界。),有这个问题(无状态的网页是什么意思?)。经过查阅资料,并没有理解是什么意思,也不知道它是如何改变世界的。
答:经过上网查询得出结论(无状态即各自维护自身的状态,如会话信息都在客户端,服务端并不保存状态信息,那么我们可以说服务端是无状态的。)但是依然半知不解的。
4、课本第16章360页(SWOT表格是一个简单有效的分析工具),有这个问题(SWOT是用来干嘛的?)。经过查阅资料,SWOT是一种分析方法,用来确定竞争优势(strength),竞争劣势(weakness),机会(opportunity)和威胁(threat)的。但是我依然有一个疑问(为什么说SWOT简单有效?除此之外还有什么方法?)
答:经过多方式的查询,并没有得出准确的结论。
5、看完课本和材料。我有一个疑惑(当自己的工作实际情况和预想差距很大,有很多矛盾时,应该如何抉择
答:经过和同学、学长、家人的交流,我觉得首先得想办法解决矛盾,尽量向自己预想的方向靠拢,不必强求完全达到。
- 新问题
在软件开发的过程中如何进行合理的任务分配才能使项目开发进度最快
- 掌握技能
经过这学期的学习,我掌握了微信小程序界面设计、微信小程序的发布、软件开发过程相关文档的编写等技能。之所以可以掌握这些技能,是通过网站学习、团队成员指导以及留心观察并自己琢磨获得的
- 课程个人总结
经过这一学期的学习以及团队项目,我觉得自己对软件工程有了进一步的了解,对软件开发的整体流程也有了大概的了解。除此之外,还收获了同学情谊,加深了对同学的了解,结识了一些新朋友,也获得了一段有趣丰富的经验。除了收获,我还有一些体会是自己的专业能力和学习能力太差,需要大大加强。最后,在团队项目中,合作分工、积极配合非常重要,只要齐心协力,可以解决很多问题。
201731102211+方旭瑞
- 问题回答
第一次博客链接:https://www.cnblogs.com/fangxurui/p/10542165.html
1、该如何选择结对的人
答;之前一直存在一个误区,觉得以技术为依托而选择。但后来经过实践,发现志同道合才是最重要的。两个能交流得来的人,更适合结对
2、对“特工集合”与“团队”两者的区别存疑
答: 在看了《复仇者联盟》后,我觉得虽然“特工”散落各地,但他们的目标都是一样的,就可以成为一个团队。
3、计划和估计真的很重要吗?是否任何工作都需要有计划地完成?
答:还是那句话“凡事预则立,不预则废”,同时在经过团队项目的洗礼之后,更加体会到这句话的内涵,认为计划和估计真的很重要。当一个工作需要分步骤完成就需要计划
4、“对下一个导致构建失败的成员,授予‘构建大师’称号”,我对于这种做法的可靠性存疑
答:虽然这个人构建失败,但此做法可以变相督促激励他进步
5、关于迷思“要成为领域的专家才能创新”
答:没有任何新的想法。
- 新问题
无
- 掌握技能
1、知道如何开发一个小程序
掌握这项技能是因为我们组的项目就是开发微信小程序,所以上网查询了大量的资料来对它进行开发,在此过程中逐步了解学习到了该项技能
2、了解了如何去管理一个项目的开发过程
因为我是我们组的PM,不可避免地要对小组成员进行任务分配并监督项目进程。在这个过程中,也不是很顺利,甚至到现在也觉得我这个PM还是做的不太称职,但体验了一次项目管理的过程,让我在此逐步了解了如何管理。
- 课程个人总结
经过了一个学期的学习,我更加发现自己并不太适合学习软件工程,所以越发坚定了跨专业考研的决心。
201731082208+黄亚恒
- 问题回答
第一次博客链接:https://www.cnblogs.com/hyhhyh090628/p/10566668.html
1、(6章P110)在敏捷流程中决定当前冲刺中提到订单任务是队员根据自己的情况来认领,如果对于能够主导自己人物的估计和分配,那么他们的能动性会得到比较大的发挥。但是在这个过程中,可能不乏有一部分队员预估错误,我们到底应当如何把控任务分配合理,并且保证大家都能高效有质量的完成呢?
答:在经过这段时间的团队作业之后,我们在安排和分配任务的时候,我们根据自己的能力来领取和商讨任务。首先每个人根据自己对自己的能力的认识来领取任务,然后大家一起商讨,看任务分配是否合适。要在自己的基础上能够再加大一点难度,通过“跳一跳,够得着”的原则来激发积极性。于此同时,团队之间的交流也十分重要,如果任务在项目进行了一般的时候发现不合适可以及时进行修改
2、(8章需求分析P153和P162)8.1软件需求中其讲到对软件的不同方面的划分,其中包括非功能性需求,同时在P162竞争中产品竞争一图也表明我们和竞争对手的产品其实都有很多对用户无用的功能。那就是现在的一些软件上的功能其实也是比较鸡肋的甚至是无用,但是我们还需要耗费资源,人力、物力去做这样的一些性价比也很低功能吗?或者说面对这样的情况我们应当如何去面对呢?
答:对于软件中的一些功能,对于用户来说可能是很少会用到。但是对于项目开发人员来说,对功能的开发都是因为存在这样的用户需求。增加 可能不会增加更多的用户,但是,如果缺少这样的一些基本的功能却可能失去很多用户。
3、(10章软件质量)在这一章中,软件的质量被不断细分,讲到我们需要从多个方面去判断一个软件质量是不是好,人们也有多种方法来保障软件的质量,那么我们这些判断和保障质量的方法是不是也和软件一样有着颠覆性和改良性的创新呢?
答:关于质量的问题,我也没有弄明白如何判断
4、(16章P347)“迷思之五:要成为领域的专家,才能创新”在文中提到说其实由调查发现70%的创新都是在这些创新者的拿手领域之外发现的。那么是不是说明出于相关专业的人想要做出本领域的创新性开发更不容易呢,那么这样对于那些有着想要在计算机领域有一番大作为的人来学习本专业是不是会使他们事与愿违呢?我们是不是也应该更多的涉及别的领域以尝试做一些创新呢?
答:我认为,我在问题中提到的人,其实大部分原因大家能够发先一些创新性的点主要是因为没有被一些专业的知识陷入为主。这样才会更容易产生一些创新的点的想法
5、(16章P348)“迷思之六:技术才是创新的”提到技术的创新是关键,当然他也提到我们还可以看到有很多方面的创新,但是我第一时间想到的是思想上的创新(我指的是创新的一些想法例如谁第一个有了关于触屏的想法。)我想我们没有想法自然也不会去进行技术上的创新,而同时,倘若只有技术的积累可能也无法做出创新。那么思想上的创新和技术上的创新到底哪一个更为重要呢?
答:我认为没有确切的答案,对于创新,两者都很重要,但是我认为做重要的是思想上的创新,我们可以用技术上的创新来辅助完成我们的思想上的想法。
- 新问题
1、如果一直在一个领域学习,但是一直没有进展,或者一直没有产生兴趣,那应该继续学习或者继续坚持吗?
2、如何能够有效快速增长自己的技术?在学习中如何使自己能够一直保持一种积极乐观的态度去学习和增长自己的技术?
- 掌握技能
1、学会了绘制数据流图,类图。在进行项目开发和设计的时候进行数据流图的绘制,在老师教导和团队伙伴的帮助下较为熟练的掌握了绘制数据流图,对于其他的相关工具也有了一定的了解。
2、学习微信小程序开发的部分相关知识,对微信小程序开发有了一定的了解。
3、学习了分析详细设计、概要设计和需求分析等。
- 课程个人总结
一个学期结束,第一在团队中和大家一起合作,也是第一次做一个比较大的项目。学会了如何在团队中合作,也对自己的能力有了新的认识。于此同时对于自己的时间安排与规划有了更多的想法,有了更强的规划能力。对于自己在团队中的定位也有了更多的认识,如何贡献自己的能力,如何提高自己的能力。同时我也明白我应当提高自己的能力才能够更好的做好团队或者更好的做好个人。
201731082408+肖莉
- 问题回答
第一次博客链接:https://www.cnblogs.com/xx0709/p/10569202.html
1、书中第六章第一节提到了敏捷流程的简介,总共有四步,每一步都不可缺少,看上去十分简洁完美,但其中也存在着一些问题,书中第二节也提出了每一步流程中的问题与一些解法,对此,我还想问:在流程的第三步冲刺阶段,怎样才能确保每日立会高质量的进行?或者还有别的形式能代替每日立会更好的提高工作效率吗?
答:通过学习书本,我了解到,团队通过每日立会来进行面对面的交流,强迫每个人向同伴报告进度,迫使大家把问题摆在明面上。同时团队要启动每日构建,让大家每天看到一个逐渐完善的版本。另外,冲刺阶段是时间驱动的,时间一到就结束。这个特点看似不起眼,但其实它有效地断了各种延期想法的后路。
2、书中第八章第六节第170页提到了:“可以考虑通过Wideband Delphi方法来做到快速沟通并达到意见的一致。”对于其中的“Wideband Delphi方法”比较好奇,书中留下了相关链接供参考,经查阅我了解到这是一种基于共识的估算工作量的方法,团队成员各抒己见,积极表达自己的看法,但是这个方法有时只是达到了让团队充分沟通,交换意见的目的,并不能得到预期的估计数值,尤其是,如果一些人的想法与其他人的想法产生了难以调节的冲突时,该怎样去解决才能更好的得到最终的估算值呢?
答:Wideband Delph估计法的目的是在较短时间内让团队成员充分沟通,交换意见。但同时也需要团队成员不断提高自己的估计能力,这样在软件项目开发过程中遇到问题时才能高效率的预估未知的风险。
3、书中第十一章第五节第235页提到了每日构建,并以盖楼房为例阐述了软件构建的重要性,书中说:“不会做构建程序员,就像不会搭手脚架的小工。。。”,对于构建的具体含义我还不是很清楚。
答:通过学习我知道了,每日构建是项目开发阶段的一种管理方法,团队需要提高预见性,明确构建大师的职责,公开显示固定的构建时间。
4、我在书上第十六章第五节第372页中看到这一句:“众多研究表明,最有效的团队大小,是8~12人。”这句话是以大公司为前提而提出的,我想问的是“为什么富有成效的团队人数一般控制在8~12人之内,而不是其他数目?书上说“这在一些公司里叫做“两个比萨饼”规则,就是团队小到两张比萨饼就能喂饱。还有管理专家建议,在工作需要的人数基础上再减掉一位,这才是最优的数字。这样能让剩下的团队成员更有空间做事情,更有创意,也能帮助别人。”我很同意管理专家的建议,团队人数应视具体的工作需要而定,老师上课时也提到,团队人数过多会增加协调成本(呈级数增加的成员连结),通过网上查阅我看到了这个公式:,这个公式表现了团队成员间的关系是如何增加的,我试着用了几个数字带进去计算了几次,发现人数增多确实能提高团队整体工作效率,但增长率却逐渐降低。所以我知道了一个团队的人数不宜过多,但上面提出的问题我依然不解,团队人数控制在8~12人之内对于一个大公司来说一定是最有效的吗?
答:我很同意管理专家的建议,团队人数应视具体的工作需要而定,老师上课时也提到,团队人数过多会增加协调成本(呈级数增加的成员连结),通过网上查阅我看到了这个公式:,这个公式表现了团队成员间的关系是如何增加的,我试着用了几个数字带进去计算了几次,发现人数增多确实能提高团队整体工作效率,但增长率却逐渐降低。
- 新问题
无
- 掌握技能
经过一学期的学习,我从课本上学到了个人开发、结对编程、团队开发的有关知识。了解了软件工程的含义,一名合格的软件工程师应具备的品质和能力,以及软件测试的相关内容。另外,通过完成每项实验报告,我在实战中体验到了结对编程的益处,以及团队合作的力量,困难自然无法避免,但这样才能更好的成长,更多的磨练只会让我变得更强。
- 个人课程总结
这一门课虽然在第八周就结课了,但是直到第十七周才算真正意义上的结课吧!课堂上的学习以及课后实验的演练使我对软件工程这个专业有了更深的了解,除了编程以外,软件工程还有更重要的东西需要我们去学习,去掌握。无论是以个人形式还是团队形式进行项目开发,其中包含的知识都值得每一位软件工程学子深刻研究学习,在后期的团队项目开发实战演练中,我也真真切切体验到了这一点,团队成员的积极性,团队PM的领导力,以及团队的默契度等都对软件的开发有着不可小觑的影响。我认为,在以后的时间里,我还需要多多加入团队进行实战演练,不断提升自己的能力。
201731062534+肖磊
- 问题回答
https://www.cnblogs.com/Xl2248570171/p/10541567.html
问题:我当时认不清楚何为软件工程,头脑里只有模糊的概念即:软程=程序+软件工程。当时所提出的问题也是针对邹欣老师所著《构建之法》这本书中不明了的问题,并没有建设性的问题,现在回想起来稍微有趣一点的问题是“那些互联网商业巨头例如Amazon,Google,Microsoft等等是否能创立许许多多类似的“软件作坊”去创立新的东西,加之自身庞大的资源及商业背景就能够很好地将这些成功的创新或者颠覆性技术推广出去产生更大的效益。” 现在看来这些商业巨头确实有许许多多的“小作坊”
答:我但是提出的许多问题例如“晚上我整理笔记,看到了老师所讲的“软件过程模型”,其中有瀑布模型,原型模型等等,各有各的优缺点,当我看到原型模型的流程是“被开发的软件原型交付给用户使用....”我在思考稍如果软件规模较大,软件原型会不会也很大,也需要用到软件过程模型?” 。现在看来,一个庞大的软件可能有许许多多的子系统例如VS这样的,不同的系统也许有不同的软件过程模型,应当根据实际需求分析来构造适合的软件过程模型。新问题
当然随着知识的深入和不断的学习会产生许许多多新的问题例如在我们实际开发过程中所面临的的:如何良好解决多人协同开发彼此之间良好沟通的问题,还有团队合作的项目管理问题等,这些都需要经验的积累,单凭一门课程一学期的时间是远远不足的。
- 问题回答
第一次博客链接:https://www.cnblogs.com/reganmian/p/10562315.html
1.第十六章中提到了很多经典案例,其中索尼公司的另辟蹊径获得成功和Nokia由巅峰迅速衰败,我不由提出一个问题,到底怎样才是创新,怎样又是投机呢?如何最大程度的分辨真正的创新和虚幻的泡沫,也许我所一直坚持的方向,终点等待我们的却是一条严严实实的死胡同。
答:不管是投机还是创新,都是跟随形势而变化的,无论投机还是创新都需要强大的技术支持,只要是这种技术是正面的,确实对人类进步有好处的,那么这都是一种突破,这个时代正式需要这种弄潮儿。
2.第二章中介绍了软件工程师度量模型PSP,它根据很多方面综合评价一名软件工程师是否合格,但是,从个人能力以及效率上来看,这个人可能是合格的,但是做出来的东西是否会被用户认同,以及这名工程师个人能力优秀,但是在团队中有扮演什么样的角色呢?会不会出现个人能力很强,但是却破坏团队的情况呢?
答:个人能力模型在团队任务中是否仍然具有意义。这个答案在书里提到过:团队的成员应该少而精。个人能力在团队表现中也同样重要,因为软件工程不是传统工业,人多力量大的道理在软件工程中不是那么适用,团队成员个人的能力越强对整个团队是由很大的积极作用的。
3.第三章第五节说到了学习区,书上提到很多人学了一些皮毛就想追求最深层次的问题,最终胡因为没有能力,心理准备也不够,从而导致“拖延症”此类现象的产生,我觉得我们现在很多人真的是这样,包括我自己都有过类似的经历,但是,如何根据书中所提构建适合自己的学习区并且慢慢的将学习区变成自己的舒适区呢?
答:我身边很多同学都有的问题——习惯问题,因为软件工程确实是一门有难度的学科,学起来很吃力,但是经过自身努力,也在逐渐挣扎出舒适区,去学习自己不会的东西,并且改掉晚起的毛病,只有坚持才能穿键出自己新的舒适区。
4.第164页,需求分析这一章节,感性决定勾起了我的好奇心,当我们被分配去干某个任务的时候,我们可能真的是下意识的觉得,既然分配到我了,那么我就去做,但是分配到某个人这件事情是如何决定的呢,现代软件工程中,成本是很重要的一部分,人力又是其中很重要的组成,那么如何分配可以讲礼仪最大化,成本最小化呢?真的是理性决定的吗?
答::同样在书中我找到了答案,团队中最差的那一个人决定了团队的下限,团队中应尽量减少这种人的存在,保证每一个人都能应对各种问题,精简人力成本。
5.第六章,敏捷流程,为何是敏捷流程,而不是优化流程,在敏捷流程中那些点体现了与优化流程的不同?
答:敏捷流程表现了它的特点——灵活,敏捷流程是以用户的需求为核心不断迭代的过程,可以适应工作中遇到的变化,更加灵活,二优化过程没有这种特性。
新问题
- 掌握技能
- 个人课程总结
201731062514+郑智豪
- 问题回答
新问题
掌握技能
个人课程总结
这学期总的来说收获很大,希望接下来的假期努力钻研代码,多实践,多请教,多提问。
三、Github上传及地址
Github 地址: https://github.com/HYHSTUDEY/weixinAP
文档命名:PTRINT ONLINE
资料目录如下: