软件工程实践总结——步履不停,行至尽头

这个作业属于哪个课程 <软件工程23年春季>
这个作业要求在哪里 <软件工程实践总结&个人技术总结>
这个作业的目标 <课程回顾与总结、个人技术总结>
其他参考文献 《构建之法》

文章目录

    • 一、课程回顾与总结
      • 1.问题回答地址
      • 2.重新解答
      • 3.每个阶段收获最大的知识或能力
        • 3.1 需求阶段
        • 3.2 设计阶段
        • 3.3 实现阶段
        • 3.4 测试阶段
        • 3.5 发布阶段
      • 4.个人项目/结对编程/团队项目的经历的理解或心得
        • 4.1 个人项目
        • 4.2 结对编程
        • 4.3 团队项目
      • 5.自我评分
    • 二、个人技术总结

一、课程回顾与总结

1.问题回答地址

这是过去问题回答的博客

2.重新解答

Q1:对于一名工程师而言,究竟应该是更”专“一点好,还是更”广“一点好呢?

A1:我还是保持原来的回答——"专"和”广“都要兼顾一些,在团队合作项目中更加坚定了这个想法,因为你需要足够"专",才能够把你所负责的部分做得够好。而同时你也需要足够"广",在团队初期技术选型的时候,可以敲定适合该项目的框架与所需技术,以便获得最佳实践体验。此外,与其他团队成员一起团队开发时候经常需要沟通,所以也需要足够广,这样的话能够减少许多交流成本。再者,实际开发中,你除了自己要负责的部分外,很可能还要帮助其他成员,这时候也是需要足够广的。

Q2:学生与职业程序员的区别?

A2:通过这次软件工程实践课,会发现职业程序员解决问题的思路要更为高效与简单,并且我发现职业程序员较之学生,在代码书写规范上更加注重,而且很多时候除了了完成功能外,还会考虑到如何降低耦合度,如何去封装,如何用更加简洁的代码书写方式,如何让自己的代码部分也能够让别人接手,而学生很有可能不会注意到这一点。

Q3:完成任务的预估时间如何预估?

A3:完成任务的预估时间和之前的回答一样,个人计划完成时间的1.5到2倍左右,经过多次的软工实践作业,从个人开发来说,我会倾向于做得更好,所以个人开发的时候,会舍得多花一点时间去把自己的任务优化、做好。团队完成任务的时间预估为计划的2到3倍,有的时候开站立式会议讨论进度的时候,原本计划1~2天内完成的任务,往往会因为其他因素而花上更长的时间(比如前后端交接的时候前端写好了,但是还要等后端接口给好,才能渲染数据测试)

Q4:结对编程中,应选择与自己能力互补的搭档比较好还是与自己能力相近的搭档比较好?

A4:这个问题也是与之前的回答一致——与自己能力互补的搭档,通过实践课的结对编程,我和搭档还是有不少遗憾的,比如没能实现前后端分离,我们两个的技术都是前端方向,所以最后时间较紧的情况下,就只能纯前端开发了,如果我们的能力互补的话,或许我们能够实现前后端分离。所以我认为还是能力互补的搭档会比较好,这样能够实现1+1>2的效果。

Q5.在团队项目中,是选择有利于自身成长、最具挑战性的工作;还是有利于团队、有把握的完成的工作?

A5:通过这次团队项目开发,我认为还是要选择有利于团队、有把握的完成的工作,我们团队在开发过程中,因为时间限制,要把控项目进度,大家都基本都是求稳,在安排的时间内,把自己负责的部分做好。而对于有利于自身成长、最具挑战性的工作,可能要往后站站,毕竟挑战性工作可能具有一定的风险,管控这个风险也是需要成本的,除非你已经完成了你所负责的部分了。

3.每个阶段收获最大的知识或能力

3.1 需求阶段
  • 在需求阶段,主要是学会使用NABCD模型使用墨刀进行原型设计,对我们产品的需求设计有更明确的认识,让我们充分认识到如何从用户角度思考,如何以人为本。同时在需求阶段,我们还确定了技术选型。收获就是对产品进行需求分析的能力提高了。
3.2 设计阶段
  • 在设计阶段,我主要负责的用况图的设计,我收获最大的能力是将需求转化为系统或产品的具体设计方案。我学会了综合考虑技术可行性、用户体验和系统架构等因素,并将它们融入到设计决策中。回过头来看,才明白一个好的设计对于后续开发起到的作用是多么重大的,同时也明白了编写设计文档的重要性。
3.3 实现阶段
  • 在实现阶段,我主要负责的是前端后台的开发,我收获最大的就是能够使用element ui + vue2,进行后台的一个快速开发。通过实际编码和开发过程,我提高了自己的编程技巧和代码组织能力并对vue2这个框架有了更深的认识,此前对前后端分离还是只停留在概念阶段,这次才是真正接触到了前后端交接。在这个阶段,我也学会了与团队成员进行协作,使用GitHub进行代码管理,并解决实现过程中的技术难题。
