软件工程实践总结——学海无涯

222000423吴昭烨 2023-06-07 23:41:15

软件工程实践总结——学海无涯

这个作业属于哪个课程软件工程-23年春季学期
这个作业要求在哪里软件工程实践总结&个人技术总结
这个作业的目标课程回顾与总结、个人技术总结
其他参考文献构建之法

目录

  • 第一部分-课程回顾与总结
  • 1.1 重新思考
  • 1.2 五个阶段中的收获的知识与能力
  • 需求分析阶段
  • 设计阶段
  • 实现阶段
  • 测试阶段
  • 发布阶段
  • 1.3 三类项目中的收获与心得
  • 个人项目
  • 结对项目
  • 团队项目
  • 1.4 七大课程目标的掌握程度
  • 1.5 总结
  • 第二部分-个人技术总结
  • 2.1 技术学习进展与开发角色
  • 2.2 技术总结

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

1.1 重新思考

软件工程实践寒假作业

"re-work"是一个衡量代码质量的指标之一,但它并不能全面评估代码的质量。"re-work"指的是在开发过程中需要对已经完成的工作进行修改、修复或重新编写的次数。较高的"re-work"意味着代码存在问题或缺陷,需要额外的工作来解决。

"re-work"可以提供一些关于代码质量的线索,但不能单独用来全面评估代码的质量。这是因为代码质量涉及多个方面,包括可读性、可维护性、性能、安全性等。这些方面无法仅通过"re-work"来确定。

要"证明"一个软件可以继续发展,需要考虑以下几个方面:

  1. 需求和市场:软件的发展需要有持续的需求和市场。这可以通过市场调研、用户反馈、竞争分析等方式来评估。如果软件的目标用户群体稳定或扩大,并且市场需求仍然存在,那么软件有望继续发展。

  2. 技术栈和架构:软件的技术栈和架构需要具备灵活性和可扩展性,以便应对未来的需求和变化。如果软件的技术基础能够适应新的技术趋势,并且具备可扩展性和易维护性,那么软件可以更好地适应未来的发展。

  3. 团队和开发流程:软件的发展需要一个稳定的开发团队和高效的开发流程。团队成员的技术能力和经验对于软件的持续发展非常重要。同时,采用合适的开发方法论和工具,如敏捷开发、持续集成和自动化测试等,可以提高软件的开发效率和质量。

  4. 用户反馈和改进:软件应该不断收集用户反馈,并根据反馈进行改进和优化。这可以通过用户调研、用户体验测试、用户支持和社区互动等方式来实现。软件的持续发展需要与用户保持良好的沟通,并根据用户需求进行不断的迭代和改进。

  5. 更新和维护:软件的发展需要定期进行更新和维护,包括修复漏洞、改进性能、添加新功能等。软件的更新和维护表明开发团队对软件的关注和承诺,也有助于增加用户对软件的信任和忠诚度。

综上所述,要"证明"一个软件可以继续发展,需要考虑需求和市场、技术栈和架构、团队和开发流程、用户反馈和改进,以及更新和维护等方面的因素。

重复性工作在软件工程师个人能力的衡量中更重要的原因有以下几点:

  1. 质量保证:重复性工作通常是对已有的代码进行修改、修复或重构,以确保软件的质量和稳定性。这包括代码重构、错误修复、性能优化等任务。一个优秀的软件工程师应该能够高效地完成这些任务,保证软件的可靠性和可维护性。

  2. 生产效率:重复性工作是软件开发过程中不可避免的一部分,因为软件需求和技术要求经常会发生变化。一个优秀的软件工程师应该能够快速、准确地理解和应对这些变化,完成相应的重复性工作。这样可以提高团队的生产效率,缩短开发周期。

  3. 经验积累:通过反复进行重复性工作,软件工程师可以积累丰富的经验和知识。他们可以更好地理解代码的结构和逻辑,掌握常见问题的解决方法,并形成自己的最佳实践。这种经验积累有助于提升个人能力,使软件工程师能够更好地应对未来的挑战。

  4. 代码质量和可维护性:重复性工作是对现有代码进行修改和优化的机会。通过重复性工作,软件工程师可以改善代码的质量、可读性和可维护性。这对于软件的长期发展和维护非常重要,因为优秀的代码质量和可维护性可以减少未来工作的重复性,并降低维护成本。

