团队作业——总结

这个作业属于哪个课程

<https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1>

这个作业要求在哪里

<https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/3379>

团队名称

<TEAM PANTHER>

这个作业的目标 

<做好团队总结,吸取经验教训>

一、团队成员及博客链接

陈君益(201731062109):https://www.cnblogs.com/Jackeyyyy/p/11064201.html

博客内容:

1、首先是第一章第一节第三页的软件的生命周期问题

答:关于这个问题,经过这次实践我想要最大化的延长软件的生命周期最应当做的便是在编写软件之初就要确立好模块的划分和功能的具体操作,这样方便在日后交付软件或软件投入运营使用之后我们的技术人员进行维护和修理,软件的可塑性强,要尽可能长的保证软件可以正常运行就要做到对每个模块功能的宏观调控。

2、第二是第四章的两人合作代码方面的问题

答:关于这个问题,经过这次实践我想最应该做的是在开始代码编写之前做好“代码规范”的制定,事实上,这不单单适用于两个人代码合作,更适用于多人的团队合作,只有将“代码规范”这一前提事项做好了我们才能够在日后的项目的合作与讨论上找到问题的所在或是功能改进的关键。同时“代码规范”的制定也避免了日后真正参与工作碰到有核心人员突然离职而接手人员因为代码书写习惯的差异无法读懂代码导致项目停滞的情况发生。关于代码规范的制定更多的我们可以参考行业已有的规范。

3、第三是如何合理地选择软件团队模式(来自书中第五章第二节)

答:关于这个问题,也许我的理解还不是那么深刻,但是经过这次团队合作的实践我也大概明白在团队模式的选择上一定要做到“成员分工明确合理”,这对于日后的团队合作项目影响至关重要,因为若是团队分工上出了差错那么便很容易导致团队核心成员工作过于繁重和劳累而其他成员却又对于项目无从下手的情况发生。我认为,在以后的团队模式选择上应该更多的倾向于让技术强的核心人员先开始着手项目,攻克较难的瓶颈,而后将这些技术分享至团队让其他成员可以开始其他项目的工作进度。

4、第四是如何准确地获取用户的需求(来自第八章第三节)

答:关于这个问题,我想更多的还是要事先与客户沟通和交流,将对于项目的共同意见尽快撰写出文档,再继续在已有的文档描述的功能上进行增添和补充。同时,在与客户交流的过程中,除开他已经提到的功能需求外,作为开发者的我们更要去思考这个项目还可能需要哪些在与客户交流过程中没有提及的需求以避免在最后交付软件时客户提出要增添新需求而我们却无法实现。

5、最后一个问题是如何找到那些隐患极大的BUG(来自第十四章质量保障章节)

答:在BUG的寻找与解决的问题上,我觉得要做的就是尽可能对软件提供较多的测试用例,通过用例来发现BUG,特别是对于那些关联紧密、至关重要的模块要重点测试,因为这些模块的BUG要尽早发现、尽早解决,否则如若在最后才发现这些BUG可能会消耗大量的人力、物力去修复。另外,发现BUG的最好方式还有一点就是将软件尽量发送给不同的人进行测试,这中间既包括了软件的开发人员还有软件面向的客户人群。

二、新掌握的技能

1、运用GITHUB上传自己的代码资源或是下载所需的资料

2、文档撰写能力有提升,在撰写项目选题计划书、详细结构体系方面已经初有门路

3、编程能力有提升,且掌握了很多之前不会或是不熟的技巧。

4、自己掌握了很多之前不熟或是不会的技术例如“数据库的连接与操作”、“服务器的架构与配置”、“软件的导出与部署”。

三、自己的体会

通过本学期“软件工程原理”这门课的学习,我了解了什么叫做“软件工程 ”并且加深了对其的认识,也明白了什么是多人合作和如何进行多人合作。此外,这门课也让我明白软件开发是一个艰辛且漫长的过程,在这个过程中开发人员必须得有充足的耐心和足够的细心并且对于每个功能模块要不断地精益求精、尽可能的消灭BUG以确保软件在交付给用户的时候质量是过关的。同时,我也初步领会了如何合理正确的开展进行“软件工程”的工作 。

除开我对这门课的理解之外,“软件工程原理”这门课带给我最大的收获就是敦促我不断的去自我学习然后自我实践与尝试,这可以说是本门课给我培养的能力,在本门课开始之初,我有很多知识盲区,要完成平常的作业若是靠我已有的知识可以说基本不可能,为了完成平时的作业我必须不断地去搜索查阅资料然后消化吸收变成自己的东西再继续完成作业,从最开始的结对编程再到后来的团队合作,任何一个作业对我来说开头都是十分困难的,但正是因为它十分困难,在此过程中其总是会逼迫我去不断拓展自己的知识,不论这个是不是我主动的,但是本门课的确培养且加强了我独立自主学习的能力。

