软件工程实践总结——朝乾夕惕,踵事增华

222200411张晨阳 2024-12-14 21:57:59
这个作业属于哪个课程https://bbs.csdn.net/forums/2401_CS_SE_FZU
这个作业要求在哪里https://bbs.csdn.net/topics/619470310
这个作业的目标软件工程实践总结
其他参考文献

目录

  • 第一部分:课程回顾与总结
  • 1. 回顾自己思考过的问题
  • 1.1 重新回答暑假作业中的问题
  • 1.2 是否原来的问题还不明白?
  • 1.3 是否产生了新的问题?
  • 2. 实践经验与成长
  • 2.1 需求分析
  • 2.2 系统设计
  • 2.3 开发实现
  • 2.4 测试阶段
  • 2.5 发布阶段
  • 3. 自我评分与课程目标达成情况
  • 3.1 职业道德与社会责任(95%)
  • 3.2 需求分析(97%)
  • 3.3 软件开发全过程(98%)
  • 3.4 技术评测与创新设计(93%)
  • 3.5 文档撰写(98%)
  • 3.6 团队协作(98%)
  • 3.7 项目管理(96%)
  • 第二部分:个人技术总结

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

1. 回顾自己思考过的问题

原问题来源:暑假作业博客

1.1 重新回答暑假作业中的问题

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

要跟上软件工程的发展,成为一个永不落伍的开发者,需要培养持续学习的习惯,不断更新自己的技术栈,同时深化对系统思维和问题解决能力的理解。关键在于平衡技术深度和广度,专精于一个或几个技术领域,同时保持对新技术的敏感性和适应性。此外,强化团队协作和沟通能力,理解业务需求与技术实现的结合,以及关注行业趋势也是必不可少的。最终,拥有终身学习的态度,将使开发者能够在不断变化的技术环境中保持竞争力,实现个人职业发展的持续进步。

  • AI辅助编程,是一个银弹么?

AI辅助编程并不是传统意义上的“银弹”,因为它并不适用于所有情况,也不能保证在所有软件开发工作中都能带来10倍以上的效率提升。然而,AI辅助编程工具在某些方面确实能够显著提高开发效率和代码质量,尤其是在辅助开发者进行代码补全、调试、审查和优化等方面。AI技术已经从简单的辅助开发人员发展到涵盖软件开发的整个生命周期,包括需求分析、设计、编码、测试和运维管理,每个阶段都得到了显著提升。

而且如果让大模型完全参与进入开发的过程,这样的ai辅助编程对于外行和新手程序员来说就是一个接近银弹的存在。让拆解问题进行系统分析模块设计,向ai提问需要哪些技术和技术选型,向ai提问具体功能的代码实现,让ai分析代码报错原因并进行修改,这样全流程的参与能大大降低开发难度,显著提升新手的开发效率。因此,AI辅助编程是一个有力的助手,而不是一个能够在所有方面完全替代传统编程方法的“银弹”。

  • 有了GPT类的应用,传统的搜索引擎是否会被完全替代?

我认为会的,GPT类的应用在实现传统的搜索引擎的所有功能的基础上,额外多了很多传统搜索引擎不具备的优势功能,这些优势功能使传统的搜索引擎被完全替代将成为大势所趋,并且已经在我日常的工作流中实现了完全替代。加入了联网搜索功能的ai应用如我日常使用的kimi,它能针对问题自行通过搜索引擎进行搜索阅读整理,最后给出总结的回答与原网页链接。这样的合作之下形成的“引擎”确实是能完全替代传统的搜索引擎的,进一步简化了搜索难度,可以用更加随便的表述进行搜索,可以给出总结性的概述,这些是优于传统引擎能实现上位替代的。

  • 如何区分一个好的程序员和不好的程序员呢?

区分一个好的程序员和不好的程序员,需要从技术能力、工作态度、沟通能力、问题解决能力、持续学习意愿和适应能力等多个维度进行考量。好的程序员在技术深度与广度上表现出色,他们不仅掌握编程语言的语法,还理解其背后的设计原理,能够根据不同的问题选择合适的技术和工具,并且注重代码质量,编写的代码具有良好的结构和清晰的注释。他们面对问题时能够冷静分析,运用系统化的问题解决策略,并且对新技术充满好奇心,愿意不断学习,快速适应技术变化。此外,好的程序员在团队中能够有效沟通和协作,提供和接受建设性的反馈,促进团队合作和项目进展。他们对工作充满热情,愿意承担责任,并且具有预见性和规划能力,在编码前进行充分的规划和设计。

相反,不好的程序员在这些方面表现出欠缺,他们可能在技术与设计上不够深入,编写的代码效率低下、难以维护,对新技术的学习和应用不够积极,面对问题时缺乏有效的解决策略,团队合作能力差,对项目的贡献有限。因此,好的程序员不仅仅是技术能力强,更重要的是他们的态度、习惯和思维方式,这些因素共同决定了他们在工作中的表现和对项目的贡献。

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

