软件工程实践总结——Push Through

222100133蓝有润 2024-06-06 23:57:13
这个作业属于哪个课程软件工程实践-2023学年-W班
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标软件工程实践总结
其他参考文献-

目录

  • 课程回顾与总结
  • 回答过去的问题
  • 寒假作业链接
  • 问题1:学生该如何做到像健身学员一样找到自身定位点,把握老师身上的那套健身资源,朝自己的目标前进呢?
  • 问题2:程序员在哪些地方是必须依赖一个额外的用户体验设计师的?
  • 问题3:在一个被认定为“足够好”的软件发布后,得到的用户反馈中,哪些是有用的?什么时候才能将这个软件优化到相对稳定的版本?
  • 问题4:花费时间越多,代表工作量越高吗?
  • 问题5:“技能”比“解决问题”更重要吗?
  • 新的问题:如果根据工作的量化指标来计算贡献度,那么如何使得工作能够被合理地量化呢?
  • 学习收获
  • 需求阶段
  • 设计阶段
  • 实现阶段
  • 测试阶段
  • 发布阶段
  • 心得体会
  • 课程目标自评
  • 个人技术总结
  • 技术博客
  • 技术概述

课程回顾与总结

回答过去的问题

寒假作业链接

软件工程实践寒假作业

问题1:学生该如何做到像健身学员一样找到自身定位点,把握老师身上的那套健身资源,朝自己的目标前进呢?

新的思考:在还未深入实践之前,我更侧重于理论学习和课堂资源的利用,认为找到个人兴趣点和目标是关键,把老师身上最重要的资源等价于课堂上的口述知识。然而,通过设计一个二手交易平台的实际经历,加上每一次实践课上的答辩,我深刻体会到了实践与理论结合的重要性。在项目开发过程中,我不仅需要将所学知识应用于实际,还必须深入理解用户需求,这要求我具备从用户角度出发的思维。这时候,老师和助教们便成为了非常重要的体验官,他们的宝贵建议也应该被当作不可或缺的学习资源。

问题2:程序员在哪些地方是必须依赖一个额外的用户体验设计师的?

新的思考:在开发了“福鱼”后,再次审视我先前的观点,我更加确信程序员在软件开发中需要依赖专业的用户体验设计师。这种合作不仅能够提升产品的可用性和吸引力,还能够确保产品能够真正解决用户的问题。
在我自己设计二手交易平台的过程中,即使缺少相关专业人员,我们团队仍努力将用户体验设计的理念融入到每一个细节中,例如,即使退款功能难以实现,我们也要保证程序上让用户感到交易的安全。我尝试从用户的角度出发,思考如何使平台更加易于使用,如何让用户在使用过程中感到愉悦。这种努力让我深刻体会到了用户体验设计的重要性。
此外,通过这学期的人机交互技术课程,我对用户交互心理学有了更深入的理解。通过这门课的学习和实践,我更加明白了用户体验设计的重要性。它不仅仅是关于外观的美化,更是关于如何通过深入理解用户的需求和心理,创造出既美观又实用的产品。这种跨学科的合作,使得程序员和用户体验设计师能够共同创造出既技术先进又用户友好的软件产品。

问题3:在一个被认定为“足够好”的软件发布后,得到的用户反馈中,哪些是有用的?什么时候才能将这个软件优化到相对稳定的版本?

新的思考:回顾上一次对软件发布和用户反馈的思考后,我依然认为迅速响应用户反馈至关重要,尤其是在处理紧急的bug和性能问题上。
因此在“福鱼”项目中,我尝试着更加主动地与用户沟通,了解他们的使用场景和痛点。在开发的过程中,使用了用户调查问卷,进行货比三家是否应该留在购物车界面的调研。
同时,我发现,有时候用户提出的简单的“问题”实际上是技术革新的有一个跳板。比如,用户对推送的反馈促使我思考如何利用人工智能技术提升搜索的准确性和个性化,单单使用简单的标签变量已经难以跟上用户的复杂需求了,运用用户画像进行深度学习似乎是推送机制的大势所趋。
对于相对稳定的定义,我仍然同意我之前的回答,Spotify不断更新用户的推送算法,这并不意味着该平台不具备相对稳定性,只要保证软件流畅运行、满足用户需求,那么此时软件就处于相对稳定的状态。

问题4:花费时间越多,代表工作量越高吗?

