软件工程实践总结——砥砺前行 不负韶华

这个作业属于哪个课程2023年福大-软件工程实践-W班
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标课程回顾与总结、个人技术总结
其他参考文献

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

温故知新

曾经的问题,更多的体会

曾经问题思考的博客

问题1:软件开发是年轻人的饭碗,吃的是青春饭?那年纪大的程序员经验丰富但是快速学习能力拼不过年轻程序员的时候该怎么办呢?
与其焦虑未来,不如更多的活在当下。我们应该在年轻的时候就要保持学习的态度,不断吸收新知识,掌握新技能。
问题2:如何能“证明”一个软件是可以继续发展的?

  1. 用户需求:软件需要满足用户需求,如果用户需求存在并且持续增长,那么软件就有发展的空间。

  2. 技术支持:软件需要不断更新迭代,具有稳定性、易用性、安全性和易扩展性,同时需要支持多平台和多语言。

  3. 市场趋势:了解市场发展趋势,判断软件是否能够适应市场需求,满足用户要求。

  4. 团队实力:需要有一支具有技术实力的团队,他们可以开发新功能、增强现有功能、解决安全问题等。

问题3:软件的行为和用户的期望值不一样,就一定是 Bug 吗?
不一定。软件的行为与用户期望的不一致可能是因为设计上的缺陷或者说明文档不够清晰,也可能是由于用户的误解或者期望不合理。因此,在判断一个问题是否是 Bug 之前,我们需要对软件本身进行仔细的分析,并且了解用户的需求。

问题4:针对处理数据量较大的模块,我们该怎样手动构造测试样例呢?
在处理数据量较大的模块时,我们可以采用一些自动化的测试工具,例如性能测试工具,通过模拟用户的真实操作来模拟大型数据量的情况。同时,我们也可以考虑手动构造较大的数据集,并且使用不同的组合和边界条件进行测试。给出合理的测试样例可以帮助我们发现潜在的问题和 bug,从而提高软件的质量和稳定性。

问题5:我们在面对开始的需求时可以通过哪些方法增强程序的可扩展性呢?

  1. 模块化设计:将程序拆分成多个模块,每个模块具有单一职责,具有独立的接口,这样可以避免代码之间的耦合,降低代码维护成本,同时方便后期修改和扩展。

  2. 采用设计模式:设计模式是一种经过验证的可重用解决方案,应用这些模式能够增加程序的可扩展性,同时提高代码的可重用性和可维护性。

  3. 采用面向对象编程思想:面向对象编程思想简单易懂,可让程序的扩展更加方便,同时可以提高代码的可读性和可维护性。

  4. 使用高效的数据结构和算法:在程序的设计和实现过程中需使用高效的数据结构和算法,以减少程序运行时间和内存占用,提高程序的性能和可扩展性。

力学笃行

在实践中学习,接下来我从以下五个阶段进行自我分析。

需求分析阶段

在需求分析阶段,我学会了收集、分析和细化用户需求,进行需求评估和管理,编写需求说明文档。该阶段需要具备需求调查、需求分析、需求评估和文档撰写的能力。

设计阶段

在设计阶段,我学习到如何将需求转化为可执行的方案,并且设计系统体系结构和各个模块之间的接口。该阶段需要具备设计思路、系统架构、接口设计和模块化设计的能力。

实现阶段

在实现阶段,我学习到如何将设计转化为可执行代码,进行编码和调试,需要具备编程技能、代码规范和项目开发流程的运用技能。

测试阶段

在测试阶段,我学习到如何根据测试计划进行测试用例的设计和执行,发现和修复缺陷,并且进行测试结果的分析和总结。需要具备测试用例、缺陷分析和测试结果统计分析的能力。

发布阶段

在发布阶段,我学习到如何打包部署程序,进行版本控制和配置管理,并且进行用户验证和反馈处理。需要具备操作系统、打包部署、版本控制和用户反馈处理的能力。

本次课程中的理解与心得

个人项目

个人项目考验的更多的是个人的自学能力和实战能力。需要独自一人面对一个项目,这个过程是对自己综合能力。在个人项目中,我们可以独立完成一个小规模的项目,这个过程对于我们有很多的好处。首先,我们可以用到自己所学的知识,尝试将所学的理论应用到实际中,提升自己的编程能力。其次,通过个人项目,我们可以更好地了解自己感兴趣的领域和方向,有助于我们的职业规划。最后,个人项目对培养我们的独立思考和解决问题的能力也是非常重要的。

结对编程

