软件工程实践总结——春的临终

022000232沈向炜 学生 2023-06-06 12:02:01
2023春软件工程实践2023年福大-软件工程实践-W班社区-CSDN社区云
这个作业要求在哪里软件工程实践总结&个人技术博客-CSDN社区
这个作业的目标课程回顾与总结,个人技术总结
其他参考文献构建之法

 

 

目录

第一部分 课程回顾与总结 

1.1 以前提问题的博客链接

1.2 重新思考寒假作业的五个问题

1.3 新的问题

1.4 在各阶段收获最大的知识或能力

1.5 心得理解

1.6 自我评分

第二部分 技术博客

2.1 个人与学习情况对比

2.2 个人技术博客链接


第一部分 课程回顾与总结 

1.1 以前提问题的博客链接

软件工程实践寒假作业-CSDN社区

1.2 重新思考寒假作业的五个问题

Q1 代码量与个人的编码能力有直接关系吗?

我认为代码量与个人的编码能力有联系,但代码量的增加并不总是会有编码能力的提升,而是有其他更关键的因素。首先编码能力的训练是由问题导向,一直相同难度和思考深度的问题上编程能力,只是在对编程语言和框架的熟练度,需要走出舒适圈。新的问题带来更加广阔的需求场景,对程序的效率会更加苛刻。其次对于编程的态度也会影响很多,如果对自己的代码多雕琢多自己与自己较真,便会有很多启发。

这次体验后更加深刻,个人的编码能力成长像是深度学习的softmax激活函数。前期成长快,在初次遇到SpringBoot框架和注解开发法的时候,编写完一两个接口后和mapper之后,发现自己对前后端分离和MVC技术有了飞快的理解,这也直接体现我在完成本学期另一门JavaEE作业和考试的过程中。后面代码成长越来越慢,我觉得只是在套着模板写着其他接口。但随着beta个人被需求所驱使学习新技术或者使用新特性时候又有了前期成长迅速的感觉。

Q2 如何让自己能够跟上软件工程发展,做一个永不落伍的开发者呢

和之前一样我认为最重要的是保持对新技术的好奇心,积极进取,有勇气在自己的项目工程中动手尝试运用新技术。在这次软工alpha冲刺汇报的时候,听到别的组的汇报都比较精彩而觉得我们组可能技术和功能比较传统,当场就跟组长夸海口我做推荐系统算法,虽然我之前从来没有接触过这类功能, 然后除了阅读文献和技术博客参考学习最新的web级的人工智能算法也尝试用到了之前JavaEE课上的面向切面编程。

Q3 软件的行为和用户的期望值不一样,就一定是 Bug 吗?

我认同之前的看法,这就是Bug. 加上软件测试课程也告诉我们,测试的目的从用户角度正是通过软件暴露的问题来确定是否选择使用这个软件。我觉得如果软件行为与用户期望值不一样,相当于用户的黑盒测试失败了,这时就会给用户带了软件存在缺陷的负面印象。

Q4 个人在团队中应该只是一个流水线上的机器吗?

之前觉得软件开发人员应该正确冷静履行自己职责就好了。听了萝卜和白菜的故事加上个人和组长的交流上可能因工作环境不同,在小型项目过程中开发人员也应该多思考自己团队的规划,利益有问题及时跟leader沟通

Q5 在一个项目、一个程序比较复杂的情况下,如何高效率的进行程序理解?

我个人经验是首先要读懂并跑通程序说明中的例子,这样对程序的组成结构和功能有大致了解,其次找出程序的主程序,然后根据自己负责或者感兴趣的模块去定位包以及方法位置。然后是理解具体的代码:对于顺序结构一步一步往下看,对于循环结构则是关注其结束条件和上下文,遇到分支判断,则可以任取一个情况然后关注这个情况的逻辑进行理解,加上一般有了程序大致想要实现的功能,另一条分支的逻辑便不难理解。

这是先前基于算法研究的项目的经验,在这次实践中,我认为对于基于框架的软件开发的时候,由于约定大于配置原则,通常软件的分包名和存放路径都可以帮助我们理解框架运行的大致逻辑和代码的用途。

1.3 新的问题

在软件工程实践过程中我有以下五个新问题

  1. 如何获取最新的软件工程知识和技术信息?

  2. 有哪些途径可以参与软件工程社区和行业活动,以与其他开发者交流和分享经验?

  3. 如何制定自己的学习计划,以保持对软件工程领域的持续学习和更新?

  4. 除了在团队中扮演流水线上的机器外,如何发展自己的技术领导力和项目管理能力?

  5. 有哪些方法可以积累实践经验,以便在软件工程项目中能够更好地应对挑战和问题?