刘易(201731062112):https://www.cnblogs.com/Lukasly/p/11069599.html

博客内容:

第一次阅读作业中我提出了以下五个问题,经过一个学期的学习,其中一些问题我已经解决了。但也存在某些问题我认为还需在实践中去解决。

(1)第三章<软件工程师的成长> 我在阅读本章过程中发现软件工程师需要有很多能力,但其中有两样很重要,创造性和稳定性。而评价一个优秀的软件工程师到底应该取决于他有多大创造性还是该取决于他的稳定性?

 在整个学期的学习中,我已经了解到一个优秀的软件工程师不仅仅只是编程,还有其他更重要的工作要做。软件工程是一个漫长的过程,从可行性研究到需求分析等工作在软件工程中占据着很大的权重。所以在软件开发过程,一个优秀的软件工程师必须在这些过程中发挥稳定的作用。创造是灵光一现,而稳定却是软件开发过程软件工程师所应该保持的水平。

(2)第五章<团队和流程> 在本章中我了解到了许多团队模式和开发流程中的不同模型,我很疑问的是在软件开发过程中,在如此多的模式模型中,不同类型,大小的软件应该如何去匹配最优化的开发模式,又该如何配备团队模式?

软件团队有很多模式,不同的模式有各自的优点但往往也会有它的缺点。比如业余剧团模式。大家扮演不同的角色,大家在团队中听从一个人的指挥和安排,这样的模式在学生实践项目中常常出现,而又如特工团队,这样的团队往往有有一些特殊技能,他们能够解决一些棘手和晋级的问题。同时,这样的团队对软件有很强的针对性。比如软件安全性服务。

(3)第五章<团队和流程>在一个软件开发流程中如何确定一个最好或者较好的模型?

软件开发流程中的不同模式在不同的软件开发中有不同的优点和适用性,哪怕是缺点不少的写了在改模式也受用于一些只用一次或者看过就扔的软件。而像瀑布模型它是一个单向的,不可逆的生产过程。所以它就适用于那种产品定义非常稳定产品正确性非常重要的软件并且产品的各模块之间的接口,输入,输出能够很好的用形式化的方法定义。

(4)第十四章<质量保障> 当我阅读了第十四章后我明白了软件工程的质量对一个软件有着举足轻重的意义。软件必须满足用户的需求。所以我们肯定是尽我们所能的把软件质量提升到最高,但在提高软件工程质量的同时我们又必须要考虑软件质量成本。这是任何工程项目都必须面临得问题,所以我不明白如何能够在软件工程开发之前就有预期的平衡好软件工程质量和软件质量成本?

在提出这个问题时,我还没有了解到可行性研究。但经过团队项目的实践,我明白了在一个软件开发过程中,时间是一个非常重要的成本,所以在软件开发之前的项目制定计划中能够确定时间的花费是非常重要的,可行性研究需要确定做这个软件是行还是不行。所以我认为不是在开发软件过程中费力平衡好软件质量和成本,而是在软件开发之前就应该用最好的质量来判断好软件质量成本。

(5)第十七章<人,绩效和职业道德> 当我阅读了这一章后我明白在软件工程开发过程中一个有领导力的人是非常重要的,而一个领导人必须拥有绝对的能力的。所以我在思考一个优秀的软件团队的领导人该是一个由理论支持的人还是一个由技能支持的人?因为可能有的人理论强于实践,他能很清晰的解释自己的观点和意见,但也有人他的代码和编程能力就是他的语言。他有技能和实践能力来为团队领航。所以这两种人作为领导者都很不错,但是显然一个团队的领导人只能有一个。

通过此次团队项目,我认为一个优秀的队长不一定在每个领域都很强,但是队长应该在各个领域都有自己的理解和判断。所以我认为一个合格的队长应该在理论和技能都应该有自己的优势,这样在这个团队中,队长才能起到领头羊的作用。

总结:经过一整学期学习,我收获良多,不仅仅是在编程上,而更多是在对软件开发的理解上,通过课本上学习到的知识并且真实的在项目中运用上,这让我受益匪浅。从可行性研究到需求分析等软件开发必须经过的过程,我通过不同的工具不同的各样模型不断加深着我对软件工程的理解。我学会了如何去做需求分析,怎么做测试等这些之前我并没有接触过得东西。