3.4 测试阶段
  • 在测试阶段,我主要负责的是前端后台的测试,主要是对一些交互功能,与数据能否正常渲染进行测试。通过测试,我能够修复产品中的错误,并确保系统的功能和性能符合预期。我也学会了如何进行错误跟踪和缺陷管理,以改进产品质量。但是说实话,这样的测试还是手动测试的,没能形成一个体系,缺漏还是有许多的。
3.5 发布阶段
  • 在发布阶段,我们是前后端分离的,而我负责web端后台编写,只需要生成dist包,然后交给后端负责部署的人员进行部署即可。并且根据α阶段中存在的不足之处与用户体验反馈的调查问卷,我们在β阶段对设计上不合理的地方进行了优化与完善,这个阶段使我更加明白以用户为导向的重要性,在开发的过程中,应当时时注意用户实际体验感。

4.个人项目/结对编程/团队项目的经历的理解或心得

4.1 个人项目
  • 个人开发的时候,发现编写实现功能只是一部分,更重要的其实是对需求的理解要清楚,这样才能设计出合理的测试样例,然后才能全面地测试出代码的问题。(有的时候博客要求没说清楚,就一定要问清楚,否则可能还要重写代码),同时也学会了如何使用Junit5进行单元测试
  • 然后就是性能优化阶段这个方面,此前没有考虑过优化,第一次使用JProfiler性能测试工具,也学习到了别人的一些优化思路,以后实战的时候性能优化肯定是十分重要的。
  • 对git工具有了更深的理解,初次学习到如何fork一个项目,如何签入。
4.2 结对编程
  • 结对编程原型设计阶段,第一次接触到原型设计工具Axure;而在代码实现阶段,我也是第一次接触学习vue框架,虽然在结对编程中有许多缺憾,但是,在结对编程阶段的经历也可以说是为后面团队项目开发做铺垫。
  • 此前还没有和别人一起写代码的经历,通过结对编程,让我对合作编程有了更深的理解,同时在合作编程中,自己也暴露出了不少的问题,发现了自己的许多不足之处。
4.3 团队项目
  • 我们团队项目是前后端分离的,所以最重要的还是前后端的充分沟通,要事前写好API文档,确保前后端的理解一致,否则在前端渲染数据时发现接口有问题,还要修改,这是很浪费时间的。
  • 在团队项目中,主要是我负责后台的开发,后台的主要代码都是我编写的,所以下次如果有需求要编写后台系统,感觉应该还是能比较自信地应付。
  • 其次,团队开发项目时,有问题一定要及时报备,比如我之前本来打算直接用ruoyi的模板开发后台,所以乐观地估计了完成时间,但是后来发现与我们产品的需求与技术选型还有差异,且二次开发难度不小,只能用element ui+ vue2快速搭建一下后台了,后面时间还差点不够了。不过α阶段做得好了,β阶段要做的事就少了很多了。

5.自我评分

目标 理由 分数
目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。 在团队项目编写中,我们的主要目的:为考研学子提供所需的考研信息资料与经验分享,来帮助考研学子成功上岸。目的是便利考研学子获取信息,符合以人为本,积极向上的软件开发理念 。 90
目标2: 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 使用 NABCD模型进行分析,明确用户需求并将功能细分,使用原型设计工具墨刀初步构建 ,能够辨别用户客户多样化要求。 85
目标3: 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 遵循之前需求分析与数据库设等体系结构设计, 在后续实际代码开发阶段中依照体系结构设计与设计原则进行功能完善,形成了一个可行的软件系统设计方案 85
目标4:能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 在参照竞品中的优秀设计,作为优选设计方案备选,与队员交流探讨后,选择适合本项目的有利改进,最后统合为优选设计方案,实施到软件系统中 85
目标5:遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。 在设计API文档与编写系统设计说明书时,参照相应的业界标准,具有编写此类文档的能力,但是与业界同行交流能力可能还有欠缺 85
目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 能够和其他团队成员进行有效沟通与协作,能够协调团队,明确进度,方便开展工作 90
目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 使用teambition进行项目管理,可以估计项目工作量,方便管控和规划项目开发进度,对复杂项目,能够拆分为子任务逐步实现 90

二、个人技术总结

  • 个人技术总结——vue-quill-editor富文本插件的使用
  • 技术概述:Quill 是一款 API 驱动、功能强大的现代富文本编辑器。它具有易于拓展、各平台表现一致性等优点。Quill 是以可拓展性和定制化为理念进行设计的。它尽可能简洁地实现了的编辑器的核心功能,并暴露接口供开发者进行定制化开发。在需要集成富文本的项目中不妨试试Quill。

你可能感兴趣的:(软件工程)