综上所述,重复性工作在软件工程师个人能力的衡量中更重要,因为它涉及到质量保证、生产效率、经验积累和代码质量等方面。软件工程师能够高效地完成重复性工作,体现了他们的技术能力和专业素养。

  1. 持续学习:保持学习新的编程语言、框架和技术。阅读相关的书籍、博客、文章,观看在线教程和视频,参加培训课程或研讨会。

  2. 参与开发社区:积极参与开发者社区,例如技术论坛、GitHub、Stack Overflow等。与其他开发者交流经验、分享知识,从他们那里学习新的技术和最佳实践。

  3. 实践项目:通过实际的项目经验来巩固学到的知识。尝试解决实际问题,参与开源项目或个人项目,这样可以提高技术水平并获得宝贵的经验。

  4. 关注技术趋势:时刻关注软件工程领域的最新趋势和发展。了解新的工具、技术和方法,例如人工智能、大数据、云计算等,以保持对行业的敏感度。

  5. 持续改进:不断改进自己的编码能力和代码质量。学习使用最佳实践和设计模式,注重代码的可读性、可维护性和可扩展性。

  6. 多样化技能:除了专注于特定领域之外,尝试学习和掌握多个领域的技能。这将增加你的灵活性和适应性,使你能够应对不同类型的项目和挑战。

  7. 持续专业发展:参加行业相关的培训、会议和研讨会。获取专业认证,例如微软的MCSD(Microsoft Certified Solutions Developer)或Google的ACE(Associate Cloud Engineer),以提升自己的专业资质。

总而言之,保持学习、实践和适应是成为一名永不落伍的开发者的关键。持续投资于自己的职业发展,并保持对行业变化的敏感性,这将使您能够跟上软件工程的发展潮流。

选择更专一点还是更广一点取决于你的职业目标、兴趣和个人偏好。有些人可能希望在一个特定领域内深耕并成为专家,而另一些人可能更喜欢广泛学习和应用各种技术。无论你选择哪种方式,持续学习和不断适应变化都是至关重要的,因为软件工程领域的发展是不断的。

1.2 五个阶段中的收获的知识与能力

需求分析阶段

需求分析阶段给我带来了以下几点重要的学习:

  1. 深入理解用户需求:在需求分析阶段,我学到了如何与客户或用户密切合作,了解他们的真正需求和期望。通过与他们的沟通和交流,我能够更好地把握项目的目标,并确保软件系统能够满足他们的实际需求。

  2. 分析和建模技巧:在需求分析过程中,我学到了各种需求分析方法和建模技巧,如用例图、活动图、时序图等。这些技术帮助我更好地理解系统中各个组件之间的交互和行为,以及用户与系统的互动过程。通过合理的建模,我能够更准确地捕捉需求,并将其转化为可执行的软件系统设计。

  3. 识别和管理需求变更:需求分析阶段教会了我如何有效地管理需求变更。我学到了识别需求变更的标志和原因,并与团队成员和利益相关者共同决定如何应对变更。这教会了我灵活应对变化,并及时调整项目计划和开发过程,以确保软件系统仍然符合用户的期望。

  4. 风险评估和规避:需求分析阶段还让我学会了识别和评估潜在的风险。通过仔细分析需求,我能够识别出可能存在的问题和挑战,并提前采取措施进行规避或降低风险。这有助于提高软件项目的成功率,并减少后期开发和维护阶段的问题。

  5. 沟通和协作能力:需求分析阶段强调了与团队成员和利益相关者之间的沟通和协作。我学到了如何有效地表达我的想法、理解他人的需求,并与各方进行有效的讨论和协商。这种沟通和协作能力对于确保项目的成功和满足用户期望至关重要。

总的来说,需求分析阶段教会了我深入理解用户需求、分析和建模技巧、需求变更管理、风险评估和规避,以及沟通和协作能力。这些技能和知识在我作为软件工程师的职业生涯中都非常有用,并对我在其他软件项目中的表现产生了积极的影响。

设计阶段

在设计阶段,我主要完成了er图的设计,实际完成后才能更准确的设计出合理的数据库,而不是在编码过程中边做边写。

