软件工程实践总结——人不跑,代码能跑

222000225郑鸿鑫 学生 2023-06-06 23:24:10
这个作业属于哪个课程2023年福大-软件工程实践-W班
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标1.回顾课程以及总结。2.个人技术总结
其他参考文献《构建之法》

目录

  • 一、过去的问题思考
  • 1.1 问题的博客链接
  • 1.2 问题再次解答
  • 1.3 新问题
  • 二、项目的各个阶段收获
  • 2.1 需求阶段
  • 2.2 设计
  • 2.3 实现
  • 2.4 测试
  • 2.5 发布阶段:
  • 三、个人项目/结对编程/团队项目的理解心得
  • 3.1 个人项目
  • 3.2 结对编程
  • 3.3 团队项目
  • 四、自评
  • 五、技术博客

一、过去的问题思考

1.1 问题的博客链接

软件工程实践寒假作业

1.2 问题再次解答

Q1.软件开发是年轻人的饭碗,吃的是青春饭?那年纪大的程序员经验丰富但是快速学习能力拼不过年轻程序员的时候该怎么办呢?

   原回答: 对软件开发年龄是一定瓶颈,但年龄并不是程序员的核心竞争优势,而是经验和技能才是重要因素。年纪大的程序员经验丰富,对项目的理解更深刻,因此在解决问题、设计和实现方面具有独特的优势。在参加工作之后三十岁之前就要考虑自己以后的职业规划,对技术感兴趣的程序员可以努力成为技术的大牛,对技术没有太大兴趣的程序员,喜欢跟人打交道的,可以往管理岗位上发展,但是无论如何要学会提高自己在项目中的话语权。对于年纪大的程序员经验丰富但是快速学习能力拼不过年轻程序员的应该尽快往管理岗位上发展,年纪大的程序员不应该因为年轻程序员的快速学习能力而觉得沮丧,而是应该积极学习并利用自己的经验和专业知识来发挥自己的优势。

   新回答: 在这个问题上,我的回答可能跟第一次回答的结果是差不多的,要补充的观点是:年级大 行业中度过了更多的时间,积累了更多的项目经验和面临过的挑战。这使得他们在解决问题、处理复杂系统以及提供高质量的解决方案方面具有独特的优势。

Q2.如何准确判断一门编程语言的发展阶段,从而在学习的过程中不会浪费时间到最后学了一门被淘汰的语言?

原回答:
 1.了解市场需求:市场需求是语言发展的重要因素,可以考虑语言在行业和公司的使用情况以及关于语言的招聘需求。
 2.公司支持:主流的语言通常由主要的技术公司支持和维护,这些公司的投资和支持是语言的重要指标。
 3.社区活跃度:一门语言的社区活跃度反映了语言的使用情况和开发者的兴趣,社区活跃度越高,语言的发展前景就越广阔。
 4.技术特性:语言的技术特性是语言发展的重要因素,通常来说,功能强大、易于使用的语言更有发展前景。

新回答:
我觉得以下两个方面也是要考虑的点:
1.长期稳定性:考虑一门编程语言的历史和稳定性。一些语言具有长期的发展历史和广泛的应用,表明它们可能更加稳定和可靠。相比之下,一些新兴的语言可能存在不确定性和风险。
2.跨平台能力:考虑一门语言的跨平台能力和适用范围。一些语言可以在不同的操作系统和设备上进行开发,这有助于扩大应用的范围和机会。

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

原回答:
  我认为这个问题没有绝对的正确答案。如果自己希望成为一名高效率、技术深入的工程师,那么可以选择专注于一两个领域,并努力提高自己的技能和专业知识。这可以帮助自己在这些领域中取得更好的成绩,并在与客户和同事合作时获得更高的尊重,以及话语权。如果自己希望在工作中具有更广泛的适应能力,或者是从事管理岗位,那么学习多种技术和领域可能是更好的选择。这样可以帮助您更好地理解不同领域之间的关系,以及如何在不同的项目中运用知识,在管理中更加得心应手。

