对课程的总结

个人总结

1.回答问题

问题一

  • 我看到第四章的结对编程,百度了一下什么是结对编程。书上81页说到结对编程是一个相互督促的过程,每个人的一举一动都在别人的视线之内,所有的想法都要受到对方的评价。 当一个程序员处于流模式(Flow),另一个在一旁学习(Learning)——若另一个程序员时不时地打断他,并要求对一些基本的但与挑战性问题没有直接关系的事情做出解释,那么他很难专注于解决挑战性的问题。-引用自(什么时候该采用结对编程)因为两人的能力不一样,相互督促的话起到的作用并不大,同时每个人的想法不一样,有些人就不愿意接受别人评价,碍于所谓的面子。所以我觉得结对编程不仅双方性格要合得来,还要虚心接受别人的意见。那结对编程是利大于弊,还是弊大于利呢? 我感觉还是利要多点,俗话说“三个臭皮匠,顶个诸葛亮”,团队合作比单打独斗更好一些。
  • 回答:

    :程序员互相帮助,互相教对方,可能得到能力上的互补。
    降低学习成本。一边编程,一边共享知识和经验,有效地在实践中进行学习。
    可以让编程环境有效地贯彻Design。
    增强代码和产品质量,并有效的减少BUG。
    在编程中,相互讨论,可能更快更有效地解决问题。

    :对于有不同习惯的编程人员,可以在起工作会产生麻烦,甚至矛盾。
    两个人在一起工作可能会出现工作精力不能集中的情况。程序员可能会交谈一些与工作无关的事情,反而分散注意力,导致效率比单人更为低下。
    结对编程可能让程序员们相互学习得更快。有些时候,学习对方的长处,可能会和程序员们在起滋生不良气氛一样快。比如,合伙应付工作,敷衍项目。
    新手在面对有经验的老手时会显得非常的紧张和不安,甚至出现害怕焦虑的的精神状态,从而总是出现低级错误,而老手站在他们后面不停地指责他们导致他们更加紧张,出现恶性循环。最终导致项目进展效率低下,并且团队貌合神离。
    有经验的人更喜欢单兵作战,找个人来站在他背后看着他可能会让他感到非常的不爽,最终导致编程时受到情绪影响,反而出现反作用。]

问题二

  • 书中第六章的敏捷流程, 知道了什么是敏捷流程以及敏捷流程的问题和解法。
    我们怎样能做到敏捷开发?如何提早的交付软件达不到客户的需求?项目人员流动过大,新员工太多如何解决?书上提到时时总结如何提高团队效率,如果时不时的开会讨论的话,会严重影响工作效率,我们怎样制定一份完美的计划来把团队效率和日常工作做得更加完美呢?
  • 回答:

    首先我们定义一下是什么敏捷开发:敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
    敏捷的核心假设就是:需求是变化的。
    我理解它仅仅是一种开发方法,更是为了应对激烈竞争和快速需求变化的一种价值观和商业模式。
    敏捷提倡以人为核心,敏捷注重的是人与人之前的,面对面的交流。

    我们在开发时项目经理就应和客户做好需求分析,不能到时候客户又要新增什么需求,又难为开发人员。如果达不到客户的需求,在正式交付之前,继续完善。新员工过多对开发并不是一件好事,我们要合理的安排项目人数。按照SCRUM流程,每日都可以组织一个站立会议,简单复述昨日自己做了什么,以及今天要做的事,进一步合理协调任务的安排。

问题三

  • 第八章的需求分析,什么是需求分析?我们不能盲目的做需求分析,这是软件生存周期中一个重要的环节,我们要知道用户的需求是什么?当用户需求发生改变时我们要如何应对?如果软件都开始到了编码阶段,用户的需求又发生了改变,我们该怎么做?我们是不是要从头再来一遍需求分析?如果是采用瀑布模型来开发,开发到一半时客户需求改变,那你是不是心态爆炸,所以我们该采用哪个开发模式来开发软件?怎样应对多变的需求来做好需求分析与设计呢?
  • 回答:

    首先项目经理就要和用户做好沟通,要合理地把用户的需求和开发人员进行交接。如果用户的需求发生改变,我们要评估需求的工作量,对进度、成本带来的影响以及造成的其他风险,并提出针对性的解决方案。召集用户开需求变更评审会,让用户确认一套解决方案。双方在需求变更单上签字。如过在编码阶段发生需求变化,我们应和用户仔细确认是否要更改,同时要计算这个需求改变所引发的一连串问题,计算成本,会不会影响项目进度,反复计算后,再签订需求变更单。目前业界大多已经不采用瀑布模型的方式开发了,其主要问题在于:各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险。早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。我们在开发做一个项目时,就应比对这个项目适合的开发模式,如果需求变更大,采用哪种模式的问题等等。每个模式都有各自的优缺点,我们要合理的了解项目的需求,然后再使用合适的一种开发模式。我们怎样应对多变的需求来做好需求分析与设计呢?尽可能地让自己成为用户,倾听用户需要,理解用户需求,听听用户的解决方案,了解需求发生的频度,模拟用户操作,补全缺失流程。

问题四

  • 第九章的项目经理,如何做到一个优秀的PM?是按照书上所说的做,就可以领导一个项目团队了吗,能让员工真正地服你吗?我觉得并不是这样,一个优秀的PM不仅要有专业的领导力,还要有出众的管理能力,一定的专业能力;还要懂得体贴员工,有责任心,自我约束能力强。
  • 回答:

    项目经理是项目的灵魂,项目经理可以说是一个全方位的角色,他什么都要扮演,可能是一个领导者,是一个决策者,也是一个协调者,也是一个代表者,他是这个项目的代表,是一个问题的解决者,也是一个信息的提供中心,更是一个界面的管理者,所以基本上项目经理什么角色都要扮演,有需要,任何角色都要扮演,也可能同时扮演多种角色。 
    首先要真正理解项目经理的角色,领导并管理项目团队,依据项目进展的阶段,组织制订详细程度适宜的项目计划,监控计划的执行,并根据实际情况、客户要求或其他变更要求对计划的变更进行管理,注重客户和用户参与。