实现阶段

这一部分我学习了很多新的知识包括了springboot技术 与 springcloud,同时我还学习了stable diffusion技术
稳定扩散是一种在图像生成和编辑中广泛应用的算法,它能够产生高质量的艺术作品。

在学习稳定扩散时,我首先了解了该技术的基本原理。稳定扩散算法基于偏微分方程,通过对输入图像进行迭代和演化来生成新的图像。该算法使用了扩散过程中的平滑和模糊效果,以及边缘保持和细节增强的技术,以产生艺术性的效果。

我深入研究了稳定扩散算法的数学模型和计算方法。我学习了离散化方法和数值解算技术,以便在计算机上实现稳定扩散算法。这涉及到对图像进行网格化和离散化,以及使用迭代方法进行图像演化的计算。

在学习过程中,我还探索了稳定扩散在AI绘画中的应用。稳定扩散算法可以用于图像风格迁移、图像重建和图像增强等任务。它可以生成具有艺术风格的图像,同时保留原始图像的主要结构和细节。

我通过阅读相关的研究论文、参与在线课程和实践编程来加深对稳定扩散的理解。我还通过编写代码和实验来实际应用稳定扩散算法,探索其在图像生成和编辑中的效果。

本次所有的作品素材都有stable diffusion的参与。

测试阶段

测试阶段学会了Unity Test Runner这是Unity内置的测试工具,可用于编写和运行自动化测试脚本。还学习了TestComplete,这是一个流行的自动化测试工具,可用于Unity游戏的UI和功能测试。它支持录制和回放测试脚本、验证游戏UI元素的可见性和正确性。这些测试工具都非常便捷,不过可惜由于时间紧张,并没有编写比较完美的测试集。

发布阶段

在游戏发布阶段,作为游戏开发者的我,有一些深刻的感想。

首先,发布游戏是一种令人兴奋和紧张的体验。经过漫长的开发过程,看到自己的游戏即将与玩家见面,充满了期待和激动。同时,也会感到一丝紧张,因为我们希望游戏能够达到玩家的期望,并受到欢迎。

在发布前的最后阶段,我们进行了详尽的测试,包括自动化测试和手动测试,以确保游戏的质量和稳定性。这个阶段需要耐心和专注,因为我们努力解决潜在的问题和错误,并确保游戏在各种不同的设备和平台上都能够正常运行。

当游戏最终发布时,我们感到一种巨大的满足感和成就感。我们的努力得到了回报,看到玩家享受我们创造的世界和游戏体验,是一种难以言表的喜悦。与此同时,我们也非常重视玩家的反馈和意见,这对于游戏的后续改进和优化非常重要。

然而,发布并不意味着工作的结束。相反,它标志着一个新的开始。我们要密切关注玩家的反馈,收集bug报告和建议,并不断努力提升游戏的品质和用户体验。与社区保持良好的沟通和互动,持续更新和改进游戏,是我们的责任和使命。

1.3 三类项目中的收获与心得

个人项目

首先,学习和掌握Git技术是一项非常有价值的技能。Git是一种分布式版本控制系统,可以帮助我有效地管理和跟踪代码的变化。通过学习Git,我学会了如何创建代码仓库、提交代码、分支管理以及合并代码等基本操作。这些技能对于团队协作和代码管理至关重要。

其次,使用Git进行版本控制可以提供更好的代码管理和追踪能力。在完成作业的过程中,我发现Git的提交历史和分支管理功能非常有用。我可以随时回溯到先前的版本,查看修改的历史记录,并且可以创建新的分支来独立开发新功能或修复bug。这种灵活性和可追溯性使我更加自信和安心地进行编码工作。

此外,Git也教会了我如何与他人进行协作和团队合作。通过Git,我可以与其他人共享代码库,协同开发项目。我学会了如何协调不同人的工作,处理代码合并冲突,并与团队成员进行有效的代码审查。这种团队合作和协作的经验对于未来的工作和项目中都是宝贵的。

最后,通过学习Git,我也更加重视代码质量和规范。Git技术不仅仅是一个版本控制工具,它也提醒我保持代码的整洁和可读性。我学会了提交有意义的提交信息,创建有意义的分支名称,以及使用合适的Git工作流程。这些实践有助于提高代码质量,并与其他开发者保持良好的沟通和理解。

