提问回顾与个人总结

提问回顾与个人总结

项目 内容
作业所属课程 2020春季计算机学院软件工程(罗杰,任健)
作业要求 提问回顾与个人总结
课程目标 学习软件工程,提高个人工程能力和团队协作能力
作业在哪些具体方面帮助个人实现目标 对一学期的软件工程学习做出回顾总结
提问回顾 第一次个人博客作业

1.问题解答

问题一(2.3 个人开发流程):我们了解到一位工作经验丰富的软件工程师,会在开发软件的需求分析上花费较重比例的时间来做好软件的设计文档和准备工作,在软件工程中,用户的需求,包括用户期望框架和功能,这些都应该是工程师提前了解并考虑在内的,那么没有开发出顾客不喜欢的软件又怎么能称为“高效开发出”呢?

在我们实际的开发过程中,实际上工程师会根据产品经理给出的功能需求来完成相应的开发,工程师要完成的基本的任务就是在规定的时限下完成自己的功能开发设计,所谓“高效”,但是在开发出第一版本的功能雏形后,在后续的测试中还会遇到很多问题,比如设计上的不合理,使用不便等,需要花费更多的时间来完善功能,如果工程师只是追求在更短的时间内完成任务,而忽略对功能设计的思考,我认为这不能是一个优秀的工程师。

问题二(3.1 个人能力的衡量与发展):如果软件工程师为了达到这种和顾客的稳定合作关系,更多地去追逐常规,重复的任务,更在意的是交付工程任务的时间,这样长此以往地工作,是否会逐渐丧失本可以拥有的创新能力,或者说那些正在努力实现创新的软件工程师是否会因为无法短时间交付工程任务而放弃创新点?

通过团队项目中两个阶段的开发设计学习,我们着手于工程设计的方法主要在工程开始正式开发之前学习好所需要掌握好的技能知识,同时在每一阶段的开发之前,我们都会制定好各自的功能设计目标,在限定时间内完成。事实上,我们在完成好目标后并不会马上结束这一阶段的工作,而是在后续反复测试,发现功能的缺陷,找出更好的解决方法,不断迭代修改,在这一过程中,我们会有足够的时间去完成创新;同时,每次遇到新的问题,我们都会在后面汲取教训,争取在后续的开发中做得更好,以alpha阶段和beta阶段为例,在alpha阶段我们更加注重基本功能的高效设计完成,每一阶段都会安排设计大量的基础功能开发,但是在beta阶段,我们会在之前的基础上做出功能完善,让产品的功能设计更合理,更全面,做到高质量开发。

问题三(4.5 结对编程):在结队的过程中,两个如果搭配好确实会使得任务完成得更出色,更高效。但是在以往的“结队”经历中,实际个人对另一方的任务完成情况总会有一丝不确定性,这就导致自己总习惯把握对方完成的项目情况,让自己心中有一定的把握,在理解他人做事的原理上,就会花费一时间;其次,结队的两个人必然会有实力的区别,如何去分配相应的工作和享受相应的成果,这是否也需要较为严密的规则制定?

在软件工程的项目中,有的工程适合结对编程,但是有的不适合。以这学期软件工程中的结对编程项目为例,我认为这个软件工程项目就比较适合结对编程来提高完成效率,同时培养双方的合作能力。在结队项目中,我们可以把工作任务分为计算核心模块和UI模块,两个同学分别去完成各自的功能版块,在设计完成封装后,双方仅需要去测试能否调用对方的接口即可,不需要重复去考虑对方的内部代码设计。

问题四(8.3 获取用户需求——用户调研):软件工程师往往会在工程任务开始前花费一定时间在设计分析上,其中肯定包括对用户需求的考虑,但是如果顾客在一次次的新要求提出中,影响到软件的整体架构,需要工程师重新去考虑工程的整体完成方向,这是否会影响双方的效率,工程师应该如何应对?如果工程师从不同的方面去考虑用户需求,在这个过程中出现需求满足矛盾或者理解困难怎么办?

在实际的工程开发中,在用户需要和具体功能设计之间,项目经理起到了重要作用,PM通过对用户的需求分析,制定好相应的功能规范书,与工程师沟通交流需要完成何种功能设计,另一方面,PM可能对具体的代码实现不是很熟悉,这就需要工程师在开发中遇到模棱两可的困境时及时与PM沟通,以避免不必要的麻烦浪费时间。