在这次课程中持续时间最长给我影像最深,教训最多的就是团队项目。从组队到选题,分析到编程,我相信这其中的每一项都将在日后的学习工作中给我莫大的帮助,我从中学到的东西超出了纸面上的知识,有一些是团队配合的意识,也有答辩中对其他项目的看法。当然更多是经历过后留下的深刻教训。能够在这次课程,每次项目中收获知识收获一些自己不知道,不理解的是让我觉得最有意义的。

刘成(201731062111):https://www.cnblogs.com/Abbas/p/11073275.html

博客内容:

一.个人心得总结:

通过本学期的理论学习,结对编程,团队项目,发现可能真的不太适合编程,逻辑思维能力不足,动手能力低下。在结对编程时,本该由我完成的模块,迟迟实现不了,在队友的帮助下,才勉强完成,而在团队项目时,虽然想贡献自己的力量,可能编程对我而言实在太难,还是由队长帮我完成本该我完成的内容。回想最初上这门课的目标,掌握软件工程的思想,可能也并没有掌握到精髓。上万这门课,才感觉到差异这么明显,在想尝试代码编写时,无力感那么明显。希望这种现象不会持续到大学结束。。。


 

二.问题解答:

1.<4.4代码复审p73>,代码复审包括自我复审、同伴复审、团队复审,而软件开发又注重效率成本,团队复审会消耗大量时间,是不是可以只采取同伴复审来达到提高效率,节约时间成本?

答:不可以。代码复审的目的是1.找出代码错误;2.发现逻辑错误,程序可以编译通过,但是代码逻辑是错误的;3.发现算法错误;4.发现潜在的错误;5.发现可能需要修改的地方。而前几种错误,再自我复审及同伴复审时,不一定能完全发现,而团队可以集思广益,发现代码中潜在的,存在逻辑的错误,并且及时发现错误,是提高效率的关键因素之一。因此是有必要的。

2.<4.5结对编程>,结对编程中的人员往往都是能力有差异的,如何避免“抱大腿”现象,此外两人轮换角色时,编程能力的高低势必影响对代码的理解,当由编程水平弱的占主导时,如何避免出错?

答:结对编程是两个人同时在一台电脑上进行,人员技术能力的差异在编代码的过程中会体现出来,但整体思路是两个人共同协商的,两者是处于同等地位,没有谁能主导谁,而是共同进步,共同完成项目过程。

3.<8.1需求分析>,在找寻需求时,如何评判这个需求是否值得花费人力,物力,财力去开发一款软件,如果这个需求受众范围很小,但却对他们有很大帮助,还值得开发吗?

答:开发项目前,需要进行可行性分析,其要以全面、系统的分析,以经济效益为核心,围绕影响项目的各种因素,运用大量的数据资料论证拟建项目是否可行。对整个可行性研究提出综合分析评价,指出优缺点和建议。最后在来决定是否可开发。

4.<12.1.6用户体验和质量>,书中提到“用户体验和质量相矛盾”,软件是开发出来给用户使用的,用户体验不应该也是属于软件质量本身的范畴吗?软件质量不应该存在与用户体验相矛盾。

答:项目实际开发过程中,很难尽善尽美,只能在二者中间找到平衡点,而如何找寻这个平衡点需要开发人员结合用户实际体验而找寻。

5.<6.1敏捷流程>,敏捷流程中的冲刺阶段,如若上一阶段没有结束,那下一阶段怎么开始?如果一直卡在当前阶段,又该如何?

答:敏捷流程需要开发人员高质量的工作,快速反馈,小组成员定时汇报,项目组长及时调整,以推动项目持续进行。

胡春晗(201731062130):https://www.cnblogs.com/dreamhch/p/11083341.html?tdsourcetag=s_pctim_aiomsg

博客内容:

  • 请回望第一次个人作业,你对于软件工程课程的想象和提出的问题。

1、2.1.2中单元测试必须由最熟悉代码的人(程序的作者)来写

   编程作者在编写单元测试时,会不会由于惯性思考,而忽略掉在写程序时所忽略的问题,而换一个人会从不同的角度来思考,这样会不会更好?

2、4.5中结对编程中角色会经常互换

   这样会不会导致两人会相互影响,从而影响开发效率。

3、8.3中对获取用户需求——用户调研

   用户大部分都是对软件是不熟悉的,会不会由于这种不熟悉导致他们不能准确的表达自己的需求,导致用户需求与用户调研的结果之间存在差异。

4、10.1中提到我们开发软件需要为用户考虑。

   在现实中,我们如果完全按照用户的要求来开发,有时会因为用户对软件开发的不了解而导致做出来的和用户要求的不一样。但是加入自己的思考,来更好的完成用户的要求,

   有时也会不能使用户满意,如何在这之间来找到一个点,既能使开发可行,又能满足用户需求。