结对项目

在一个结对作业中,我有幸与另一位同学合作,我们学会了使用Axure原型工具和Spring Boot技术,并在这个过程中提升了团队协作能力。以下是我在这个经历中的个人感受:

首先,学会使用Axure原型工具是一个很有意义的经历。Axure为我们提供了创建交互式原型的能力,我们可以使用其丰富的组件库和交互功能来设计和展示我们的想法。通过使用Axure,我们能够更好地沟通和传达我们对项目的理解和设计方案。我们可以快速创建页面原型、添加交互动作,并与团队成员进行有效的反馈和讨论。这样的工具不仅提高了我们的工作效率,也让我们更加专注于用户体验和界面设计。

其次,学会了Spring Boot技术让我们在项目开发中更加得心应手。Spring Boot是一个流行的Java开发框架,它简化了应用程序的配置和部署。通过学习Spring Boot,我们可以更快地搭建项目框架,实现各种业务逻辑,并且可以利用Spring生态系统中的众多库和工具来提高开发效率。我们学会了使用Spring Boot创建RESTful API、集成数据库、处理数据验证和安全性等问题。这使我们能够以更高的质量和效率开发我们的应用程序。

同时,这个结对作业也锻炼了我们的团队协作能力。在合作过程中,我们需要相互协调、沟通和解决问题。我们学会了分工合作,每个人负责自己的任务,并及时交流和共享进展。我们共同制定了项目计划和时间表,并通过代码评审和持续集成来保证代码质量。这种团队协作的经验对我们未来的职业发展和合作项目都非常宝贵。

总的来说,学会了Axure原型工具和Spring Boot技术,并通过结对作业的团队合作,我获得了宝贵的经验和技能。我更加熟悉了原型设计和前端开发的流程,也增强了在团队中协作和沟通的能力。这个经历让我更加自信和有准备地面对未来的项目和合作挑战。

团队项目

在团队项目中,我有幸担任UI组组长,使用Axure原型工具设计原型并协调完成UI和美术素材的工作。同时,我也使用Spring Boot技术编写了一部分后端程序,这个经历不仅增加了我的团队协作能力,也带来了一些个人感悟。

首先,作为UI组组长,使用Axure原型工具设计原型是一项具有挑战性的任务。我需要理解和分析项目需求,与团队成员紧密合作,确保原型能够准确传达用户体验和界面设计的要求。通过使用Axure,我能够创建具有交互功能和详细设计的原型,并与团队成员进行有效的讨论和反馈。这个过程中,我学会了有效地沟通和协调,确保整个UI工作能够按时完成并符合预期。

其次,我负责协调完成UI和所有美术素材。这要求我与美术团队密切合作,确保他们按照UI设计的要求提供所需的图形和素材。我与美术团队进行了频繁的沟通和协商,解决了设计和制作过程中的问题和难题。这锻炼了我的团队协作能力,我学会了有效地与他人合作,处理不同意见和需求,并最终协调完成高质量的UI和美术素材。

同时,我还使用了Spring Boot技术编写了一部分后端程序。这个过程让我更加熟悉后端开发的流程和技术。我学会了使用Spring Boot框架构建应用程序、设计和实现RESTful API,并与前端团队进行接口对接。这不仅拓宽了我的技术能力,也加强了我与其他团队成员的沟通和协作。我在团队中扮演了一个连接前后端的角色,促进了团队的整体协作和项目的顺利推进。

总结起来,作为UI组组长,并且负责协调完成UI和美术素材,以及编写部分后端程序,这个经历让我在团队协作和技术能力上得到了很大的提升。我学会了与团队成员有效地沟通和合作,处理复杂的项目需求和问题。同时,我也加深了对Axure原型工具和Spring Boot技术的理解和应用。这个经历对我的个人发展和未来的职业道路都具有重要的意义。

1.4 七大课程目标的掌握程度

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

我对软件工程师的职业道德规范和实践要求有很好的理解。我也具备了一定的国情社情民情的了解,意识到软件产品对社会、健康和文化等方面的影响。此外,我积极树立积极向上的软件开发理念,注重提供有益于社会和用户的软件解决方案。

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

