222100425软工实践课程总结

这个作业属于哪个课程班级链接
这个作业要求在哪里作业要求的链接
这个作业的目标软件工程实践总结
其他参考文献《构建之法》

文章目录

第一部分

1.在五个阶段中的收获

1.1需求阶段

在需求阶段,我最大的收获是学习了如何进行有效的需求分析和沟通。在团队项目的需求阶段我们共同讨论了同类型游戏,不同玩家对其的需求,明确了项目的核心需求和用户期望。我掌握了需求文档的撰写方法,学会了如何将模糊的需求具体化,并用用户故事和用例来描述功能需求。这些技巧不仅帮助我更好地理解了项目的目标,还提升了我的沟通能力和分析能力。

1.2设计阶段

设计阶段让我收获最大的是UML(统一建模语言)应用能力。在这个阶段,我参与了系统架构的设计和模块划分。我学习了如何使用UML工具进行类图、序列图和用例图的绘制,从而更好地理解和设计系统的整体结构。通过这些工作,我对软件系统的整体设计有了更深刻的理解,并提高了我的抽象思维和系统设计能力。

1.3实现阶段

在实现阶段,我最大的收获是代码管理能力的提升。我在项目中使用gitcode进行开发,熟练掌握了GIT的使用。同时,我还学会了使用Git进行版本控制,了解了分支管理和代码合并的最佳实践。通过团队协作开发,我进一步提升了代码质量和开发效率,掌握了代码评审和单元测试的重要性。

1.4测试阶段

测试阶段让我收获最大的知识是测试策略和工具的应用。在这个阶段,我们制定了详细的测试计划,进行了单元测试、集成测试和系统测试。我学会了如何编写测试用例,使用工具进行自动化测试,并掌握了Bug追踪和报告的流程。通过反复的测试和修复,我深刻认识到了测试的重要性,并提升了我的测试能力和细致度。

1.5发布阶段

在发布阶段,我参与的程度不够多,不过还是有所收获,从中我了解了部署服务器的原理以及提升了自己PPT的制作能力。

通过以上五个阶段的学习和实践,我不仅在技术能力上有了显著提升,还在项目管理、团队协作和问题解决能力方面得到了全面的发展。这些宝贵的经验为我今后的职业生涯奠定了坚实的基础。

2.个人项目/结对编程/团队项目的理解或心得

2.1个人项目

在个人项目中,我学会了独立解决问题的能力的重要性。作为唯一的开发者,我需要全面负责项目的所有环节,从设计到实现和测试。通过个人项目,我深刻理解了以下几点:
自学能力:在个人项目中,我需要不断学习新知识和新技术,培养了自学能力。这个过程还是比较痛苦的,但是收获也是最多的。
时间管理:独立进行项目开发时,合理安排时间至关重要。通过制定详细PSP表格,我学会了如何高效利用时间。
全面掌握技术:个人项目要求我掌握从前端到后端的全栈开发技能,这不仅拓宽了我的技术视野,也提高了我的综合能力。
感受:通过个人项目,我从中提高了自己的全面能力,而且我个人觉得个人开发一个项目效率是非常高的,不过一个人的实践和精力是有限的,一个人正常情况下只能够开发较小的项目。

2.2结对编程

在结对编程中,我体会到了合作开发的乐趣和挑战。结对编程要求两人共同编写代码,一人负责实际操作,另一人负责思考和检查。通过这种模式,我有以下收获:
沟通与协作:结对编程强调沟通,我学会了如何清晰表达自己的思路,并理解尊重他人的意见。
代码质量:在结对编程中,我们相互审查代码,提高了代码的质量和可靠性。
问题解决:两人合作可以更快速地发现和解决问题,培养了团队协作的能力。
感受:我个人认为结对编程时这三个项目中我最喜欢的开发模式,两个人的如果能够沟通好的话,不仅开发效率很高而且能够做一些比较中小型的项目,并且两个人开发一个项目颇有1+1>2的事半功倍的感觉。

2.3团队项目

在团队项目中,我经历了更加复杂的项目开发流程,学会了如何在团队中高效协作和管理项目。以下是我的主要心得:
角色与分工:团队项目需要明确分工,每个人负责不同的模块和任务。我学会了如何在团队中扮演自己的角色,并与他人紧密合作。
项目管理:我们使用了敏捷开发的方法,通过gitcode进行项目管理。冲刺时我学会了如何进行每日站立时会议、迭代计划和回顾会议,最大程度推进项目进度和提高团队的协作效率。
集体决策:在团队项目中,我们需要集体讨论和决策项目的技术选型、架构设计和功能实现。我学会了如何参与讨论、提出建议并尊重和支持团队的决定。
感受:个人认为团队开发虽然人多力量大,但是众口难调,沟通交流我觉得花费了太多时间和精力,我不太喜欢这种开发方式。