1.4 在各阶段收获最大的知识或能力

  1. 需求阶段:我与小组同学密切合作对项目进行了NABCD模型分析,通过社交媒体访谈了解客户或用户的需求。我学会了如何有效地沟通和收集需求,分析业务流程,并将其转化为清晰的需求文档。此阶段的主要收获是需求分析和沟通能力。

  2. 设计阶段:我与后端小组的根据需求文档创建系统的整体架构和类图设计并用绘制相关动态图和静态图其中我我将学习如何使用 JavaEE 技术栈中的各种组件和框架,设计可扩展、可维护的系统。此阶段的主要收获是系统设计和架构能力。

  3. 实现阶段: 我根据设计文档和规范编写 JavaEE Web 应用程序的代码。我学习了如何使用 JavaEE 的核心技术,如 Servlet、JSP、SpringBoot 等以及相关的开发工具和集成开发环境的使用,并在Beta测试的时候开发了基于人工智能的推荐算法,我学会了使用版本控制系统(如Git)来管理代码库,解决代码冲突和合并代码,此阶段的主要收获是JavaEE 开发技能和综合编码能力。

  4. 测试阶段:我主要是写完一个功能然后就编写测试用例测试一个功能,以验证系统的功能和性能。我学会使用一些工具辅助测试如 JUnit、Apifox 等,以及编写可靠的测试代码。此阶段主要学会了接口测试能力。

  5. 发布阶段:我和后端的另一位同学一起进行程序的部署和发布,确保它能够在生产环境中正常运行。我学会了如何利用宝塔等工具配置应用服务器、数据库和其他依赖项,并解决可能出现的部署和运行时问题。此阶段的主要收获是部署和运维能力。

1.5 心得理解

       通过参与个人项目、结对编程和团队项目的不同阶段,我获得了宝贵的经验和收获。在需求阶段,我学会了有效沟通和需求收集,以及将其转化为清晰的需求文档的能力。在设计阶段,我提升了系统设计和架构能力,学会了使用JavaEE技术栈中的组件和框架设计可扩展的系统,在个人项目和团队项目中我都采用了JavaEE, 我掌握了JavaEE开发技能和综合编码能力,同时了解了版本控制和人工智能算法的应用。测试阶段让我学会编写可靠的测试代码和进行接口测试,确保系统功能和性能的可靠性。最后,在发布阶段,我提升了部署和运维能力,能够成功配置应用服务器和解决部署中的问题。总的来说,我在不同项目中综合提升了沟通、分析、设计、开发、测试和运维等方面的技能,为未来的软件开发工作打下了坚实的基础。另外,通过个人项目、结对编程和团队项目的经历,我也深刻理解了团队合作的重要性。在与小组成员紧密合作的过程中,我学会了有效的团队沟通和协作,学会了倾听他人意见和合理处理分歧。我意识到一个高效团队的成功取决于成员之间的信任和互相支持,而团队的合作能够推动项目的顺利进行和取得优秀的结果。此外,通过参与不同阶段的项目开发,我也体会到了持续学习和自我提升的重要性。技术领域不断发展和演变,我意识到作为一个开发者,不断跟进新技术和工具是必不可少的。我积极主动地学习新知识,保持对新技术的敏感性,并将其应用到项目中,以提高开发效率和解决问题。

1.6 自我评分

课程目标自我评分分析
理解软件工程师的职业道德规范和实践要求,了解国情社情民情,树立积极向上的软件开发理念。85对软件工程师的道德规范和实践要求有了深入的理解,开发对公众有益的软件,并对自己代码的维护负责
掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,构建需求分析模型。80能够利用NABCD模型对需求进行分析。
掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,完成设计模型,形成设计方案。80参与了设计阶段,能够利用StarUml的工具绘制各种图例
能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,能够优选设计方案。75通过项目经验和另一门软件测试实训课,基本了解了软件系统相关的技术评测,在团队项目中也参与了相关工作,但仍然实践锻炼不足
遵循软件开发各阶段文档标准,掌握文档撰写方法,具备与业界同行交流能力。85在团队项目中,与前端成员在例会给出新的功能需求,能够迅速给出接口设计方案,在开发过程中也严格遵循阅定的接口文档,没有中途提出变更。
具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队工作。80在此次团队项目中,与前后端同学进行有效的交流和协作,对于前端和组长提出的要求最后都有实现。
能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,具备初步的管理复杂软件工程项目的能力。70能够利用git进行项目管理的基本操作和流程,这部分比较薄弱因为在这次实践课程中,我更多是作为技术人员

第二部分 技术博客

2.1 个人与学习情况对比

   在寒假作业中,我指定的任务是学习Java后端技术,其中包括JSP和SSM框架以及SpringBoot。

    通过这学期的软工实践以及JavaEE课程,我已经学会这些技术并都有了一两处的实践,在结队编程和团队开发中我担任的是后端人员, 在开发中主要解决了登录验证和服务器部署问题还有Python机器学习代码部署和开发。

2.2 个人技术博客链接

SpringBoot基于用户历史行为的决策树推荐算法

 概述:在SpringBoot后端开发中,向用户推荐的若干个菜单的时候,设计一个用户记录实体类和用户实体表,在不更改原有的代码基础上,用Java中的weka库搭建决策树并预测菜单是否会被用户喜欢。

...全文
660 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
助教张富源 助教 2023-06-15
  • 打赏
  • 举报
回复

软件工程是渐进发展的,需要不断的学习提升自己

SoftwareTeacher 2023-06-14
  • 打赏
  • 举报
回复

感谢你的详细的 ‘回答’ + ‘再次回答’。 希望你可以把你的回答加到 https://bbs.csdn.net/forums/SoftwareEngineering?typeId=828 原始的提问中,帮助后来者。


在软件工程实践过程中我有以下五个新问题

  1. 如何获取最新的软件工程知识和技术信息?

  2. 有哪些途径可以参与软件工程社区和行业活动,以与其他开发者交流和分享经验?

CSDN 是你的答案之一!

688

社区成员

发帖
与我相关
我的任务
社区描述
2023年福州大学软件工程实践课程W班的教学社区
软件工程团队开发软件构建 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • 张书旖
  • 郭渊伟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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