我对需求分析的全过程有了较好的掌握。我能够识别和理解客户表述的多样化要求,并灵活运用各种需求表达工具。通过我的努力,我能够规范而准确地表达客户的需求,并构建出有效的需求分析模型。我深入学习了需求工程的理论和方法,注重与客户的沟通和理解,以确保最终软件产品能够满足用户的期望和需求。

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

我在软件开发的全过程中有了较为全面的掌握。我深入学习了体系结构设计方法和基本设计原则,并能够遵循它们进行设计工作。通过进行正式的技术评审,我能够完成从体系结构设计模型、数据设计模型到构件级设计模型的工作,确保设计方案的高效性和可靠性。我注重形成面向高效可靠的服务组件设计方案或软件系统设计方案,以满足项目的需求和目标。通过不断学习和实践,我努力提升自己在软件开发过程中的设计能力和专业水平。

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

我已经具备执行从组件到软件系统的技术评测的能力。我能够熟练评判设计模型的优劣,考虑到可行性和效益等因素,从中选取最佳的设计方案。在这个过程中,我注重创新设计意识,努力提出新颖和可行的解决方案。通过对技术评测的实践,我不断提升自己的评判能力和创新思维,以确保设计方案的质量和可靠性。

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

我对软件开发各阶段的文档标准有很好的掌握。我能够遵循规范的表达方式,准确地编写需求规格说明书、系统设计说明书、系统测试报告等文档。我注重文档的清晰、准确和可理解性,以确保项目的顺利进行和团队间的有效沟通。此外,我也努力提升与业界同行交流的能力,积极参与技术讨论和分享,与其他软件工程师保持紧密的交流,以不断提升自己的专业水平和与业界同行的交流能力。

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

解释:在团队中我能很好的听从PM的管理,我能够与团队的其他成员进行有效的沟通和协作,共同解决问题并实现项目目标。我了解团队协作的重要性,注重倾听他人的意见和建议,并积极贡献自己的想法和能力。此外,我也能够组织、协调或指挥团队开展工作,合理分配任务,确保项目进展顺利。我相信通过良好的团队合作,我们能够共同取得更好的成果。

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

我已经较好地掌握了具体软件项目管理的构成要素,并能够进行软件规模和工作量的估算。我了解并能够选择适当的工具来规划软件进度,并进行项目管理过程的配置。我具备初步管理复杂软件工程项目的能力,能够组织团队并有效地分配任务,确保项目的顺利进行和交付。我深入学习了软件项目管理的理论和方法,不断提升自己在项目管理方面的知识和技能,以实现项目的成功完成。

目标评分
理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。91
掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。89
掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。87
能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。82
遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。85
具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。91
能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。85

1.5 总结

本次团队作业是我做过的最大的项目,给了我大量的经验,学到了非常多的东西。
在软件工程实践课程中,我获得了宝贵的学习和实践经验。通过参与各种项目和任务,我对软件开发的整个生命周期有了更深入的理解。我学会了使用不同的开发工具和技术,从需求分析到设计、开发、测试和部署,全面了解了软件开发的各个阶段和过程。同时,我也意识到了团队合作和沟通的重要性,学会了与他人协作并解决问题。在实践中,我不断提升自己的技术能力,学会了灵活应对各种挑战和问题。此外,我也加强了对软件工程的职业道德和规范的理解,注重以负责任的态度对待项目和团队。通过这门课程,我不仅掌握了实际的软件开发技能,还培养了创新思维和解决问题的能力。我相信这些经验和知识将对我未来的职业发展产生积极的影响。

第二部分-个人技术总结

个人技术总结——springboot中Edge Preservation的具体控制

...全文
295 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoftwareTeacher 2023-06-13
  • 打赏
  • 举报
回复

stable diffusion技术 稳定扩散是一种在图像生成和编辑中广泛应用的算法,它能够产生高质量的艺术作品。


你用它创作了什么艺术作品么?

586

社区成员

发帖
与我相关
我的任务
社区描述
软件工程-2022-23学年(第二学期)
软件工程 高校
社区管理员
  • LinQF39
  • promisekoloer
  • 异梦1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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