3.自我对七大课程目标的掌握程度的评分

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

评分:85
解释:在这次课程中,在准备了解阶段对这个部分的了解比较多,我通过阅读《构建之法》和多次案例分析,深入了解了软件工程师的职业道德规范和实践要求。我理解了软件产品对社会和文化的影响,并意识到了开发过程中需要考虑的社会责任和职业道德。这些知识帮助我树立了积极向上的开发理念,但在实际应用中还有待进一步提升和实践,实践还不够。

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

评分:95
解释:我学会了如何进行需求分析,不过我们的项目开发没有真正存在的现实客户,我们只能假象出目标用户和从网上了解知识来进行对客户的构建,从初步了解到最终形成需求文档。在课程项目中,我多次使用需求表达工具如UML和用户故事,能够准确捕捉和表达“虚拟”客户的需求,并构建了完整的需求分析模型。但在处理更复杂的需求时,仍需进一步实践,不过我个人对这方面的学习程度还是比较有信心的。

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

评分:88
解释:课程中,我参与了多个个人/结对/团队项目,从体系结构设计到数据设计,掌握了软件开发的全过程。通过技术评审和邀请同学的评价反馈,我不断改进设计方案,形成了高效可靠的系统设计。但在一些复杂系统的设计中,我还需要更多的经验和深入的理解。

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

评分:85
解释:我在项目中进行了从组件到系统的技术评测,学会了评判设计模型的优劣。通过不断实践,我培养了创新设计意识,能够选择最优的设计方案。但在评测复杂系统时,我的评判能力和创新意识还有提升空间。

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

评分:96
解释:我学会了遵循软件开发文档标准,能够规范地撰写需求规格说明书、系统设计说明书和系统测试报告等文档。在与团队同学的交流中,我提升了专业表达和沟通能力。个人对这个能力还是比较自信的。

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

评分:95
解释:通过团队项目,我培养了强烈的团队意识和合作技能,能够有效地与其他成员沟通和协作。在项目中,我多次参加团队工作,确保自己负责的项目部分按时高质量完成。这一阶段的表现得到了团队成员和老师的认可。

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

评分:88
解释:课程中,我学习了软件项目管理的基本构成要素和估算方法,使用工具进行项目规划和管理。虽然在小型项目管理中表现较好,但在面对更复杂的项目时,仍需要进一步提升管理能力和实践经验。

3.8总结

通过本次软件工程实践课程,我在各个目标上都有显著的进步。每个阶段的学习和项目实践,使我不仅提升了技术能力,还增强了职业意识和团队协作能力。未来,我将继续在实际工作中应用和巩固这些知识和技能,进一步提升自己在软件工程领域的综合能力。

4.回顾寒假思考过的问题与对其新的思考

4.1回顾与思考

4.1.1在项目或程序比较复杂的情况下,如何高效率的进行程序理解?
思考:我认为应该分为两部分讨论,在项目建设时:应该多多添加注释并且使用简单直观的逻辑来编写,这样就在源头上能够高效的方便后人理解;另一部分,在接手了一个复杂的项目后,最好能够找到项目的开发者讨论其开发思路,我认为这样会有事半功倍的效果。
新的思考:除了添加注释和讨论开发思路,利用现代的代码分析工具和文档生成工具也可以大大提高程序的理解效率。此外,代码评审和对关键模块进行详细设计文档的编写也是非常有效的方法。

4.1.2作者用商用民航发动机来对比普通的商用软件,是否合适?
思考:我的观点和作者相反,我觉得可以用商用民航发动机来对比普通商用软件。在本书中,作者用这两者的对比其实是想说明硬件(发动机)和软件的不同之处,即硬件需要保证其可靠性,但是软件缺需要不断的迭代才能越来越完整,这个对比我觉得合理。
新的思考:通过本次课程后,在进一步思考后,我认为虽然这种对比有其合理性,但也需要注意二者的显著差异。民航发动机的设计和生产周期非常长,一旦投入使用,修改成本极高。而软件虽然可以快速迭代,但也因此更容易出现初期质量问题。因此,在软件开发中,除了强调快速迭代,还需要学习硬件设计中的严格测试和质量控制流程,以提高软件的初始质量和用户体验。