对于工程师而言,选择更“专”还是更“广”的问题,实际上是关于如何在职业发展中平衡深度和广度的问题。理想的状态是成为“T型人才”,即在一个专业领域有深厚的专业知识和技能(T的垂直部分),同时在其他相关领域也有一定的知识和理解(T的水平部分)。这种结构不仅能够确保工程师在其专业领域内具有竞争力和不可替代性,还能够提供足够的灵活性,以适应技术变革和市场需求的波动。

1.2 是否原来的问题还不明白?

1.3 是否产生了新的问题?

2. 实践经验与成长

在本学期的软工实践中我在需求分析、系统设计、开发实现、测试和发布五个阶段都收获了宝贵的经验和教训

2.1 需求分析

在这个阶段,我学会了如何与用户或团队成员沟通,准确把握项目的需求,并将这些需求转化为具体的功能点。我学会了使用用例图、用户故事和需求规格说明书等工具来帮助理解和记录需求。

2.2 系统设计

在这个阶段,同期学习的面向对象设计与分析课程的OOA与OOD给了我思想上的指导,而本门实践也给了我运用这些思想与方法的广阔天地。我深入学习与应用了如何设计软件的架构,包括选择合适的设计模式、数据结构和算法。我也学会了如何进行系统分解,将复杂的系统分解成可管理的模块和组件。

2.3 开发实现

在开发实现阶段,我深刻体会到了将设计蓝图转化为实际代码的过程。除了实践编码规范、版本控制和持续集成/持续部署(CI/CD)等核心开发实践外,我还探索了AI辅助编程的潜力,并深入运用Git进行版本控制。

AI辅助编程:我尝试使用了一些AI辅助编程工具,这类工具在编写重复性代码或解决复杂算法问题时特别有用。AI辅助编程不仅提高了我的编码速度,还帮助我学习了新的编程模式和最佳实践。我学会了如何与这些工具协作,利用它们的建议来优化代码结构和逻辑,同时也保持了对生成代码的审查和控制,确保代码质量和项目安全。

使用Git进行版本控制:Git成为了我日常工作中不可或缺的一部分。我学会了如何初始化仓库、提交更改、创建分支、合并分支以及如何使用远程仓库。通过Git,我能够跟踪项目的历史更改,轻松回滚到之前的版本,以及在团队中高效地协作。我掌握了Git的工作流程,包括分支策略(如Git Flow)和代码审查流程,这些都是确保代码质量和团队协作成功的关键因素。

2.4 测试阶段

软件测试和质量保证。在这个阶段,我学习了不同类型的测试(单元测试、集成测试、系统测试等),以及如何编写测试用例和自动化测试脚本。通过JMeter,我学会了如何设计压力测试场景,包括创建线程组来模拟用户负载,配置HTTP请求来模拟用户操作,以及设置断言来验证响应的正确性。我了解到,压力测试不仅仅是测试系统的极限性能,更是为了发现性能瓶颈和潜在的系统问题。我也学会了如何使用测试框架和工具来确保软件质量。

2.5 发布阶段

在发布阶段,我不仅学会了部署和项目管理的关键技能,还掌握了使用Docker和Nginx在CentOS系统上进行软件部署的实用技术,以及如何利用群晖云服务部署个人网站。

Docker和Nginx配置:我通过Docker容器化技术,将应用程序及其依赖打包在一个轻量级、可移植的容器中,这大大简化了部署流程。在CentOS服务器上,我学会了如何安装和配置Nginx作为反向代理服务器,以及如何设置Docker容器与Nginx之间的连接。这个过程让我深刻理解了微服务架构的优势,以及如何在生产环境中实现高效的负载均衡和流量分配。

群晖云部署:我还探索了如何利用群晖云服务来部署个人网站。通过群晖的Docker套件,我能够轻松地在个人NAS设备上部署和管理Docker容器。我学会了如何配置域名、设置SSL证书,以及如何优化网站的性能和安全性。这个过程不仅提升了我的云服务管理能力,也让我对云计算有了更深入的认识。

通过这些实践,我学会了如何在不同环境下进行软件部署,以及如何确保软件在发布后能够稳定运行。我掌握了从制定发布计划到实施部署的全过程管理,包括监控部署状态、处理可能出现的问题,以及在必要时执行回滚策略。这些经验不仅让我在项目管理和协调方面更加得心应手,也为我未来的工作提供了宝贵的实战经验。

3. 自我评分与课程目标达成情况

3.1 职业道德与社会责任(95%)

我对软件工程师的职业道德规范和实践要求有了深入的理解,能够识别软件开发对社会的多方面影响,并始终秉持负责任的态度进行开发工作。但在国情社情民情的深入理解方面,我认为还有提升空间,需要更多社会实践和学习。