新的思考:回顾β冲刺的时候,我意识到这个问题的答案并非一成不变,而是充满了灰色地带。在软件开发的世界里,时间的投入并不总是直接等同于工作量的增加。这让我想到了著名的“帕金森定律”,它指出工作会膨胀以填满用于完成工作的时间。这启发我们去思考,工作量的衡量可能更复杂,需要超越单纯的时间计数。也就是每一个工作的必要劳动时间可能并不应该进行粗暴地估计,设定时间太低,开发人员的“帕金森”工作量可能会偏低,但是也不能设定得过高,这样会让工作人员感到过高的压力。因此,在设定必要时间之前,项目经理应该和工作人员沟通,把要求尽量谈得具体一些。
工作量也受到工作方法和工具的影响。使用自动化测试、持续集成和版本控制等现代开发工具和实践,可以显著提高开发效率,减少不必要的重复劳动。我们团队在alpha冲刺阶段一直背负着“技术债务”(短期内快速完成工作而忽视代码质量,长期来看可能会增加更多的工作量),在β阶段更加地注重Element Plus的学习,解决了之前的技术债务问题。

问题5:“技能”比“解决问题”更重要吗?

新的思考:回顾过往对技能与问题解决重要性的思考,我深刻体会到这两者之间的互补性。技能是解决问题的基石,而问题解决能力则是技能应用的体现。随着技术不断演进,我认识到必须持续学习新技能以适应时代潮流,同时也要培养快速学习和适应的能力,以应对新挑战。问题解决能力的培养尤为关键,它要求我具备创新思维和灵活应变的技巧,这不仅是技术层面的挑战,更是个人成长和思维锻炼的过程。
在开发“福鱼”的过程中,我意识到通过团队成员间的技能互补和知识共享,所有成员能够共同提升解决问题的能力。这种协作不仅增强了团队的整体实力,也为个人技能的发展提供了丰富的土壤。在实践中,“技能”和“解决问题”的重要程度的二元性大大降低了,因为在一个Scrum项目的团队中,一起解决问题的过程就是技能互补的过程。
所以,在经历了本次实践课程的学习后,我不再将技能和问题解决看作是简单的先后顺序,而是视为一个有机整体,它们在动态平衡中共同成长。在软件开发这个快速变化的领域,持续的学习和实践是我们适应新需求、解决新问题的关键。

新的问题:如果根据工作的量化指标来计算贡献度,那么如何使得工作能够被合理地量化呢?

个人思考:假设有一个中型的软件开发项目,团队由5名成员组成,包括项目经理、前端开发者、后端开发者、测试工程师和设计师。以下是个人想到的是功能点/权重分析。
假设用功能点进行评价,那么评估软件的功能性,如交易处理、用户界面和报告功能,每个功能点根据其复杂性分配不同的值。用户认证模块被分配了15个功能点,而用户界面被分配了10个功能点。不管代码复杂与否,完成用户认证的贡献度加成一定大于用户界面。
如果是自行定义权重,可以的指标是花费时间,例如在β冲刺中,团队在讨论中为每一个工作分配必要时间,例如:测试为0.5h,某个界面的开发时间为3h,然后根据这样的方式进行贡献度分配。

学习收获

需求阶段

在需求阶段,我深入校园社区,与同学们进行交流,收集他们对二手交易的真实需求和痛点。我学会了如何从用户的故事中提炼出关键信息,并使用用例图和用户故事来具象化需求。这一阶段,我特别注重需求的可行性和用户界面的友好性,为的是打造一个既实用又易于使用的平台。
最大收获:学习了精准挖掘和转化用户需求的能力,也就是在查阅资料、构建用户场景、进行调研的过程中挖掘到NABCD中的能力。这一技能对于我理解用户痛点、设计符合用户期望的产品至关重要,是连接用户与产品功能的桥梁。

设计阶段

在设计阶段,我复习了UML图,通过UML图详细规划了系统组件和数据流。同时进行系统设计、数据库设计,将实体转化成数据库中的数据,设计出一个依赖正常、外键合理的一个数据库系统。
最大收获:深刻理解了系统架构和数据库设计的重要性。我学会了如何设计出既符合功能需求又具有良好数据一致性和完整性的系统,明白了触发器的使用,这是确保软件长期可维护性和可扩展性的关键。

实现阶段

在前期的跳水平台实战中,我学会了用Spring Boot的微服务架构设计了平台的后端服务,确保了系统的可扩展性和维护性。同时通过Vue.js,我学会构建了一个动态且响应式的前端界面,使用户交互变得直观流畅。
“福鱼”的实现阶段是我技能得到极大锻炼的时期。使用Spring Tool Suite和VS Code作为开发工具,我编写了清晰、高效的代码,将IDE的插件功能开发到上限,并通过华为云服务器进行部署。这个阶段,我特别注重代码的DRY原则来提高代码的可维护性。
最大收获:对前后端分离的开发模式有了一个基本的认识,特别是在微服务架构下的后端服务开发和Vue.js前端界面构建,以及RESTful API的项目架构方法。这使我能够构建出既灵活又高效的应用,满足现代Web应用的需求。

测试阶段

在测试阶段,我学习了如何编写详尽的测试用例,并运用JUnit和Mockito等工具进行单元测试。我意识到了自动化测试在确保软件质量中的重要性,并学习了运用JMeter进行自动化接口测试。
最大收获:掌握了自动化测试的编写和实施,这极大地提高了测试效率和软件质量。我学会了如何通过测试驱动开发来优化代码质量,一部分接口是在策划好测试用例之后开发的。