结对编程是一种两人合作完成单个任务的方式。在结对编程中,同时存在两个人,一个人负责编写代码,另一个人负责对代码进行审查。我的理解是,结对编程可以帮助我们更好地合作和沟通,能够互相促进、帮助和提醒。同时,通过与伙伴的互相帮助,在资源和能力上可以产生互补效果,能够提高效率和代码质量。

团队项目

团队项目是一种多人合作完成的项目,它需要具备团队成员之间良好的沟通和协作能力。在我的理解中,团队项目的核心在于规划和协作。要制定合理的计划和任务分配,合理安排时间,以便所有人都能够在时间内完成任务。同时,团队成员之间的沟通和协作也是至关重要的,要建立良好的关系,通过沟通协商解决问题,避免出现不必要的摩擦和冲突。作为组长,我更加能体会在项目实现过程中任务分配的重要程度以及进度实时跟进的重要。

自我评分

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

95分:通过网上的事件案例,并深入学习,时刻记住并遵守软件工程师的职业原则,包括但不限于:

  1. 对他们的工作承担完全的责任;
  2. 用公益目标节制软件工程师、雇主、客户和用户的利益;
  3. 批准软件,应在确信软件是安全的、符合规格说明的、经过合适测试的、不会降低生
    活品质、影响隐私权或有害环境的条件之下,一切工作以大众利益为前提;
    本标准的版权(1999)属国际电气电子工程师协会 (IEEE)和美国计算机学会(ACM)。
  4. 当他们有理由相信有关的软件和文档,可以对用户、公众或环境造成任何实际或潜在
    的危害时,向适当的人或当局揭露 ;
  5. 通过合作全力解决由于软件、及其安装、维护、支持或文档引起的社会严重关切的各
    种事项;
  6. 在所有有关软件、文档、方法和工具的申述中,特别是与公众相关的,力求正直,避
    免欺骗;
  7. 认真考虑诸如体力残疾、资源分配、经济缺陷和其他可能影响使用软件益处的各种因
    素;
  8. 应致力于将自己的专业技能用于公益事业和公共教育的发展。

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

90分:在本次课程中,我学会了以下:

  1. 掌握需求分析的基本知识和概念,例如需求的分类、需求的提取、需求的分析等等。
  2. 熟练使用需求表达工具,例如用例图、流程图、活动图等等。
  3. 熟悉常见的需求分析模型,例如CMMI、SPICE等等。
  4. 学会辨别客户表述的多样化要求,例如主观要求与客观需求的区别、隐含需求与显式需求的区别等等。
  5. 学会与客户进行充分的沟通,了解客户的业务模式、流程和用户需求,并根据客户反馈进行迭代和优化。

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

90分:掌握软件开发的全过程是一个需要经验和技能的过程。下面我将从以下几个方面概括

  1. 遵循体系结构设计方法和基本设计原则,掌握软件开发的全过程。在设计软件方案时,需要遵循体系结构和基本的设计原则,以确保软件的可用性、可维护性和可扩展性。
  2. 体系结构设计模型。在设计软件开发过程中,需要对系统架构进行规划和设计。为此,需要设计一个适合软件系统的体系结构模型,该模型应该涵盖系统开发所需的硬件和软件组件、子系统、接口和协议等。
  3. 数据设计模型。数据设计模型是为了满足系统对数据的需求。在这一阶段,需要设计出一个适合系统要求的数据结构图,并定义数据字典和数据流程图等。
  4. 构件级设计模型。构件级设计模型是为了满足软件系统的实现需求。在这一阶段,需要设计出一些组件和模块,需要定义这些组件和模块之间的接口和协议,可以使用UML或其他建模工具来建立构件级设计模型。
  5. 面向高效可靠的服务组件设计方案或软件系统设计方案。面向高效可靠的服务组件设计方案或软件系统设计方案是最终的设计方案和实现文档。需要将组件级设计模型与体系结构设计模型和数据设计模型整合起来以创建一个可执行的方案。此外,方案还需要通过技术评审以达到质量标准。

总之,掌握软件开发的全过程需要我们在设计过程中遵循一些基本原则,同时要掌握设计方法和技术,透彻理解开发过程并对其进行全面的规划。

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