5、16.1.3中好的想法会赢

   Dvorak键盘能够减轻手指和相关肌肉的负担,减少劳损,同时加快打字速度,但这种键盘却非常少见,而我们日常使用的键盘99.9%是QWERTY键盘。

   原因就是长期以来,人们已经习惯了QWERTY键盘,所谓先入为主。在生活中,我们好的想法会不会也由于先入为主而胎死腹中,我们有必要去做出创新来改变吗?

  • 链接到以前提问题的博客

https://www.cnblogs.com/dreamhch/p/10574583.html

  • 尝试对自己提出的问题进行解答,并阐明,是如何通过看书,实际,或者讨论弄明白的

1.通过实际,我体会到只有编码者才是最清楚这段代码的作用,局限性与运行原理,而一个好的单元测试所需要的就是这些

2.在实际的操作中,结对编程是两人共同进行开发工作,软件开发的每个进程都是他们一起完成的,对彼此都是公开的,即使角色互换也能很快的进入其中,这样就不会影响开发效率

3.经过讨论,我们可以通过多种调研方式来多方面的获取用户的需求,这样就能大大提高调研的准确性

4.前期做好需求分析就能很到的解决这个问题,通过需求分析阶段,使开发者与用户达成共识

5.平时看书了解到生活中许多进步都是由创新提供动力,我们并不能因为这个创新并不能在生活中应用而去否定它,如果没有创新,就会很难进步

  • 是否产生了新的问题?请提出。

  • 经过这学期的学习,你掌握到了哪些以前没有的技能,你是如何掌握的。

学会了使用Visio绘制各种图,了解了软件开发的流程,软件的开发并不是一开始就写代码,而是经过前期的各项工作确定后面的大方向,虽然前期花费时间比较多,但明确了思路,方便

了后面的代码编写,大大提高了效率

  • 有什么深刻的体会,对自己一学期学习过程的总结。

软件的开发工程需要用到工程化的思想,前期要做好各项规划,磨刀不误砍柴工,反而能大大提高开发效率

杨天(201731062110):https://wenku.baidu.com/view/b73cf33703768e9951e79b89680203d8ce2f6a24.html

博客内容:

1 第一章P3源代码管理中说的语言系统的原理是怎样的啊?之前玩游戏的时候有些没有汉化,要改汉化补丁,有些补丁就很小只有几十kb有些大到一个g,小的是直接用一种方法转换语言,而大的是直接从剧情开始一句一句改的吗?

 

参考了一些文章以及一些字幕组群中大佬的描述,我的猜想是对的。

 

2 第二章P31抽样和代码注入的概念有点抽象,尤其是抽样。

 

经过实验二的学习有了较深的理解,但还是不能灵活使用

 

3第六章P119 敏捷图示的那些名称的含义,以及后面用错的结果是真的吗?

 

当从事开发工作时,你应当主张最简单的解决方案就是最好的解决方案。不要过分构建(overbuild)你的软件。用AM的说法就是,如果你现在并不需要这项额外功能,那就不要在模型中增加它。要有这样的勇气:你现在不必要对这个系统进行过分的建模(over-model),只要基于现有的需求进行建模,日后需求有变更时,再来重构这个系统。尽可能的保持模型的简单。

 

4第八章P158人类学调查的方法对于不善交际的人(比如我)还适用吗?对于某些特殊身份的也不能实现呀。

 

  没有交际并没有实现

 

5第十二章P267讲述了确定/取消这里,既然有了enter为什么又要用回车键来选择或发送?

 

根据我对周边的人的询问,这是习惯导致的吧

 

通过这学期的学习,对团队有了一定的人认识,学习和掌握了更多知识和技术,最深的体会是多看了很多文章和帖子

刘东升(201731062113):https://www.cnblogs.com/lds19980227/p/11083063.html

博客内容:

1 .经过这学期的学习,你掌握到了哪些以前没有的技能,你是如何掌握的。

  掌握的技能有:visio画图。这工具的使用是在做团队项目的时候必须用到的。软件工程,UML这两门课程做了很多团队项目

2.深刻的体会

       通过这学期的学习,对团队有了一定的人认识,学习和掌握了更多知识和技术,最深的体会是多看了很多文章和帖子

二、GITHUB文件资源及目录地址:https://github.com/JackeyChANn/TP.git

 

posted @ 2019-06-25 15:52  JAckeychANN  阅读(296)  评论(0编辑  收藏  举报