常规开头
这个作业属于哪个课程 | 系统分析与设计 |
---|---|
这个作业的要求在哪里 | 作业要求 |
团队名称 | 西柚三剑客 |
这个作业的目标 | 总结回顾 |
github地址 | 黄金点游戏 |
队员列表
成员 | 学号 |
---|---|
周郭(组长) | 201731062630 |
段小刚 | 201731062317 |
刘琦 | 201731062413 |
正文
组长:周郭
博客地址:
学号: 201731062630
第一次博客连接
问题一:作者在第四章《两人合作》中提到结对编程思想,认为一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑面前,使用同一个显示器、同一个鼠标、键盘...“总之,如果运用得当,结对编程可以取得更高的投入产出比”。但是,对于一个规模较大,甚至对于一个中型项目来说,结对编程所提倡的一台电脑、一个显示器、一个鼠标的开发模式,真的适用吗?或许在小项目中两个人的沟通和理解对项目开发和规范有一定的帮助,但人不是机器零件,在高度集中的开发模式下,两个人的高效的开发效率也同样是严重受到时间的限制的,那么结对编程的思想和理念到底是在何种情况下适用呢?
当初对结对编程理解不够深刻,较为死板。现在看来,结对编程远远不只是仅限于两个人面对同一台电脑、键盘...编程,结对编程本身提倡的就是针对一个规模并不是足够大的项目而言的,在高度集中的环境和工作时间计划中,在相当短的时间内,尽可能快的、高效的完成项目,所以适当的休整和短时间的开发,即结对编程,针对小项目而言确实是一个不错的开发模式。
问题二:在书中137页,第7章节《实战中的软件工程》,书中提到“团队成员应该有共识:防止缺陷的发生成为团队质量控制的首要任务,所有的角色都应该对质量保障负责。”。如果说投资质量这个过程是为了避免工作人员在更多充满对立情绪的环境中工作,提高个人的工作兴趣。但是对开发人员提出更高要求的质量保证,那测试人员的工作任务是否就会因此变得不那么举足轻重呢?或许可以这样说,这个做法是否是个双刃剑,尽管会在一定程度上减少测试人员和开发人员之间的对立点,同时也让测试人员的工作量减少,少了那么多bug,测试人员的工作兴趣会不会也因此降低呢?
世界上总会有一些投机取巧的人。在我们开发过程中,我们首先应该保证我们的成员必须是有一定底线的。在完整的开发流程中,使所有角色都对质量保障负责,从而使开发和测试的工作人员都具有同样的开发兴趣,确实是不错的方法。
问题三:在第16章节《IT行业的创新》中,我粗略的阅读了一下该章节的内容,文中有提到“技术的创新是关键”,对于某项领域,因为某项技术的产生大大地提高了企业效益,或者使得人们的生活方式更加便捷,我们称之为创新。但是在对于一个团队项目、对于软件工程开发中,除了技术创新,还有哪些情况下算是创新呢?
完美的工程开发,不仅仅需要的是新技术的实现,更需要开发的高效率、项目团队的高度契合等,这些都是软件开发过程中我们所需要面对的东西。
问题四:在十二章节《用户体验》,书中提到了软件开发中强调用户体验的重要性,“考虑用户体验的各种角度,设计的层次,步骤和目标,认知阻力,用户体验的衡量标准,情感设计,跨设备的用户体验”。那么在软件项目团队的开发过程中,应该由哪个角色来担任用户画像的描述、符合用户体验的设计,并且将这些转化为工程师们关注的具体的功能的设计和实现呢?
纵观我第一次博客的问题,其实大部分都是软件项目实施过程中的工程问题,在课程结束后,我渐渐体会到,我是因为没有经历一个完整的项目开发过程才会存在这些疑问,包括此问题——系统需求分析师,主要是由产品经理和项目经理对接,将产品设想转化为具体的功能实施。
问题五:在粗略地阅读《构建之法——现代软件工程》这本书之后,我收获颇多,结合我在以往课程的小组作业、团队项目中的经历来看,我越来越发现一个优秀的软件项目团队的构建和管理是多么复杂,在社会中,每一个互联网企业就至少有一个软件项目团队在开发一款软件项目,能够真正让一个软件项目团队成功打造出一款颠覆性的超级软件,软件项目团队背后的付出更加是难以想象。这使我有些疑惑,如果说工程思想如此重要,那就现实而言,需要有更多的学生花更多时间去不断地追求理论技术的更高层么?
之前看书比较死板,做事情容易急于求成,现在我明白或许在学习中“鱼和熊掌不可兼得”有时也是错误的。理论是实践的基础,没有理论技术的更高层,也就不存在一款真正的颠覆性的超级软件,也就自然没有软件项目开发团队背后尽然有序的工程管理体系。
是否产生新的问题:
通过这学期系统分析与设计这门课的熏陶,我对一个项目完整地开发过程有了大概的了解和认识。但是这让我对真实的企业开发有了更多的疑惑和更浓厚的兴趣,
经过这学期掌握了哪些以前没有的技能:
写博客、团队项目开发、结对编程等等。
总结:
随着课程结束,这学期也接近期末了。我们在这次团队项目实践过程中,从确立题目,到项目开展实施和编码工作,到现在的项目基本完成,我们项目组的成员们都是一齐勠力同心,携手并进。很开心在本次项目作业中担任了组长的角色,我们项目组虽然只有三个人,在项目初期,大家的技术方向也都不是在这个技术领域,所以在开展项目的过程中我们也是遇到了重重困难和艰难险阻。但是很开心,我们终于一齐完成了它。在这个课程和项目开展的过程中,让我体会最深刻的莫过于团队之间的协作,或许我们组的项目成员在此之前都习惯于个人编码,但是在尽力这次持续性的团队实践后,我逐渐明白团队协作中沟通的重要性,在这一两个月中,我们单凭自己一己之力是很难完成的,所以项目组成员之间应该多沟通、多交流,这样才能使项目更为顺利的开展下去。
组员:段小刚
博客地址:https://www.cnblogs.com/dxg123/
学号:201731062317
解答自己以前提出的问题:
问题一:
在3.2章软件工程师的思维区P48中,分析麻痹;不分主次,想解决所有依赖问题;多早优化;过早泛化;这些都是软件编程时可能出现的问题,但我们新生“软件工程师”对此该如何良好地处理呢?
答:其实这个问题,最好的解决方法就是先要把需求分析搞好,认清楚那个任务孰轻孰重,再来部署和完成任务;那其实主要你多做几次项目任务,积累经验了,你自然就会对项目任务有更清晰地了解;而我们小组也是大家一起讨论,再详细地划分任务,这样能增加效率。
问题二:
在读4.5结对编程时,在P79页读到了上文的内容,作者说“在结对编程时,因为有随时的复审和交流,程序各方面的质量将取决于一对程序员中各方面水平较高的一位”,也就是说在编程过程中是由水平较高的程序员作为领导者。那么在编程起初我们应该要怎么样分配工作才能够保证即有质有量地完成编程任务,又能够让两个人都能够都参与到代码编程当中得到锻炼呢?
答:这个问题,在实际项目执行中,确实不好完美解决,因为2个人结对编程的话,不可能2人的任务量和任务难度都一模一样;有过结对编程的经历后,在我看来,首先大家要说出自己熟悉那个方面的技术以及自己喜欢做哪一方面的任务,然后再根据2人的能力、喜好、专攻面来划分任务,这样就可以在保证任务完成的情况下,又能锻炼自己了。
问题三:
在第7章中讲了开发人员和测试人员会产生一种对立的情绪,这种对立的情绪短时间内能刺激成员的工作热情,而长远的话会有害的。在现实中,如果开发人员和测试人员产生了对立的情绪,我们应该如何调解?两者互相挑刺,本质上都是在帮助公司的软件项目在找问题、解决问题,那我们可不可以找到一个方法即能刺激提升员工的工作热情,又能消除之间的矛盾呢?
答:其实在这个课程中,我们小组里的人员本身除了是开发人员,也身兼测试人员,所以倒也没有出现过什么矛盾之类的,团里的分为也比较轻松和谐;在我看了书上面的例子,以及在网上搜索观看了一些东西,从而总结了一些方法。1.人性化管理是激励员工的方式之一;2。实行奖励;3.多多展开线下会议和团建。
问题四
在11.5.5小强地狱(Bug Hell)中,认为让Bug多的队员专心修复Bug,不要开发新功能。是为了避免"小强"成为一个大怪物,不能一味赶进度,不管小bug,那在质量、进度、成本三者之间如何更好地去权衡呢?
答:项目管理中的成本,质量,时间是一个铁三角,这在整个项目的全生命周期中都要权衡其的平衡。在时间及质量有保证的前提下,我们认为应该以投入的成本最低化为项目管理的首要目标。但是时间无法达成的情形下,可能为了保证品质,我们唯有加派人手,进行赶工,由此可能造成成本的上升;或则在允许的情况下,适当的降低品质要求,也可以在不增加成本的基础完成项目。总之这三个要素在项目管理中都非常重要,需要重点确认的。
问题五:
在16.2创新的时机中,邹欣老师在书上提到了一个黄金点游戏,贡献了心得:赢者通吃、螳臂当车、只先一步,强调了成功在于时机上,一个崭新的技术,推出时机太早,可能也会被时代给淹没,那么该怎样把握得好时机呢?还有如何在软件工程中将实践和技术结合来帮助创新呢?
答:如何把握时机这个确实不太清楚,但我认为首先要有足够的知识储备来增长见识,培养深远的眼光,才能易于发现时机,切还要替升自己的能力,这样才能够抓住时机,一飞冲天,我认为如果自身没有足够的能力,就算发现了机会,可能也做不好事情。其实我们学生的话,要想将其技术实践,最好是结合生活中和身边的事物,因为其他领域你也不是太了解,而我们自己学的技术也不是那么过硬,最开始还是要从小事做起,做做小项目什么的,老话说得好:‘’路要一步步走,饭要一口口吃”。
掌握的新技能:
一是懂得了测试,二是知道了项目的需求分析,三是懂得了团队合作。因为有一次的作业相互测试,所以就去了解和学习了测试方面的相关知识以及运用相关测试软件;其他的就是在大家做项目时,一步步跟着最开始制定的进度计划来做,自然慢慢地掌握了吧。
体会:
通过这一次的团队项目的实施研究,我深深感受到和团队合作的重要,感谢团队,不计回报的付出,在我不了解的地方耐心仔细地为我讲解,这次不仅了解了一些java和网页性能测试,还明白了写一篇好文档的重要性,同时从中获得了 锻炼和成长,学习能力的提高,也扩展了我们的思维能力;共同的目标培养了我们的团队精神。刚开始拿到题目我们组员都不知如何下手,经过小组成员一起查找资料,并且开会讨论,我们确定了设计的设计目标以及具体实现方式,包括如何将Java的思想运用到实际系统的详细设计之中。
- 组员 刘琦
博客地址: https://www.cnblogs.com/liuhanhan/p
学号: 201731062413
链接到提出问题的博客
问题解答:
问题一:
源头控制员工,合理搭配人员,相互细节磨合。团队成员有问题及时反馈。
问题二:
参照相似项目,对于大家不熟悉的项目适当放宽时间;若需求变动则时间做适当修改。
问题三:
团队氛围很重要,PM要能及时听取并反馈大家意见,项目设计、分析阶段适当允许开发人员参与。
问题四:
开发测试同步进行而不是开发完成后在进行测试。重要功能需要完整代码审计,其他视情况而定。
问题五:
个人认为是没有错的。即便不是专家,也至少对这个领域有相当的了解以及熟练度。不会的东西太多了,每一步都举步维艰的情况下热情很快就会被打消,一个普通的东西都做不出来,更不用谈创新了。
新的问题:
文档有无精简的可能?学习方向不同、学习进度不同、兴趣点不同、甚至学习语言都不同的学生课程团队如何有效配合?
学习收获:
通过这学期的学习,尤其是通过本门课程,我能够对GitHub进行比较熟练的操作,能够在项目开始前细致地进行需求分析,在设计阶段使用墨刀等原型设计工具进行初步的设计展示,通过结对编程相互促进及互相提高编程效率,通过成型团队项目间的相互测试对软件测试流程有了初步的了解。最重要的是在团队项目开发过程中熟练了团队开发流程,提高了团队交流协作能力。通过一学期的学习我得到了很大的提高。
学习总结:
实践出真知,人类进化过程如此,显然学习、掌握技能也是如此。很多东西仅仅是看是掌握不了的,唯有动手才能真正去强化、熟练,最终掌握一项技能;天道酬勤,勤能补拙,懒惰一定学不成事;方向很重要,漫无目的地努力比原地踏步更为可怕---徒劳耗费精力而无所得,这也正是为什么有人说选择大于努力的原因。一学期的课程结束了,但我们的职业生涯、人生旅途才刚刚开始。相信大家满载收获更能扬帆远航。
团队资料留存
详见Github~ 走你→