软件工程实践总结——长风破浪会有时

222200224徐逸凡 2024-12-14 23:33:55
这个作业属于哪个课程https://bbs.csdn.net/forums/2401_CS_SE_FZU
这个作业要求在哪里https://bbs.csdn.net/topics/619470310
这个作业的目标为本学期的学习进行总结
其他参考文献构建之法

目录

  • 课程回顾与总结
  • 1.以前问题思考的博客链接
  • 2.再次回答自己曾经思考的问题
  • 问题1 如何区分一个好的程序员和不好的程序员呢?
  • 问题2 对于一名工程师而言,究竟应该是更“专”一点好,还是更“广”一点好呢?
  • 问题3 我都是大学生了,上课还要认真听老师讲课吗?
  • 问题4 花费时间越多,代表工作量越高吗?
  • 问题5 如果你是病人,你希望你的医生是下面哪一种呢?
  • 3.在项目的5个阶段中,每个阶段收获最大的知识或能力
  • 需求阶段
  • 设计阶段
  • 实现阶段
  • 测试阶段
  • 发布阶段
  • 4.在个人项目/结对编程/团队项目理解或心得
  • 个人项目
  • 结对编程
  • 团队项目
  • 5.对七大课程目标的掌握程度
  • 目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。
  • 目标2:掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。
  • 目标3:掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。
  • 目标4:能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。
  • 目标5:遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。
  • 目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。
  • 目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。
  • 个人技术总结

课程回顾与总结

1.以前问题思考的博客链接

博客链接

2.再次回答自己曾经思考的问题

问题1 如何区分一个好的程序员和不好的程序员呢?

对之前的回答我还是比较认可的,良好的代码风格和较少的bug可以体现一个程序员的专业性,同时还有几个能力,我现在更加看重了,首先是在一个长期的项目中,能够很好的规划自己的开发,根据团队需求进行修改,并对自己每日所做的工作进行总结,有所感悟,实现能力的不断增长。此外,良好的沟通能力也相当重要,团队需要协作,程序员必须提高沟通的效率。在实践中,我有深刻的体会。

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

经过这一学期的软件工程学习,我意识到对于工程师来说,既需要有深入的专业知识,也需要有广泛的技术视野。在实际工作中,一个项目往往需要多种技术的融合,这时候就需要工程师能够理解不同领域的知识,以便更好地协作和沟通。同时,随着技术的快速发展,工程师也需要不断学习新技能,以适应不断变化的技术需求。
所以,我认为一个好的工程师应该在某个领域有深入的专长,这是他们的核心价值所在。但同时,他们也需要对其他技术有一定的了解,这样在团队合作中才能更好地发挥作用。这种“T”型的知识结构——既有深度也有广度——能够帮助工程师在专业领域内深入挖掘,同时在需要的时候能够跨界合作,推动项目的成功。简而言之,工程师应该追求专业深度和知识广度的平衡,这样才能在不断变化的技术世界中保持竞争力。

问题3 我都是大学生了,上课还要认真听老师讲课吗?

作为大学生,自主学习是非常重要的。如果你已经通过自学掌握了课程内容,那么在课堂上可以更有选择性地听讲,专注于那些你不太理解或需要进一步探讨的部分。然而,认真听讲仍然是有价值的,因为老师可能会提供额外的见解、案例分析或最新的研究进展,这些都是自学难以获得的。

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

花费时间的多少并不直接等同于工作量的大小。工作量应该根据完成的工作成果和质量来衡量,而不仅仅是时间的长短。
有时候,花费很多时间可能是因为缺乏效率,比如在解决问题时走弯路,或者在编码时没有遵循最佳实践导致需要不断返工。另一方面,一个工作效率高的工程师可能在较短的时间内完成更多的工作,因为他们能够快速识别问题、应用正确的解决方案,并编写出高质量的代码。
因此,提高工作效率是提升工作量的关键。这包括了对工具和技术的熟练掌握、良好的时间管理、以及持续学习和改进工作方法。在软件工程中,我们学习了许多提高效率的方法,比如使用版本控制系统、编写单元测试、进行代码审查等,这些都是为了在保证代码质量的同时提高开发效率。所以,工作量的高低并不简单地取决于花费的时间,而是取决于在这段时间内完成的工作成果和质量。

问题5 如果你是病人,你希望你的医生是下面哪一种呢?

经过一学期的学习实践,我现在最希望我的医生是c种(已经处理过很多类似的病例,可以一边给你开刀,一边和护士聊天说昨天晚上的《非诚勿扰》花絮……)了。这个问题本身是一种比喻,我生的病就代表项目出现的问题、bug。医生指的就是解决问题的方法。c类的医生,最能代表的就是最有经验,对这类问题已经非常熟悉的解决方法。使用这类方法一般不会有很大的问题,可以保证项目不会越改越乱,在效率上也比创新的方法和翻阅书本细致检查的方法高的多,在考虑到项目开发的时间成本上,我对c种医生的倾向更高了。

3.在项目的5个阶段中,每个阶段收获最大的知识或能力

需求阶段

我学会了如何深入挖掘和理解客户的真实需求,这不仅仅是听他们说了什么,更重要的是理解他们背后的意图和目标。我学会了如何通过有效的技巧,确保我能够准确地捕捉到项目的核心需求。这个阶段,我最大的收获是对市场和技术趋势的敏感度,以及如何将这些需求转化为具体的项目目标。

设计阶段

