688
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | 2023年福大-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 软件工程实践寒假作业软件工程实践总结&个人技术博客 |
| 这个作业的目标 | 课程回顾与总结、个人技术总结 |
| 其他参考文献 | 《构建之法》 |
在经过本学期的学习以及团队合作的经历,我更加坚定了我的想法,我认为单纯强调工程师是“专”更好还是“广”更好是十分片面的。更“专”一点的工程师和更“广”一点的工程师两者的分工并不相同。不同的分工对工程师有着不同的要求,如果是在团队中负责前端/后端的工程师,则需要不断学习对应方向的技术以实现更高级的业务需求,如果是在团队中充当管理指挥角色的工程师,那么比起“专”于某项技术,他更应该做到的是“广”泛地了解开发所涉及的各方面知识。有了对各方面知识的基本掌握能够帮助他更好的安排协调队伍中负责“专”的工程师的工作并与之协商交流。
通过本次团队合作各小组的选题可以在一定程度上体现当今软件市场的现状,当今软件市场上类似功能的软件层出不穷,决定哪一款应用成为主流软件的因素有很多,但就大部分人而言,用户体验是其中一个最为关键的因素。用户体验好的应用有时甚至能够战胜功能更为完备或效率更高的应用,这便足以体现用户体验的重要性。而这就是用户体验设计师存在的意义,比起软件工程师,用户体验设计师能够以更贴近用户的视角而不是工程师的视角来看待这款应用,通过科学的技术和数据,提出关键性的改进建议,这能够大大提高应用的市场竞争力。
我认为没有必要。在经过了本学期的学习,我了解到了产品迭代更新是需要较高的成本的,更何况是一款上线的应用。那么为了小部分人的需求而去对产品进行迭代,或许并不能取得对应的回报,考虑到其较高的成本以及难以确定的回报,我认为为了小部分人的需求去为产品添加功能是得不偿失的。
我认为存在会存在风险,不断挖掘用户的需求可能会导致开发团队将过多时间花费在细枝末节的功能或者纯粹是自己脑补的用户需求上,以至于影响到项目的整体开发进程,导致无法在计划的交付时间交付,影响应用的上线,就像在这次团队任务的极限编程作业中,尽管时间紧迫,但我们“过度挖掘需求”,给了自己过多的工作量,导致未能按时完成任务,给我留下了很深刻的印象。
因为过早优化会导致程序员进行一些没必要的优化,浪费时间和精力,也会使程序员纠结于琐碎的方面却忽略了更重要的任务或影响到整体的架构,进而影响到项目的整体开发进程。在本次团队合作的过程中,前端成员就存在类似的情况,明明还有很多接口没有对接、页面没有实现,但前端同学却在纠结设计的一个logo不够好看,考虑要给图标加一个响应式内容,这也在一定程度上耽误了项目的进展。
Q1:团队分工时由于成员的技术水平层次不齐,难免存在技术力和执行力都较为薄弱的同学,导致难以给他分配合适的工作,或者需要对其完成任务进行返工,面对这样的情况应当如何妥善应对和处理?
Q2:需求分析时要求工程师能够发现用户未能表述出来或未发现的隐藏需求,那么应当如何界定合理挖掘用户需求和过度挖掘用户需求?
需求阶段我最大的收获就是学会了通过NABCD模型深入分析理解用户需求和项目背景,这使得我能够更好的把握项目的核心需求和发展方向,为后续的开发提供清晰地方向和思路。
设计阶段我最大的收获就是学会了如何选择合适的设计模式以及通过可视化工具将抽象的需求概念转化为具体的设计方案。
实现阶段我最大的收获就是加强了团队协作沟通能力,学会了使用git工具进行版本控制以及管理项目各开发成员的git分支,了解到了git的一些更高级的应用。
测试阶段我最大的收获是掌握了测试的方法和技巧以及测试工具的使用,了解了应该如何更好的设计测试样例来暴露出程序的漏洞。
发布阶段我最大的收获是掌握了后端以及前端项目的部署方法,学会了应该如何发布应用的release版本,掌握了项目发布和维护的方式和技巧。
在本学期的个人项目中我第一次接触到了PSP,第一次接触到了RABCD模型,这些对我来说都是十分新奇的体验,虽说在第一次写的时候感觉十分的“痛苦”,觉得是在“浪费时间”。但在实践后也发现了其存在的必要性,比如PSP能够帮助我更好的度量自己开发的进度,以便找出不足之处并加以改进,NABCD则能让我更好的理解掌握用户需求,为后续的开发提供清晰地方向和思路。这是我第一次体验软件工程开发工具及方法,有很大的收获。
在结对项目中和队友一起合作完成了澳网项目原型的设计和最后代码的实现,这是我第一次接触原型设计,明白了设计一个良好的交互与用户体验有直接的关系,体会到了设计的不易。同时掌握了原型设计工具的使用方法和前端开发框架,虽说只是略懂皮毛,但对我来说也算是真正意义上成为了一个“全栈工程师”,给我带来了很大的精神满足。也让我接触到了开发的各个方面,促进了我对未来职业选择方向的思考。
在团队项目的α和β冲刺中,我第一次系统全面的体验了一款应用从需求分析到发布上线的全部过程,我认为这是十分珍贵的经验,同时让我体会到除了开发以外,项目还有很多重要的步骤。前期需求分析设计的完善能够很大程度上方便开发的进行,尤其是多人协作开发。与个人开发项目相比,多人协作开发项目更需要一个完备的需求设计文档以及规范来协助指导开发,这样组员间才能更好的沟通分工。
当然,除开上面说的对我个人开发能力的提升外,团队项目锻炼了我的团队协作能力以及协调分工能力,同时也结识了一些志同道合的好友,这也是我这次团队项目的一个重要的收获。
| 目标 | 评分 | 原因 |
|---|---|---|
| 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。 | 90 | 通过本课程的学习,我深入了解了软件工程师的职业道德规范和实践要求,包括对用户隐私和数据安全的保护、合法的软件开发行为等,同时了解到了软件对社会造成的影响。在查看了许多“事故”案例后,我意识到作为一名软件工程师,应当遵守职业道德准则,努力开发符合社会需求,对社会有积极影响的软件产品。 |
| 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 | 85 | 通过本课程的学习,我熟悉了需求分析的整体流程同时掌握了需求表达工具的使用,能够做到识别和理解用户表述的多样性要求并通过需求表达工具如用例图、需求文档等规范准确地表达用户需求,但在一些细节处如用例的抽象等方面仍有欠缺,需要进一步地学习和锻炼。 |
| 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 | 82 | 通过本课程的学习,我了解了软件开发从需求分析到软件部署的整体开发流程,并能够在各个阶段进行有效的工作和协作。同时了解到了技术评审的重要性,能够做到评审产品提出意见和反馈并进行相应的调整和改进。但缺乏完善的技术评审经验,仍需在实践中进一步提高自身的能力。 |
| 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 | 85 | 通过本课程的学习,我了解到了技术评测的重要性,并具备了对设计模型进行评判的能力,能够分析和评估设计模型的合理性、完整性和可维护性。但仍需要在实践中进一步提升自己的创新能力以提出更优质的设计方案 |
| 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。 | 75 | 通过本课程的学习,我接触到了软件开发过程中除开发外的文档编写工作。在团队项目中我担任了一部分文档编写工作,掌握了需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备了与业界同行交流的能力,但仍难以完成完整文档的编写,文档编写能力亟需进一步的锻炼和学习。 |
| 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 | 85 | 通过本课程的学习,通过团队项目α和β阶段的冲刺,我了解到了团队合作的重要性,锻炼了团队协作能力, 能够与其他成员开展有效的沟通和协作,并能在一定程度上协调指挥团队工作。但领导团队的能力仍需进一步锻炼。 |
| 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 | 80 | 通过本课程的学习,我了解了软件项目管理中涉及的构成要素,掌握了软件规模和工作量的估算方法,当对于具体的实现落实方式仍有些模糊,需要更多的实践来锻炼提升这方面的能力。 |
个人技术博客——Springboot中AOP的使用
概述:
Spring Boot AOP是一种面向切面编程的技术,使用AOP可以更轻松地实现横切关注点的重用和集中管理,提高代码的可重用性和可测试性。同时提高应用程序的可扩展性和可维护性。其难点在于理解AOP的概念、学习切面和通知的编写方式,并正确应用于实际场景中。
在本次团队合作的过程中,前端成员就存在类似的情况,明明还有很多接口没有对接、页面没有实现,但前端同学却在纠结设计的一个logo不够好看
你如何说服这样的小伙伴呢?