软件工程实践总结

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

文章目录

    • 第一部分:课程回顾与总结
      • 1、对以前问题的思考
        • 1.1、以前问题思考的博客链接
        • 1.2、对自己曾经思考过的问题再次进行解答
      • 2、每个阶段的收获
        • 2.1、需求阶段
        • 2.2、设计阶段
        • 2.3、实现阶段
        • 2.4、测试阶段
        • 2.5、发布阶段
      • 3、心得体会
        • 3.1、个人项目
        • 3.2、结对编程
        • 3.3、团队项目
      • 4、自我评分
    • 第二部分:个人技术总结
      • 博客链接
      • 技术概述

第一部分:课程回顾与总结

1、对以前问题的思考

1.1、以前问题思考的博客链接
  • 软件工程实践寒假作业
1.2、对自己曾经思考过的问题再次进行解答

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

A1:这是一个难以抉择的问题。专攻某个领域可以让我们在该领域中获得更深入的知识和技能,帮助我们在特定领域内解决复杂的问题。然而,过于专注可能导致对其他领域的知识了解不足,限制了我们的全面发展和灵活性。

相比之下,广泛涉猎多个领域可以让你对多个技术和概念有一定了解,能够更好地进行跨领域的交流和合作,使你能够应对不同领域的挑战。然而,过于分散精力可能导致对某个领域的专业能力不足,难以在某个领域中取得深入的成果。

总的来说,最好可以根据个人情况找到一个合适的平衡点,既能在某个领域内有所专长,又能对其他领域有一定的了解和应对能力。

Q2:为什么作者坚持认为代码应该手写?用技术提高写代码的效率,除了造轮子,实现代码的自动生成是否也是一条出路?

A2:首先,通过手写代码,你能更深入地理解编程语言、算法和代码结构,从而提高对代码的掌握和调试能力。其次,手写代码可以让你更加注重细节和质量,提高代码的可读性和可维护性。此外,手写代码可以激发创造力和问题解决能力,促使你思考不同的解决方案。

当然,技术提高写代码效率的工具和方法也是非常有价值的。自动生成代码或利用现有的工具库可以提高开发效率和减少重复劳动,但在使用这些工具时需要权衡其对代码质量和可维护性的影响。造轮子与使用开源轮子之间的选择也需要根据具体情况进行考虑,权衡时间成本、复用性和自定义需求等因素。

Q3:写博客也会花挺多时间的,如果把这些时间花在写代码上面会不会更好?

A3:我对于这个问题还是同样的答案。写博客可以帮助你记录自己的学习内容,提高你的写作和表达能力,日后遇到同样的问题,便能够快速回顾并将其解决。当然,如果精力有限还是建议多写代码来提高你的编程技能,但是,如果失败和教训记不住,重复犯同样的错误将会耗费我们更多的时间,适当地记录便能够很好地解决这个问题,没有人是记忆力的天才,人总是会忘记一些重要的事情,所以,应该要合理安排好我们的时间和精力,平衡好写博客和写代码之间的关系。

Q4:良好的结对编程是团队合作完美进行的必要条件吗?

A4:结对编程可以提高代码质量,增加知识共享,减少错误和重复工作 。它也可能会导致例如降低生产效率,增加沟通成本,引起个人与团队间的冲突等问题 。所以,并不是所有的情况下都适合使用结对编程。结对编程要求参与者有相似的技能水平,相容的性格和风格,以及清晰的目标和分工 。如果这些条件不满足,结对编程可能会带来负面的影响。因此,我认为结对编程不是团队合作完美进行的必要条件,而是一种可选的工具或策略。团队合作完美进行的必要条件是有共同的愿景和价值观,有良好的沟通和协作能力,有明确的责任和期望,以及有持续的反馈和改进机制。

Q5:需求分析:“最好”还是“最合适”?

A5:需求分析需要考虑多方面的因素,比如用户或客户的需求、预算、时间、技术、竞争等 。在需求分析中,“最好”的概念往往是主观和理想化的,可能会导致过度设计或不切实际的目标。而“最合适”的概念则是客观和现实的,需要在各种因素之间进行权衡和折中,找到一个满足用户或客户需求的可行的解决方案 。因此,我认为在需求分析中,“最合适”比“最好”更重要,更能保证软件项目的成功。

2、每个阶段的收获

2.1、需求阶段
  • 在这个阶段,我负责编写了需求规格说明书,在这个过程中,我明白了如何进行需求分析,如何与其他人进行沟通和协商,如何正确地理解需求;同时,我也学会了如何使用NABCD模型进行需求分析,通过这个模型将需求从更多角度呈现出来,帮助我更好地理解,我也逐渐明白需求分析的重要性,只有正确地理解了需求,后面的阶段才能更加得心应手。
2.2、设计阶段

 在这个阶段,我负责了原型设计和数据库设计。

  • 在进行原型设计时,我明白了设计时一定要考虑用户体验,这涉及到用户界面的设计、交互流程以及用户对功能和信息的访问方式。我们要尽量思考用户可能遇到的问题,以及如何提供简洁、直观和易用的界面,以满足他们的需求。
  • 数据库是应用程序的核心组成部分之一,在设计数据库时,我们需要考虑数据的结构和关系。合理的数据库设计可以提高应用程序的性能、可扩展性和安全性。
2.3、实现阶段
  • 由于我之前有学习过uniapp,我认为这个作为前端框架很不错,我们小组也接受了我的建议,最后经过大家的讨论,决定我们项目使用uniapp+gin来进行开发。
  • 虽然之前有学习过这个框架,但是毕竟还没有实战过,刚开始写起代码来磕磕碰碰,但是后面在不断开发的过程中又慢慢地熟练起来,对于这种技能类的学习一定要多敲多练,光脑子学会了是不够的,要让手也熟悉起来才行。