设计阶段对我来说是一个创意和逻辑并重的过程。我在这里学会了如何将抽象的需求转化为具体的设计蓝图。我不仅锻炼了我的创新思维,还学会了如何平衡美学和功能性,确保设计既美观又实用。这个阶段,我最大的收获是系统架构设计的能力,以及如何将用户需求转化为用户界面和用户体验设计。以及对于一些原型设计软件进行了初步的掌握,能够绘制初步的原型

实现阶段

这个阶段,我深入学习了各种编程语言和技术栈,同时也锻炼了我的项目管理能力。我学会了如何在紧张的开发周期内,合理分配资源,确保项目按时按质完成。这个阶段,我最大的收获是解决复杂问题的能力和在压力下工作的能力。特别是压力开发的那次作业,令我印象深刻,完成后的感受现在还历历在目。

测试阶段

我学会了如何设计和执行各种测试,确保产品的质量。我学会了如何从用户的角度思考,找出可能的问题和缺陷。这个阶段,我最大的收获是分析问题和批判性思维的能力,以及如何系统地识别和修复缺陷。学会了如何对代码进行单元测试,学会利用apifox对接口进行批量的测试,大大提高了测试效率

发布阶段

这个阶段,我学会了如何准备产品的最终交付。我深入了解了如何进行产品部署,包括确保所有功能都经过了彻底的测试并且稳定可靠。我还学习了如何编写详细的用户手册和文档,以便用户能够轻松地理解和使用产品。

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

个人项目

学习了爬虫技术和测试技术,编程方面难度不大,完成的也比较顺利,前期数据处理和后期的代码测试花费了大量时间,深刻体会到了项目开发的不容易,也对自己的能力有更深刻的认知,在软件开发这个领域,还有很多知识需要学习,还有很长的路要走。

结对编程

结对编程总体难度不大,主要是对前端的接触比较少,在学习完知识之后运用的还算熟练,绘制对阵图时对flex布局有了更深的理解,在项目之外,还积累了git技术的经验,使用分支,同步开发,提高了开发的效率。此外,最大的感触就是结对编程时的工作效率显著的提高了,我和我的搭档在技术上各有侧重,在实际编程时也依据技术进行了分工,同时在设计阶段也更加有信心了,因为结合两个人的意见,可以更好的完成设计。最终的实现、测试与发布也就水到渠成了

团队项目

团队项目对于我而言是第一次接触这么大规模的项目开发,在项目正式开始之前,团队进行了接口文档的撰写、将团队分为前端和后端两个部分,我选择了后端,之前没有接触过后端springboot框架,在还没上手时还有些发怵,但是通过自己在网上查阅资料进行学习和团队成员进行沟通交流后,发现自己能够很快适应接口的开发,理解了springboot的架构,同时还学习了利用apifox对接口进行测试,调试数据库的能力也得到了巩固。我个人的开发比较顺畅,但是团队前后端的进度有一定的差距,现在反思的话就是因为团队的分工不够明确,自己前端的能力也还不足,所以希望以后在前端方面也能有所长进,提高工作效率。

5.对七大课程目标的掌握程度

目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。

90分
已经深刻理解了软件工程师的职业道德规范和实践要求,并且能够将这些规范应用到实际工作中,展现出高度的职业责任感和伦理意识。对于国情社情民情的了解表明能够将软件开发工作放在更广阔的社会文化背景中去考量,这使得设计出更符合用户需求和社会价值观的产品成为可能。同时,对于软件产品对社会、健康文化等的影响有着深刻的认识,这有助于在开发过程中考虑到产品的长远影响,避免可能的负面影响。

目标2:掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。

80分
在需求分析的过程中,能够与客户进行有效沟通,理解他们的业务目标和痛点,并将其转化为具体的技术需求。同时,也能够识别和解决需求中的潜在冲突和不一致性,确保需求文档的清晰性和可执行性。

目标3:掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。

85分
已经掌握了软件开发的关键环节,包括体系结构设计、数据设计和构件级设计,并能够遵循设计方法和基本原则来构建高效可靠的服务组件或软件系统。对构件级设计的相关理论、原则和模式了解不够全面,导致在实际应用中难以做出最佳的设计决策。

目标4:能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。

80分
技术评测能够基本掌握,对模型可以进行基本的评判,但是在创新设计意识上还有所欠缺,不太能推陈出新,还有较大的进步空间。

目标5:遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。

80分
在软件开发过程中能够清晰、准确地记录和传达关键信息。这样的能力确保了项目文档的专业性和一致性,这对于项目的顺利进行和未来的维护都是至关重要的。能够使用行业内通用的语言和术语进行有效沟通,这不仅有助于团队内部的协作,也便于与外部合作伙伴、客户以及更广泛的技术社区进行交流。这种交流能力还包括能够理解并吸收来自不同背景和专业知识的反馈,以促进项目的改进和创新。

目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。

80分
能够在团队中扮演积极的角色,与其他成员进行有效沟通,理解并尊重不同的观点和工作风格。在组织、协调指挥团队开展工作上比较被动,经常是跟随团队的指挥进行工作。

目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。

90分
能够识别和理解项目管理的关键组成部分,包括需求管理、时间规划、资源分配、风险评估和质量保证等。这种能力是有效管理软件项目的基础,因为它涉及到对项目各个方面的深入理解和协调。已经具备了使用现代项目管理工具和技术的能力,如敏捷管理工具、甘特图软件或其他项目管理软件。这些工具有助于更有效地规划项目时间线,跟踪进度,并及时调整计划以应对变化。

个人技术总结

个人技术博客

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

109

社区成员

发帖
与我相关
我的任务
社区描述
202401_CS_SE_FZU
软件工程 高校
社区管理员
  • FZU_SE_TeacherL
  • 032002124林日臻
  • 助教姜词杰
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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