3.2 需求分析(97%)

我掌握了需求分析的基本流程和工具,能够较为准确地表达客户的需求。但在处理复杂或模糊的需求时,我意识到自己还需要更多的实践经验来提高分析和建模的能力。

3.3 软件开发全过程(98%)

我对软件开发全过程有清晰的认识,能够遵循设计原则完成设计模型。但在技术评审和高级设计方法的应用上,我感觉自己还需要更多的学习和实践来提升技能。

3.4 技术评测与创新设计(93%)

我能够执行基本的技术评测,并具备一定的设计方案选择能力。然而,在创新设计意识和复杂模型的评判能力上,我认为自己还有很大的提升空间。

3.5 文档撰写(98%)

我遵循软件开发文档标准,能够规范撰写各类文档,并具备与同行交流的能力。但我认为在文档的精细化和专业化表达上,仍需不断学习和实践。

3.6 团队协作(98%)

我在团队项目中展现出良好的团队意识和合作技能,能够有效沟通和协作。但在组织和指挥团队方面,我认为自己还需积累更多的领导经验和管理技巧。

3.7 项目管理(96%)

我对软件项目管理的构成要素有一定的了解,能够进行基本的规模估算和进度规划。但在管理复杂项目和使用高级项目管理工具方面,我认为自己还需要进一步的学习和实践。

第二部分:个人技术总结

  • 在第一次作业“准备篇”中我为自己制定的是关于后端的学习路线,但是由于团队需要而且也为了补全自己在前端技术栈中小程序开发的空白,我在团队开发中担任了微信小程序端与web端的前端开发角色,在开发中解决的技术问题与获得的技术进展详见下面这篇个人技术总结博客。

  • 个人技术总结——ECharts在vue项目下的使用总结

  • 概述:ECharts是一个用于数据可视化的JavaScript库,适用于构建各种交互式图表。在需要将复杂数据以图形方式呈现时使用,如报表和仪表板。学习ECharts有助于提升数据展示效果,直观的展现数据的内容与趋势。同时因为团队在web管理端需要对后台数据进行可视化分析与展示,故选择学习该技术。技术难点在于掌握其丰富的配置项和性能优化。

...全文
24 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
一帮渴求知识的热血青年,因为数学建模走到了一起。 这帮天真而富于理性的青年,他们深受湖湘文化的熏陶,他们敢想敢干,在湖南大学教务处的大力支持和数学院悉心关心下,湖南大学数学建模协会开通了湖南大学数学建模网和数模爱好者论坛,网站立足湖南、面向全国,力争经若干代数模人的努力,建设成湖南大学乃至全国师生数模、数学和数独交流学习的主阵地。 数学建模不仅仅是一门科学,一门艺术,一种方法;从某种意义上讲,它更是一种思想,凝聚到一个点上,就是一种数学建模精神--团结拼搏,务实创新,敢为人先.这种精神既和人类探索自然界奥秘的精神一脉相承,又是千年学府湖南大学校训的具体阐释。我们参加数学建模竞赛,不仅仅是为了获得一个理想的结果,我们到觉得,更重要的是参与的过程美;我们学习数学建模,获得的不仅仅数学建模知识,更重要的学习怎样的为人处世,引伸到我们大学生身上,就是将数学建模给我们的启示内化为我们的人格和品性。我觉得,没有参加过数学建模的大学,如同没有经历过恋爱的人生,它是不完整的;我们参加数学建模社团活动,不仅仅是为了满足自己的爱好,我想更多的是通过协会这个平台,扩展我们的人脉,结交到更多的志同道合的朋友,展示我们年轻人特有的激情和风貌。 所以我们大胆的想了,也大胆的做了,也许有那么一点年少轻狂.虽然没有充足的经费,没有专业水准的编辑人才。但是我们拥有自己的创刊宗旨,那就是推广数学建模知识,提高师生数学素养;传承数学建模精神,打造湖大社团品牌。为此,我们孜孜不倦的努力着,我们的想法得到了罗汉教授的支持,他亲自为本刊作序.并对刊物内容提出了很多前瞻性的建议.首期主编李宇同学为本刊的编辑朝乾夕惕,消耗了大量的宝贵学习时间,很多时候都熬到深夜,李济舟同学创造性的思维和娴熟的技术为首刊增色不少,还有一大批辛勤的采访记者、编辑,还有跑外联的同学,衷心感谢大家的努力才使得本刊得以付梓刊印。 最后以《数模爱好者》为载体,希望千年学府的数学建模精神能够延续,千年学府的优秀学子的数模故事得以续写,千年学府的社团文化得以发扬光大,千年学府的数学建模事业得以发展。 《数模爱好者》属于每一位数模爱好者!

109

社区成员

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

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