90分:从组件到软件系统的技术评测是软件开发过程中非常重要的一部分。技术评测可以帮助我们判断设计方案的可行性、实际性以及是否满足系统需求等。一个合格的技术评测需要掌握以下几方面的能力:

  1. 具备设计模型的评判能力。对于设计所涉及到的模型,如架构模型、数据模型、组件模型等,需要理解并掌握它们的特点以及它们在整个系统中所处的位置和作用。基于此,可以对设计模型进行评判,判断它是否满足设计需求和系统要求。
  2. 具有创新设计意识。能够根据实际需求,从设计的根本上创新设计,提高设计的可行性、实用性和效率。在评判设计方案时,可以结合当前的设计趋势和技术状况,加以创新和改进。
  3. 能够优选设计方案。应用评测能力,对设计方案进行评估,评估设计方案的性能、安全性、可靠性等方面,并根据评测结果优选设计方案,找出最适合的解决方案。

总之,技术评测是软件开发过程中的必不可少的步骤。创新设计意识、设计模型的评判能力和能够优选设计方案等能力都是执行技术评测时所必须具备的关键能力。

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

90分:在每一个软件开发阶段,从需求分析、到设计、开发、测试、上线等,都需要制定相应的文档,以明确开发方向、确保质量和协作等。其中,需求规格说明书、系统设计说明书、系统测试报告等文档是非常重要的。

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

90分:作为一名软件开发工程师,良好的团队意识和合作技能是不可或缺的。在现代软件开发中,一个项目通常涉及多个开发人员,每个人员都有自己独特的工作任务和职责。在这种情况下,若缺乏团队意识和合作技能,就很难实现项目目标。
首先,拥有团队意识和合作技能意味着能与其他成员开展有效的沟通和协作。这意味着开发人员能够清楚地表达自己的想法、意见和建议,以确保每个人员对项目的目标和方向有清晰的理解。此外,开发人员还需要尽可能多地与其他成员交流和协作,以确保有助于前进和实现项目目标的决策得到合理的讨论和决策。
其次,作为软件开发工程师,需要具备组织、协调或指挥团队开展工作的能力。这意味着开发人员需要制定清晰的工作计划、监控团队和工作进度、把握项目重要节点和时机,确保项目在合理的时间内成功完成。此外,开发人员还需要有适当的领导和组织能力,以确保每个人员完成的任务在时间上和质量上达到要求。
因此,对于软件开发工程师来说,良好的团队意识和合作技能对于完成一个项目和实现目标至关重要。只有有了这些技能,才能够与其他成员开展有效的沟通和协作,并能够组织、协调或指挥团队开展项目工作,确保项目的成功实现。

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

90分:作为一名软件工程师,辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,选择合适的工具规划软件进度并对项目管理过程进行配置,并具备初步的管理复杂软件工程项目的能力是非常重要的。
首先,辨别具体软件项目管理中涉及的构成要素包括理解软件项目管理的概念和流程,掌握项目范围、需求、时间、成本、质量等重要方面。这需要软件工程师具备严谨的逻辑思维和系统分析能力,能够在需求分析的基础上,对项目进行设计和规划。
其次,软件规模和工作量的估算方法对于软件工程师来说也非常重要。掌握常用的软件评价模型和方法(如FPA、COSMIC-FFP等),可以有效地估算项目的工作量和预算,为项目进度的规划提供科学依据,面对出现的预算和进度问题能做出有针对性的调整。
然后,在选择合适的工具规划软件进度时,软件工程师需要掌握相应的软件工具和技术。例如,基于Web的项目管理软件(如JIRA等)、项目排程软件(如MS-Project等)、敏捷开发和开发方法论(如Scrum、XP等)。通过这些工具和技术的使用,软件工程师能够更加客观、准确地规划和监控项目进度,及时调整项目风险和进度等问题。
最后,在具备初步的管理复杂软件工程项目的能力方面,软件工程师需要掌握软件项目管理的一些基本知识。例如,管理、领导和协商技能、风险管理和变更管理技能、质量管理和测试技能等。这些能力可以支持软件工程师在实际项目管理中运用其技能和知识,同时为将来管理较复杂的软件工程项目打下了基础。

综上所述,作为一名软件工程师,辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,选择合适的工具规划软件进度并对项目管理过程进行配置,并具备初步的管理复杂软件工程项目的能力是至关重要的,这不仅可以促进项目的成功实施,同时将提高自身的竞争力和实际表现。

第二部分:个人技术总结

个人技术总结——unity3D的人机交互、角色控制器、单例模式
概述:本次团队项目中,组员们基本都是从零开始,我负责unity3d的前后端,在这边我提供了一些自己认为自己掌握比较好的相关技术(人机交互、角色控制器、单例模式)的心得与学习指引,仅供参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值