问题五(16.1 创新的迷思):的确,近些年来,创新似乎是整个社会的发展方向,似乎只有冠上“创新”一词的公司,学校和技术,才有发展的可能,但是这些所谓的“创新”,真的是创新吗?我认为他们中的绝大多数,只是做到了新,而并未创造出来有价值的东西。这是一个追求高效,高速的社会,我们不断去完成下一个任务的过程中,或许会逐渐变得麻木,变得章程化,公司需要一个创新点,那好,我们按规矩给它一个新点子,至于这样的东西有没有价值,有待考证。创新我认为需要一定的环境来孵化,这需要我们突破常规的思维,现有的技术,在把握好先进的知识和视野下,去大胆想象,亲手实验。如何去培养一个具备创新能力的人才,我们需要更严谨的答案。

一个优秀的工程师,我想不仅能够高效地完成好分配的每一个项目任务,更能够在产品开发中发现一些新的创新点,这些创新点可能是因为某一个bug找到的好的解决办法,也可能是在一次次需求下总结出的高效开发方法。工程师除了在自己的项目中死磕外,还应该规划出别的时间去学习,去借鉴,同时还要自己动手实验,只有当一个工程师在项目开发上有了一定的经验和熟练度,才会想到如何更进一步,找到开发的突破口。

2.新的问题

问题一:在开发的各个阶段中,开始时每个成员可能会比较积极,各项任务完成都很及时,但是在开发后期成员会有所懈怠,该如何更好地调动大家的积极性?
问题二:在alpha阶段开发结束后的转会流程上,如果一个团队配合较好,没有特别需要转出的成员,或者是没有合适的职位提供给转入的同学怎么办?

3.学习的知识点

需求:需求分析是完成项目工程的重要一步,这将决定着后续的开发过程中是否能高效地解决工程开发目标,我们也通过诸如NABCD的需求方法来进行分析。我们在进行需要分析时,要学会代入用户的角度来进行深刻思考,同时根据每一阶段的问题所在,汲取教训,在下一阶段中做得更好
设计:我们在开发小程序的过程中主要将总体设计划分几个独立的板块,交给不同的小组进行设计,每一组根据其负责板块的特点制定相应的功能设计和规格设计,在整体项目合并上,采用统一的模板进行UI界面设计,保证小程序中各个板块的设计风格的统一
实现:我们主要采用微信开发者工具来进行小程序的开发,学会使用微信开发者工具中的云开发功能来设计项目的后端,同时学习前端的设计开发知识,熟练前后端接口的调用实现功能设计
测试:学会如何在开发过程中使用回归测试、根据代码覆盖率进行测试,同时进行代码设计功能互测,根据互测中发现的bug进行迭代修改,做到设计更合理,使用更方便,没有编译报错和明显的功能缺陷
发布:在发布时根据发布平台的要求改好开发版本代码,如果审核没有通过要根据提示信息及时修改代码;在发布成功后学会如何宣传推广,制作海报,广告词,在论坛,社交工具中进行推广
维护:根据用户的反馈及时找到负责相应版块的同学进行修改,同时安排相应的同学维护好数据库和云存储的数据信息,并及时更新产品内容来吸引客户

4.理解心得

个人项目

虽然个人项目的工程设计和代码算法并不复杂,但是它要求我们初步认识软件工程开发的基本流程,我们需要考虑代码的结构化设计,考虑算法设计的可扩展性。也许规范自己的代码质量是一件比较繁琐的事情,但是我们在后面不断地学习中会发现这些都是很有必要去做的,规范自己的工程代码会让后面的开发事半功倍。同时,在个人项目中我还学会了如何去做单元测试,可以高效地检测工程代码的bug并及时修复。

结对编程

结对编程项目是我们未曾接触到的软件开发方法,在结对编程中我们初步体验到软件工程项目的合作,也锻炼了结队双方的配合默契,提高个人的团队配合能力,也为之后的团队项目打好基础。在结对编程的项目中我们沿用个人项目进行功能扩展,同时增加了UI模块设计,我们在结对编程中也学会了GUI的设计,以及如何去封装自己模块,提供调用接口进行模块之间的对接。在这次结对项目中我们也实现了1+1>2的工作效率提高,体验到了结对编程和合作的重要性。

团队项目

团队项目是本次软件工程课程最重要的工程项目,完成时间也经历了两个阶段的开发设计。在这次团队项目中,我们体验到了完成一个软件所需要的完整的流程,包括分组,项目功能需求制定,开发设计,转会,发布与维护等,我们通过分工协作,大家锻炼自己在团队中的合作能力,加强彼此的沟通,学会如何让团队项目的设计开发更高效,这对于我们日后的团队项目工作都是极大的经验。

posted @ 2020-06-15 12:36  Lonarch  阅读(149)  评论(1编辑  收藏  举报