发布阶段

发布阶段让我了解了软件部署的复杂性。我学习了如何在华为云服务器上配置域名、数据库和应用服务,并使用Git进行版本控制和发布管理。通过监控工具,我学会了如何追踪系统性能和用户反馈,确保平台的稳定运行。
最大收获:对云服务部署和维护有了实际操作经验,使用Navitcat对服务器内部的数据库进行实时维护,并通过监控和日志分析来维护应用的高性能和稳定性,这对于保证产品的持续迭代和用户满意度至关重要。

心得体会

个人项目的独立探索是我成长道路上的一座里程碑。它不仅为我提供了自由探索的空间,更锻炼了我独立分析和解决问题的能力。在软件评测作业中,我深入挖掘了软件的深层功能和用户体验,这一过程极大地提升了我的技术洞察力。我学会了如何像侦探一样细致观察和分析问题,从bug中推导代码逻辑问题,这种独立工作的经历赋予了我面对技术挑战的底气。
团队项目中的领导力与协调能力是我在后续团队的重要收获。虽然不是组长,但是作为项目的主要负责人,我不仅要把握技术脉络,更要发挥协调各方的作用,在组织成员期间,我对OKR的运用有了更加深层的理解,OKR作为一种流行的目标管理工具,它帮助我明确了项目的目标方向,并将其分解为可衡量的关键结果。在第一次团队实践中,我通过设定清晰的Objectives,确保了团队成员对共同愿景的理解与追求。同时,我制定了具有挑战性但又切实可行的Key Results,这些关键结果成为评估项目进展和个人贡献的量化指标。
在参与这些项目的过程中,我深刻体会到了创新思维、批判性思维、系统性思考的重要性。这些能力共同塑造了我软件工程的底层方法论。
创新思维的培养是我在设计和开发过程中的重要收获。在原型设计任务中,因为之前从来没有听说过原型模型设计的方式(那时候还认为有用GUI生成html代码的插件),我被鼓励跳出传统框架,采用创新的方法来解决问题。我学会了如何运用设计思维,在设计阶段就能创造出既美观实用、富有动态的界面,而不是通过css直接进行网站设计。
批判性思维让我能够深入分析语言模型的评测任务,不仅限于表面的功能测试,还挖掘了潜在的逻辑和性能问题。例如,在软件工程实践——软件评测作业中,我不仅评估了软件的功能实现,还通过批判性思维深入探讨了其算法效率和用户体验设计的合理性。
批判性思维常常与系统性思考相结合,我在面对复杂的项目需求时,能够将它们分解为更小、更具体的任务,这些内容以O到KR的形式体现,在明确的指标下,团队成员能够高效地逐一攻克所有任务,同时还能做好详细的分工。
通过本次实践课程的项目经历,我不仅精进了技术技能,更培养了创新、批判和系统性思维。这些能力相互交织,为我构建了一套全面的问题解决框架。我学会了在不确定性中寻找创新的解决方案,在复杂性中运用批判性思维深入分析,在多变环境中采用系统性思考进行规划。这些经历为我职业生涯的每一步打下了坚实的基础,我期待将这些宝贵的能力应用到未来的工作和挑战中,实现自我超越,成为一个成熟的软件工程师。

课程目标自评

目标编号课程目标描述自评分数评价内容
目标1理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。85对职业道德有深刻理解,但在将理念融入项目实践中还需加强。
目标2掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。70需求分析能力尚可,但在深入理解和准确表达复杂需求方面需要进一步提升。
目标3掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。82对软件开发流程有全面理解,但在技术评审和设计原则应用上还有提升空间。
目标4能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。72技术评测能力良好,但在创新设计和方案优选方面需要更多的实践和思考。
目标5遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。78能够规范撰写文档,但在与业界交流和理解更广泛的文档标准上需要加强。
目标6具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。80团队合作能力强,有效沟通,但在团队管理和领导方面需要更多的经验积累。
目标7能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。70对项目管理有一定的理解,但在实际应用和复杂项目把控上还需更多学习和实践。

个人技术总结

技术博客

个人技术博客——使用Spring Boot和Vue-Axios互传图片文件

技术概述

在我的技术博客中,我分享了一种高效的图片文件传输方案,适用于需要在Web应用中实现图片上传和下载的场景。通过结合Spring Boot的后端服务和Vue.js前端框架,配合Axios库,我展示了如何构建一个稳定且用户友好的图片互传功能。无论是轮播图信息保存、个人资料图片更新,还是任何需要图片传输的Web应用,本方案都能提供强大的技术支持。

...全文
181 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

310

社区成员

发帖
与我相关
我的任务
社区描述
福州大学的软件工程实践-2023学年-W班
软件工程需求分析结对编程 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • Pity·Monster
  • 助教张富源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