新回答:
  经过软件工程实践现在我认为选择更"专"一点更好:专注于特定领域可以使我们在该领域内建立起专业知识和技能,成为该领域的专家。这可能带来更多的机会和更高的职业发展,因为深度专业知识往往受到认可和需求。并通过专注于特定领域,我们可以更好地理解和解决该领域中的复杂问题。这样的专业知识和经验可以提高我们的效率和解决问题的能力。

Q4.Git 怎么处理庞大的代码?

原回答:
 1.分支管理:Git 的分支管理功能可以帮助我们在不影响主分支的情况下开发和测试新功能。
 2.标签:使用标签可以记录重要版本的历史,并方便我们回到某个版本。
 3.分块:对大型代码库进行分块,可以帮助您在代码库中管理和维护不同部分。
 4.缓存:如果您的代码库很大,那么将其缓存到本地可以帮助我们提高 Git 的性能。
 5.合并策略:在合并分支时,选择合适的合并策略(如快进合并或三合一合并)可以帮助我们管理好代码冲突。

新回答:
还可以通过以下方法处理庞大代码
1.使用Git子模块。Git子模块可以将一个Git仓库作为另一个Git仓库的子目录,从而将多个Git仓库组合成一个大型的代码库。使用Git子模块可以更好地管理和维护多个Git仓库之间的依赖关系。
2.使用Git的压缩和打包功能。Git可以将代码库压缩成一个文件,或者打包成一个tar或zip文件。使用Git的压缩和打包功能可以将庞大的代码库压缩成一个较小的文件,从而方便传输和备份。

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

原回答:
 1.阅读文档:项目一般都会有详细的文档,先阅读文档可以对项目有个整体的了解。
 2.分析代码结构:通过阅读代码的结构及调用关系,了解项目的流程及各个部分的作用。
 3.跟踪代码执行流程:在调试模式下,逐步执行代码,理解代码的执行过程。
 4.向他人询问:如果遇到困难,不妨向他人请教,别人可能会有更好的理解方法。
 5.寻找代码注释:注释可以提供很多有用的信息,帮助理解代码。

新回答:
还可以用以下方法:
1.运用可视化工具:使用可视化工具来帮助理解程序结构和关系。例如,绘制流程图、类图或依赖关系图等,可以直观地展示程序的组成部分和它们之间的连接。
2.研究关键函数和算法:聚焦于关键函数和算法,深入研究它们的实现细节和逻辑。理解这些核心部分可以帮助你理解整个程序的工作原理和核心思想。
3.持续学习和实践:理解复杂程序是一个渐进的过程。持续学习和实践编程技能,积累经验和知识,能够提高对复杂程序的理解和处理能力。

1.3 新问题

二、项目的各个阶段收获

在通过Vue实现厨房做菜APP的项目中,每个阶段收获的主要知识或能力如下:

2.1 需求阶段
  • 理解客户需求:通过与客户或项目利益相关者的沟通和需求收集,学会提取关键需求和功能要求。

  • 需求分析和规划:学会将需求细化为可执行的任务和功能模块,并制定项目计划和优先级。
    设计阶段:

    2.2 设计
  • 架构设计:学习如何设计合适的应用架构,包括组件拆分、数据流管理和路由设计等。

  • 用户界面设计:学会创建用户友好的界面,包括布局、交互和视觉设计等。

  • 数据模型设计:学习如何设计和管理应用所需的数据模型和数据库结构。

2.3 实现
  • Vue框架使用:学会使用Vue框架及其核心概念,如组件、指令、状态管理和路由等。
    前端开发技能:提升前端开发技能,包括HTML、CSS、JavaScript以及Vue的相关工具和库的使用。

  • 代码组织和模块化:学会组织和管理项目代码,使用模块化的方法来提高可维护性和可扩展性。

    2.4 测试
  • 单元测试和集成测试:学会编写单元测试和集成测试,以确保代码的功能和质量。

  • 调试和故障排除:提升调试技能,学会识别和修复潜在的问题和错误。
    发布阶段:

    2.5 发布阶段:
  • 部署和配置:学习如何将应用程序部署到服务器或云平台,并进行必要的配置。

  • 版本控制和持续集成:了解版本控制工具(如Git)和持续集成工具(如CI/CD管道),以便更好地管理代码和自动化部署流程。

  • 用户反馈和改进:通过发布应用程序,获得用户反馈并学会收集、分析和应用反馈来改进产品。