问题五

  • 第十一章的软件设计与实现,书中223页提到了软件是怎么解决这些需求的?现实世界中的实体和属性在软件系统中是怎么表现和交换信息的?,以及224页的两个类似的问题,只是问法不同,解决方法相同。我们在软件的设计和实现的过程中,怎样才能构建一个与客户所要求的软件类似的模型呢?我们不仅要把需求分析透彻,还要建立多个模型相互比较,选择最优的那个。建立的模型就是把用户的需求所描绘了进去,在仿照模型去编写软件,这样就可以解决用户的需求。在开发过程中,模型出现问题,是否得重新建模,还是在原有基础上加以改进?
  • 回答:在数据库设计阶段,就要做好概念模型的分析,然后再创建合理的ER图和关系模型,最后再建立合适的物理模型。其次是项目经理在和客户沟通时,就要把客户的想法了解透彻,然后做好需求分析。建立多个模型,判断多个开发模式的优缺点,择优选取项目需要的开发模式。如果开发的过程中,用户需求又改变,模型要改变,这样大大增大了开发的成本和进度,我个人觉得不一定需要重新建模,可以在原有的基础加以修改,就能适应客户的需求,如果需求变更过大,不得不重新建模,这要双方进行合理的商议后再签订需求变更条约,才能开展下一步的工作。

问题六

  • 第十六章IT行业的创新,什么是创新?我们一定要盲从吗,别人创新我们就跟着一起创新?如何抓准合适的时机进行创新?都说有了新的就忘了旧的,我看确实是这样。有好的想法确实不错,但是如何把好的想法实施起来?这才是创新的难点。俗话说早起的鸟儿有虫吃,但书中提到往往领导者都不是先行者,这是为什么呢?假如有好的想法,如何去实施然后做到技术上的创新呢?
  • 回答:

    首先我们要知道创新的概念,我们也不能盲从的创新,要了解合适的创新思维,抓准合适的创新时机。我们有了好的想法,去构思这个想法能带来什么价值,这才是把创新和好的想法互相结合,才是创新的难点之处。早起的鸟儿有虫吃,这是有双面行的,就是竞争意识.虫就好比是大家(鸟)所追求的目标,你要是早点行动,就比别的人有优势先得到虫.但是这句话也未必是绝对的.有些人可能因为自身能力不足或其他外界因素影响,即使他比别人抢先一步行动也未必成功.不过怎么说呢,你要想有所获得,必须付诸实际行动。有好的想法,也要有强硬的能力,才可以把想法转化成创新点,才可以真正实现创新。

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

  • 在课堂之上学到了不少关于软件工程的知识,了解什么是软件工程。
    了解了一些软件过程模型:瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型、统一模型以及每个模型的优缺点。重点了解了敏捷开发,并应用敏捷开发作为小组的开发模式,为小组的项目开发,完整的实验了敏捷开发的流程,同时也熟悉了个人软件流程,个人在软件开发中要用到的技能有单元测试、效能分析、回归测试等等。在项目开发过程中,需要用到软件项目管理的知识,需要确立项目经理、产品经理,对项目进行风险管理,合理的安排计划并对项目进行评估,使软件的质量得到保证。
    和小组一起完成了智慧党建云平台项目的开发,在组长的带领下,让我清楚的了解到了软件敏捷开发的流程、以及什么是敏捷开发、敏捷开发的好处,同时小组成员的任务分工明确,PM合理安排。通过此次的项目,让我了解到团队的作用,也让我认识到了团队协作的重要性。每个组员在团队里各司其职,团结协作,相互激励。

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

  • 这一学期上完这门课,我感觉自己还是学到了许多东西,对软件工程有了更进一步的了解,知道了软件生存周期及其模型的一些基本概念,了解了目前比较常见的几种软件开发模式的基本理论、基本特点,和常见的几种模型:瀑布模型、原型模型、增量模型等等。了解了软件设计分为概念设计和详细设计两个阶段,概要设计阶段首先要介绍软件设计的任务和目标,然后介绍概要设计阶段一些重要的软件设计基本概念。还有就是软件测试的知识,软件测试是为了发现错误而执行程序的过程,目的在于发现错误。软件测试有黑、白盒两种测试方式。测试一般按照四个步骤进行,即单元测试、集成测试、确认测试和系统测试。

    学习总是短暂的过程,课堂上学的知识总是很少的,还是需要自己在课后巩固自己课堂上所学的知识点,反复思考利用,才能转化成自己的。在每一次的个人博客作业中,还是收获颇多,既巩固了自己之前的学习的知识或者没学过的知识,也让自己对软件项目有了更好的了解。这门课让我意识到理论学习很重要,而实践更重要,实践是检验真理的唯一标准,只有实践和理论相结合,才能使效益最大化。软件工程的课虽然快要结束了,但是我对软件工程的学习才刚刚开始,有了这些基本知识做铺垫,在以后做项目的时候将会是解决问题的有效措施。同时也更加了解了基本团队模式开发软件的过程,自己开发和团队开发有什么不同之处,也认识到在团队中团结协作的重要性。
posted @ 2019-12-10 21:36  可爱杰尼  阅读(211)  评论(1编辑  收藏  举报