2.4、测试阶段
  • 软件测试是软件生命周期中非常重要的一个环节,在这个阶段,我学会了一些基本的测试方法:黑盒测试、白盒测试,学会了如何去编写测试用例以及一些测试时的技巧,我学会了如何去发现和解决问题、熟悉其他部分的应用功能、提高了沟通和协作能力。这些经验将对我今后的测试和开发工作大有帮助。
2.5、发布阶段
  • 看到自己的项目成功打包成apk安装在手机上时,还是十分兴奋的,这说明这个项目以及可以独立地跑起来了,也让我明白了前面阶段的重要性,每个阶段都是在为最后做铺垫,每一步都不应该马虎。到了这个阶段,我就大概熟悉了软件开发整个流程,明白了每个阶段大概应该要完成些什么,我也明白了一些说明文档对于帮助我们理解项目的重要性。

3、心得体会

3.1、个人项目

 在完成个人项目的过程中,我学会了许多。

  • 我学会了如何解析处理JSON文件,如何通过PSP表格记录自己的任务完成时间,对自己的任务完成效率进行评价,我熟练掌握了git指令的使用,学会了如何对网站进行测试,如何代码性能进行测试和优化等等。
  • 总之,个人需要学习的东西有很多,虽然未来软件开发肯定不可能只有一个人,但是个人能力也是相当重要的,所以我们需要不断学习,提升自己的能力,这样其实也能帮助自己更好适应团队中变化的各种技术。
3.2、结对编程
  • 在结对编程中,我学会了如何利用Axure、墨刀等原型开发工具进行原型设计、如何使用vue+springboot编写一个简单的前后端交互项目,学会了如何与他人沟通和协作,明白了互相学习的重要性。
  • 从结对编程开始,我们的开发就不再是孤军奋战了,而是有了一个合作的伙伴,很幸运我和我的结对同伴磨合得很好,我们共同完成了许多任务,这相比于个人来说效率提升了不止两倍,虽然在中间对于一些问题有过争执,但是经过沟通与交流,我们很好地把这些问题解决了。
3.3、团队项目
  • 我在团队开发的过程中主要充当前端开发人员的角色,在这个过程中,我明白了团队协作的重要性,也不禁感慨到团队的力量是多么强大,每个人都认真完成各自的部分,最后拼凑起来就是一个庞大的、可以自循环的系统。
  • 我们在一起开发的过程中不断磨合,提升了自己与他人合作交流的能力。我们一起认真分析需求,共同探讨设计方案;发现一个问题,各抒己见,讨论合适的方案将问题解决;互相分享自己学会的技术与心得体会,防止其他成员掉进同样的坑里。
  • 通过向其他成员请教以及和后端成员的配合,我学会了前端如何与后端接口进行对接,以实现前后端交互的效果;通过观看其他成员编写的代码,我掌握了一些编程的技巧,帮助我提升自己的开发效率。
  • 总之,这次团队项目我收获颇丰,帮助我学到了许多书本上学不到的知识,我也深刻地明白团队合作的重要性,这个项目为我提供了宝贵的经验,让我大致明白了未来从事软件行业应该是一个怎么样的流程,帮我未来更好地适应自己的职业。

4、自我评分

目标 掌握程度 解释
目标1:理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。 94 我理解了软件工程师的职业道德规范和实践要求,了解了国情社情民情。理解了软件产品对社会、健康文化等方面的影响,也树立了自己积极向上的软件开发理念。我们的“福研帮”这款App就是在充分了解民情的情况下,针对福大学子的考研需求开发的一款软件,希望能够给考研学子带来积极的影响。
目标2:掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 89 在团队项目中,我使用墨刀、Axure等原型开发工具参与了原型界面的设计,对于用户的一些描述,我也能尽量细化其功能,使用不同的组件来实现要完成的功能
目标3:掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 88 在实践的过程中,我逐渐掌握了软件开发的全过程,明白了每一个阶段所要完成的任务。我参与了系统说明书、数据库设计说明书的编写,对于软件体系结构以及接口设计有了较为清晰的认识。
目标4:能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 91 我学会了一些设计模型的评判,通过对设计模型的评判,确保其对于项目来说可以便携方便地使用;在项目的完成过程中,我养成了创新设计意识,能够优选设计方案,选出合适的方案来进行开发。
目标5:遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。 87 我参与了需求规格说明书、数据库设计说明书、用户调研报告等文档的编写,在编写每个文档前我都认真学习了文档的相关标准,让其他人能够充分理解文档内容。
目标6:具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 95 作为团队中的一名成员,我能够认真地与其他成员开展有效的沟通和讨论,认真听取他人建议和想法,共同研究出一套能够满足大部分人想法、符合大部分需求的方案,善于表达自己的想法和意见,能够组织、协调自己这部分的工作。
目标7:能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 92 在项目的开发过程中我逐渐了解了软件项目管理中设计的构成要素,掌握了软件规模和工作量的估算方法。我们团队通Teambition对我们项目每天要完成的任务和每天的进度进行规划和安排,最后绘制出燃尽图对我们的项目完成效率进行评估和总结。

第二部分:个人技术总结

博客链接

个人技术总结

技术概述

当我们使用uniapp进行移动端开发的时候,使用uview-plus和uni-ui组件库,可以快速生成我们所需要的组件,提高开发效率。

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