总的来说每个阶段都有其重要性,但关键是在项目中积极学习和实践,在每个阶段都不断提升自己的知识和技能。这样,我们才能将能够全面理解和掌握Vue开发以及软件工程实践中的各个方面。

三、个人项目/结对编程/团队项目的理解心得

通过Vue实现厨房做菜APP是一个很有挑战性和有趣的项目。以下是我对个人项目、结对编程和团队项目的经历以及在这些方面的理解和心得:

3.1 个人项目
  • 自我驱动和时间管理:在个人项目中,我学会了自我驱动和有效管理时间的重要性。对于个人项目,没有团队成员的监督和指导,需要自己设定目标、制定计划,并且持续推动项目的进展。
  • 全栈思维和综合能力:个人项目通常要求综合运用多种技术和技能。在通过Vue实现厨房做菜APP的过程中,我需要考虑前端界面设计、后端数据管理和交互、数据库设计等方面,培养了我全栈思维和综合能力。
3.2 结对编程
  • 协作与沟通:结对编程强调合作和沟通,我学会了与队友密切协作,分享知识和经验,相互支持和解决问题。通过结对编程,我发现有时候两个头脑的思考和想法相互补充,能够带来更好的结果。
  • 代码质量和审查:结对编程可以促进对代码质量的关注,因为两个人一起审查代码,能够更容易地发现潜在的问题和改进的机会。这有助于提高代码的可读性、可维护性和可扩展性。
3.3 团队项目
  • 角色和责任:在团队项目中,不同的成员可能承担不同的角色和责任。我学会了理解和尊重团队成员的专业领域和能力,合理分配任务和协调工作,以实现项目的顺利推进。
  • 协调和冲突解决:在团队项目中,难免会出现意见不合或冲突的情况。学会有效的沟通、协调和解决冲突对于项目的成功至关重要。我通过团队项目锻炼了这方面的能力,学会平衡不同意见并找到共同的解决方案。

总的来说,通过个人项目、结对编程和团队项目,我体会到了不同的合作方式和工作环境。这些经历让我更加注重团队合作、沟通能力、代码质量和全栈思维。同时,我也意识到持续学习和与他人合作是提升自己的关键因素,这对于在通过Vue实现

四、自评

目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。
评分:85分
解释:我在软件工程课程中学习了软件工程师的职业道德规范和实践要求,并了解了软件产品对社会、健康文化等方面的影响。已经树立了积极向上的软件开发理念。

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

评分:90分
解释:我在软件工程课程中学习并掌握了需求分析的全过程,包括辨别客户表述的多样化要求、使用需求表达工具、规范准确地表达客户需求,并能构建需求分析模型,还有一些进一步提高的空间。

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

评分:80分
解释:我学习并掌握了软件开发的全过程,包括遵循体系结构设计方法和基本设计原则、完成从体系结构设计模型到构件级设计模型的设计过程,并形成了面向高效可靠的服务组件设计方案或软件系统设计方案。

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

评分:85分
解释:我能够执行从组件到软件系统的技术评测,并具备设计模型的评判能力。能够优选设计方案。我在这方面有相当的掌握程度,但还有一些进一步提高的空间。

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

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

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

评分:85分
解释:我具有较为良好的团队意识和合作技能,能够与团队成员进行友好的沟通和协作。自我具备组织、协调或指挥团队开展工作的能力。

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

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

五、技术博客

个人技术总结——基于Vue的Axios总结和ElementUI的使用心得

概述:使用ElementUI的组件进行厨房APP的页面构建,以及Vue的Axios的总结

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

关于年龄对程序员的影响,我觉得在AI的浪潮冲击下,经验和项目管理能力会越发重要,单纯的编写代码能力会被弱化,你认为呢?

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

你写了非常详细的 ‘新回答’,很赞,说明你在实践中思考了,升华了以前的思绪。 希望你能把你的新回答贴到 ‘构建之法’ 的问题下面。 https://bbs.csdn.net/forums/SoftwareEngineering?typeId=828 这样可以帮助后人。

688

社区成员

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

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