一起向未来的项目开发宣战吧!
这个作业属于哪个课程 | 首页 - 软件工程2024 - 福州大学 - 班级博客 - 博客园 (cnblogs.com) |
---|---|
这个作业要求在哪里 | 软件工程2024秋——个人总结作业 - 作业 - 软件工程2024 - 班级博客 - 博客园 |
这个作业的目标 | 学期回顾与总结 |
学号 | 042201520 |
一起向未来的项目开发宣战吧!
一、学期回顾
1.1 回顾你对于软件工程课程的想象
根据你对课程目标和期待,回顾目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
①达到期待和目标的方面
理论知识的掌握
- 通过课堂讲解、教材学习和课后复习,我对软件工程的基本概念、原理和方法有了较为清晰的理解。例如,软件开发生命周期模型(如瀑布模型、敏捷开发模型等)的特点和适用场景,需求分析、设计、编码、测试和维护等各个阶段的主要任务和流程,我都能熟练阐述。这为我在实际项目开发中提供了坚实的理论指导,使我能够从宏观角度把握项目的整体架构和开发方向。
编程技能的提升
- 课程中涉及到的大量编程实践作业和项目,使我的编程能力得到了显著提高。我更加熟练地掌握了编程语言python等的语法和特性,能够运用面向对象的编程思想进行程序设计和实现。在项目开发过程中,我学会了如何组织代码结构、编写清晰可读的代码以及进行有效的代码调试,这些技能的提升对于我今后从事软件开发工作至关重要。
团队协作与沟通能力的培养
- 课程项目采用团队合作的方式进行,这让我有机会在实际项目中锻炼团队协作和沟通能力。在团队中,我学会了如何与不同性格和技术背景的成员进行有效的沟通和协作,明确各自的职责和任务,共同制定项目计划和目标,并通过定期的团队会议和交流及时解决项目中出现的问题。
- 在团队协作过程中,我深刻体会到了团队合作的力量。通过分工合作,我们能够充分发挥各自的优势,提高项目的开发效率和质量。同时,我也学会了倾听他人的意见和建议,尊重团队成员的想法,这有助于营造一个良好的团队氛围,促进团队的和谐发展。
②存在不足的方面
项目管理能力有待提高
- 在实践作业中,虽然我按照软件工程的流程进行了开发,但在项目管理方面还存在一些不足之处。例如,在项目进度管理上,由于对各个任务的时间估计不够准确,以及在开发过程中遇到一些技术难题导致部分任务延迟,最终导致项目整体进度受到一定影响,特别是在第二次结对作业,由于特殊原因只有我一个人完成,但是因为许多技术难点(如从未涉及的前端技术栈),同时又低估了该次结对作业的难度,工作量过大,导致我最后无法完成此次作业,深表遗憾(希望不要因为这次作业无法完成而挂科TT),这反映出我在项目计划制定和进度跟踪方面的能力还有待加强,没有充分考虑到项目开发过程中的各种风险因素,缺乏有效的应对措施。
软件测试的全面性和深入性不足
- 在团队作业阶段,我主要关注了功能测试,通过实际上手体验软件的各项功能进行了验证,确保软件能够满足基本的业务需求。然而,对于其他类型的测试,如单元测试、集成测试等上手比较少,并且不太会编写测试用例来针对我们小组的软件进行测试。
- 此外,在测试上,虽然能够覆盖主要的功能模块,但测试用例的数量和质量还不够理想,存在一些异常情况没有充分考虑到的情况。这导致软件在实际使用过程中可能会出现一些意想不到的错误(如我们小组的模拟砍价中,价格越砍越高的尴尬情况,而且砍价难度过大的情况),影响用户体验。这反映出我对软件测试的重要性认识还不够深刻,在测试方法和技术的掌握上还存在一定的局限性,需要进一步加强学习和实践,提高软件测试的全面性和深入性。
对行业前沿技术的了解不够深入
- 软件工程领域的技术发展日新月异,新的技术和工具不断涌现。在本学期的学习中,虽然我接触到了一些主流的开发技术和框架,但对于行业前沿技术的关注和了解还不够。例如,web应用开发、chatgpt的使用以及各种开发语言的使用(这个学期学了18门课,实在是太忙了,没有精力学习课外知识,希望这个寒假和下学期能好好恶补一下)。这在一定程度上限制了我的技术视野和创新能力,使我在面对未来复杂多变的软件开发需求时可能会感到力不从心。
③不足的原因分析
实践经验不足
- 项目管理和软件测试能力的不足主要是由于实践经验不足造成的。虽然在课程中学习了相关的理论知识和方法,但在实际项目中应用时,还需要更多的实践经验来积累和摸索。在项目管理方面,对各种风险因素的预估和应对措施的制定需要在多次项目实践中不断总结和改进;在软件测试方面,对不同类型测试的方法和工具的熟练运用也需要通过大量的实际测试案例来积累经验。
时间和精力分配不合理
- 在本学期的学习过程中,由于课程任务较多,我在各个课程之间的时间和精力分配不够合理。在软件工程课程的学习中,过于注重理论知识的学习,追求课程作业的完成而非完成的质量,而忽视了对项目管理、软件测试等其他重要方面的深入学习和实践。这导致我在这些方面的能力发展不够均衡,存在明显的短板。
综上所述,通过本学期软件工程课程的学习,我在理论知识掌握、编程技能提升和团队协作能力培养等方面取得了一定的成绩,但由于自身技术栈较浅,对于项目开发的学习我认为仍旧不足。在今后的学习和实践中,我将针对这些不足之处,制定合理的学习计划和改进措施,加强实践锻炼,拓宽学习渠道,优化时间和精力分配,不断提高自己的软件工程能力,为今后的职业发展打下坚实的基础。
1.2 回顾你在这门课程中的投入与产出
- 在软工实践课程当中我编写了5000+行代码。
- 在团队项目中我参与了小福同学的设计与开发,我在其中所承担的角色为测试项目功能,各类文档、uml图的制作和答辩ppt的制作。
- 软工实践的各次作业分别花费的时间:
作业 | 花费时间 |
---|---|
第一次个人作业 | 3h |
第二次个人作业 | 6h |
第一次结对作业 | 12h |
第二次结对作业 | 15h(因为前端不会制作最后未完成) |
第一次团队作业 | 5h |
第二次团队作业 | 7h |
现场编程作业 | 4h |
团队作业beta冲刺 | 10h |
- 在软件工程课程上花费的时间
累计时间 | 实际周均时间 | 预计周均时间 |
---|---|---|
62(h) | 3.875(h) | 3(h) |
1.3 令你印象最深刻的是哪一次作业或哪一场答辩?为什么这次作业或这场答辩令你印象深刻?
第一次结对作业和第二次结对作业
- 在结对作业中选择了和一个完全没接触过的陌生人结对,结果遇到了根本不做作业的辅修学生,对于我给出的任务仅仅是口头答应,没有完成一点,第一次结对作业的进度被严重拖后,导致第一次结对作业和第二次结对作业全部由我一个人完成,加上我个人力不从心,技术不够,综合各种因素使得第二次结对作业未完成,以至于令我印象深刻,自结对作业后,我对后边的团队作业有些担忧,怕再次遇到类似的人,所幸我们小组的成员都很好,在团队作业中都尽心尽力,我的心灵创伤被狠狠治愈,在这里偷偷感谢一下他们吧^^
二、总结收获
2.1 展开说说你的软工实践故事
- 个人编程/结对编程/现场编程/团队项目实践中的经验总结+实例/例证结合的分析。
①个人编程
在第一次博客作业中,真正学会了github的使用(以前都是在需要代码的时候去github上找,对于GitHub的代码文件管理的作用并未实际上手)
同时对于博客园的个人主页美化我也只是随便选了个现成的主题,但在点开其他同学的博客后,被他们博客界面给惊艳到了,遂从网上寻找博客园美化教程,以下是我现在博客主页的样子,每次点开都心情舒畅^^
同时在第二次个人作业中,小游戏开发让我感到十分有趣,原来小游戏的开发并没想象中的难,特别是与AIGC合作的情况下,AI像一个耐心的老师和勤勤恳恳的合作者,我只需要给出详细的prompt,它就会帮我写出大致框架
同时也认识到仅凭AI编程是完全不够的,项目越大,需要实现和细化的功能就越多,编码过程中很多需要自己来上手调整,所以今后的学习中不能太过依赖AI编程,自己学好技术才能使项目不断趋近需求,特别是在AI编程中要知其所以然,懂得各部分代码的作用同时会进行个性化修改,千万不能让AI在编程中占据主导地位和放弃自己的思考。
②结对编程
阅读了老师在作业中要求的书籍,知道了项目开发不只是写写代码,还有很多任务要做(如原型设计、需求分析等等)
学会了原型设计,使用墨刀设计了自认为还算可以的原型,编写软件文档,制作原型也是一门技术活,学习软件工程之路任重道远
虽然最后的项目没有开发出来,但是对于项目开发的流程更熟悉了,同时也意识到了自己技术栈有些不足,今后要努力提高自己的技术水平
③现场编程/团队编程
由于是随机分配的团队,大家互相都不熟悉,但是每个人都为团队主动做出贡献,在遇到技术难点的时候,大家互相交流解决方案,我觉得我们团队是最棒的^^
无论是线上还是线下,大家一起完成项目并看到项目最后运行起来,都是很令人振奋的事情,也是第一次如此正式的团队编程,虽然开发过程中有些磕磕绊绊,但最终还是有惊无险的完成了团队任务,感谢我的团队成员们,让我更有信心面对以后的团队工作,同时希望在以后的职场中,自己能更加热情一些,积极融入到团队工作当中去。
2.2 介绍学习到的新技术或生产力工具以及它们给你带来了哪方面的帮助?
AIGC
- 帮助注释代码,对于软件开发过程或者团队伙伴的代码,可以让AI解释每段代码的作用,方便且清晰的给出代码逻辑和算法原理
- 给出软件的代码框架,在面对一个项目束手无策的时候,可以让AI给出大致框架,自己再做修改和整合,加快项目的开发速度
- 绘制个人logo以及其他画作,AI可以生成独一无二的图片,帮助我们进行美术设计
pygame 库
- 轻松开发 2D 游戏,快速构建游戏框架,包括创建游戏窗口、加载和显示图像、处理用户输入(如键盘和鼠标事件),大大简化了游戏开发的流程。
- 培养图形编程和动画设计能力,通过使用 pygame 库中的图形绘制函数和动画技术,能够创建丰富的视觉效果,如角色移动、物体碰撞效果等,提升对图形界面编程的理解和掌握程度。
- 激发创意和趣味性,为开发者提供了一个将创意转化为实际游戏的平台,在实践中学习编程,提高学习的积极性和主动性。
selenium 测试
- 实现自动化网页测试,模拟用户在浏览器中的操作,如点击按钮、填写表单、导航页面等,能够快速、准确地检测网页功能是否正常,提高测试效率和覆盖率。
- 保证软件质量,通过自动化测试,可以及时发现网页应用中的缺陷和问题,确保在不同浏览器和环境下的兼容性,减少因人为测试不全面而导致的线上故障。
- 支持持续集成和持续交付(CI/CD)流程,方便与其他测试工具和开发流程集成,使得软件在每次代码更新后都能自动进行测试,确保软件的稳定性和可靠性。
github 仓库的使用
- 进行版本控制,记录代码的修改历史,方便回溯到任意版本,能够有效管理代码的变更,避免因代码修改而导致的混乱和错误,同时也便于团队成员之间的协作开发。
- 促进团队协作,团队成员可以方便地共享代码、提交自己的修改,并通过拉取请求(Pull Request)进行代码审查和合并,提高团队协作的效率和透明度。
- 展示项目成果和个人技术能力,将项目代码托管在 github 上,可以向他人展示自己的项目成果,同时也有助于建立个人的技术影响力。
2.3 技术之外,这门课程还给你带来了哪些方面的提升?
-
团队协作与沟通能力
- 协作意识:通过参与团队项目,我深刻理解了团队合作的重要性,明白自己在项目中的角色和职责,学会相互依赖、相互支持,共同完成项目目标。
- 沟通技巧:在与团队成员交流过程中,我需要清晰地表达自己的想法和观点,同时也要善于倾听他人的意见和建议,不断锻炼自己的口头和书面沟通能力,避免误解,确保信息准确传递。
- 冲突解决:在团队合作中难免会遇到意见分歧和冲突,课程给我提供了实践机会,让我学会如何以积极的态度面对冲突,通过协商、妥协等方式解决问题,维护团队和谐。
问题解决与分析能力
- 复杂问题应对:在软件工程实践中,我会遇到各种各样的问题,如系统架构设计不合理、代码出现难以排查的漏洞等。通过不断解决这些复杂问题,我学会从多个角度分析问题,梳理问题的关键所在,找到最优解决方案。
- 创新思维培养:为了克服项目中的困难和挑战,我需要不断尝试新的方法和思路,培养创新思维,突破传统思维模式的限制,提出独特的解决方案,提升软件的性能和质量。
- 经验积累与反思:每解决一个问题都是一次经验的积累,课程促使我对解决问题的过程进行反思,总结成功的经验和失败的教训,以便在未来遇到类似问题时能够更加迅速、有效地解决。
项目管理与规划能力
- 项目规划制定:我了解了软件项目的整个生命周期,学会制定详细的项目计划,包括需求分析、设计、开发、测试、部署等各个阶段的时间安排和任务分配,确保项目有条不紊地进行。
- 经验积累与反思:在项目实施过程中,我掌握如何跟踪项目进度,及时发现进度偏差并采取相应的措施进行调整,保证项目按时交付,提高时间管理能力和对项目的掌控能力。
- 资源协调与分配:我会合理分配项目中的人力、物力等资源,根据团队成员的技能和特长安排合适的任务,确保资源的高效利用,同时学会在资源有限的情况下进行优化配置。
自我学习与持续进步能力
- 知识更新意识:软件工程领域技术更新换代迅速,通过这门课程,我更加敏锐地意识到不断学习新知识、新技能的重要性,养成主动关注行业动态和技术发展趋势的习惯。
- 自主学习方法:在课程学习和项目实践中,我会遇到许多未曾接触过的知识和技术,需要自己寻找学习资源,制定学习计划,通过自主学习掌握所需的知识和技能,培养独立学习和解决问题的能力。
- 适应变化能力:软件项目需求往往会随着时间和用户反馈而不断变化,课程要求我能够灵活应对这些变化,及时调整项目计划和技术方案,不断优化软件产品,提升适应变化的能力和心理韧性。
职业素养与规范意识
- 代码规范与质量:我会强调遵循代码规范和编写高质量的代码,注重代码的可读性、可维护性和可扩展性,培养良好的编程习惯,这对于我未来从事软件开发工作至关重要,能够提高代码的质量和工作效率。
- 文档撰写能力:我认识到文档在软件工程中的重要性,学会撰写需求文档、设计文档、测试文档等各类文档,提高文档撰写的准确性和规范性,为项目的顺利进行和后续维护提供有力保障。
- 职业态度与责任感:我对待项目任务要有认真负责的态度,按时、高质量地完成自己的工作,培养强烈的职业责任感,树立正确的职业价值观,为今后进入职场做好准备。
软件工程课程不仅仅是技术的学习,更是综合素质的全面提升,为我未来的职业发展和个人成长奠定了坚实的基础。
2.4 如果还有什么想记录的或者想说的,就写在这儿吧!
- 说实话,在开启这门课之前,我认为开发软件仅仅只需要写写代码就够了,在学习了这门课之后我才知道原来软件开发还有这么多学问,给我思维上来了个”依赖倒置“,而且这门课的作业量有点大hhh ,不过收获颇丰,这门课大概是最接近以后的工作的,其中也有很重要的一点,这门课让我认识到了我在技术上还有许多的不足,离自己独立开发项目还有些距离,路漫漫其修远兮。
- 同时,虽然软件工程这门课有时弄得我心力交瘁,但结束之后还是感觉非常有价值的,写这篇博客的时候感慨万分,无数回忆涌现在脑海之中,这门课应该会成为我大学生涯最难忘的课之一。
三、致谢
- 感谢CCTV,感谢CNTV,感谢我的父母,也感谢老师(如果能捞一下我就更感谢了),最后感谢我的团队成员们,爱你们^^
======================================================================================