4.1.3在一个被认定为“足够好”的软件发布后,得到的用户反馈中,哪些是有用的?什么时候才能将这个软件优化到相对稳定的版本?
思考:我觉得这是个很好的问题,当软件越发庞大,用户群体越来越多、越来越广泛时,用户的反馈该如何采纳真的是一个很值得思考的问题。我认为,应该抓住软件产品本身的定位,从自身原本的定位来甄别用户的反馈,因为不忘初心是一个产品伟大的前提。
新的思考:通过本次课程后,在进一步思考后,我认为用户反馈的有效性可以通过数据分析和用户行为分析来进一步确定。通过监测用户的使用数据和行为模式,可以更精确地识别出哪些反馈是广泛存在的问题或需求。此外,采用A/B测试可以在不影响全体用户体验的情况下,验证反馈建议的有效性和对产品的影响。至于何时优化到相对稳定的版本,通常可以通过减少重大Bug,以及性能指标的稳定性来判断。

4.1.4如何区分一个好的程序员和不好的程序员呢?
思考:这是个让我很难得出结果的问题,我认为评价一个程序员好或者不好的指标有非常多,比如说编程能力、交流能力、工作效率等,并且不同的企业的不同时期这些指标的权重都不一样;因此我认为没有一个绝对好的或者绝对坏的程序员,我们只能说这个程序员在某段时期是做的好的或者做得不好的。
新的思考:通过本次课程后,进一步思考后,我认为评价一个程序员还可以通过他们的学习能力和适应能力来衡量。技术在不断更新,能够快速学习和适应新技术、新工具的程序员往往能够更好地应对变化。此外,代码质量和对团队的贡献也是重要的评价指标。一个好的程序员不仅能写出高效、可靠的代码,还能通过知识分享、代码评审等方式提升整个团队的水平。

4.1.5程序员在哪些地方是必须依赖一个额外的用户体验设计师的?
思考:我认为术业有专攻,现代社会因为有了分工因此生产力大大提高,用户体验部分在实际的编程中是很难被程序员感知的,我觉得应该在直面用户部分(前端、交互)中程序员需要依赖一个用户体验设计师来辅助设计,毕竟软件是为了人而服务的,用户的体验感是十分重要的。
新的思考:通过本次课程后,随着思考的深入,我认为不仅仅是前端和交互部分,整个用户体验的设计还涉及到信息架构、用户流畅度、可访问性等多个方面。一个专业的用户体验设计师能够通过用户研究、原型设计和可用性测试,提供更加全面和深入的用户体验优化方案。同时,程序员应积极与用户体验设计师合作,共同进行用户测试和反馈分析,以确保设计方案在实际应用中达到预期效果。

4.2实践过程中产生的新的问题

4.2.1如何高效的与团队成员进行沟通?
思考:首先,定期会议如每日站会和迭代计划会议是必要的,它们能够同步团队成员的进展、明确工作重点。其次,使用即时通讯工具(QQ微信)和版本控制系统(如GitCode)能有效组织任务、实时沟通和管理代码。将需求、设计和测试计划等通过文档来表示,制定统一的编码规范,有助于团队成员理解项目全貌和具体细节。代码评审机制不仅提高了代码质量,还促进了知识共享。跨职能团队之间的定期同步,确保了各环节的信息流畅和决策高效。综上所述,高效的沟通需要多方面的努力和工具的支持,通过这些措施,团队能更好地理解项目目标、明确各自任务、解决问题。

4.2.2如果是两三个人的小团队的话,能够开发出什么类型的程序,应该如何实现开发?
思考:因为我个人觉得两三个人的小团队比较适合我的开发风格,团队作业中的多人协作虽然可以较好的完成,但是让我觉得花费太多的时间和精力以及心情,因此我便思考如果是两三个人的小团队应该如何去开发一个大项目。因为每个人的时间精力肯定都很有限,并且因为开发过程涉及的面很广,所以肯定需要一人分饰多角,所以我认为应该找几个全能型比较强的队友(与专精的开发人员相对),并且需要对开发的方向足够热爱,因为人不多所以沟通不是问题。不过感觉也开发不出多大的一个项目,不过开发某些app小程序还是能够实现的。
4.2.3如何将这门软工实践课运用到以后的工作中?
思考:在这门实践课中,我们开发过程涉及面广,我认为个人在这门课的实践中,可能发现自己在某个方面做事比较得心应手或者兴趣比较大,就业后就可以试着朝这些方向发展试试看,这门课的最大作用就是对以后的就业方向起到抛砖引玉的作用。

第二部分

个人技术总结
链接
概述:主要通过自学Unity游戏开发中的人物模型创建。Unity是一款功能强大的游戏引擎。在开发游戏时,游戏人物模型是必不可少的部分。学习该技术的原因在于游戏开发的需求以及提高角色的视觉效果和互动体验。技术难点主要集中在模型的创建、动画的制作和与游戏逻辑的整合。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值