这个作业属于哪个课程 | 软件工程实践-2023学年-W班 |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 课程回顾与总结、个人技术总结 |
一、课程回顾与总结
1.1以前问题思考的链接以及再次解答
再次解答
问题1花费时间越多,代表工作量越高吗?
回答 在理论上,如果工作效率能够保持相等,那么花费的时间越多,通常意味着完成的工作量也会越高。然而,在实际情况中,这一观点并不总是成立。首先,每个人的技术水平和工作效率都是不同的。有的人可能由于技术熟练或工作方法高效,能够在较短的时间内完成大量的工作,而另一些人可能需要更长的时间来完成相同的工作量。其次,长时间连续工作可能会导致疲劳和热情下降,这会降低工作效率。当一个人一直连续花费大量时间在某个项目上时,可能会感到疲惫和缺乏动力,从而影响到工作的质量和效率。比如这次团队作业,虽然我也花费了很多时间但是我并不觉得自己的工作量随着花费的时间而增加。
问题2代码量与个人的编码能力有直接关系吗?
回答 代码量与个人的编码能力有一定关系,但这种关系并非适用于所有情况。在考虑实际有效的代码量时,代码量的积累可以在一定程度上反映个人在编程实践中的投入和经验。精通一门编程语言往往需要大量的实践,而实践过程中必然会产生代码量。因此,代码量的提高通常伴随着个人编程能力的提升。然而,两个代码量不一样的人,并不能直接断定代码量多的人编码能力就一定高。因为代码量只是衡量编程经验的一个方面,而非唯一标准。编码能力还受到多种因素的影响,如编程思维、算法设计、代码质量、问题解决能力等。如果要判断一个人的编码能力需要更多维度的考虑。
问题3为什么要在大学中只用一学期软件工程,时间够吗?
回答 对于软件工程的理论学习大概是够的,可以了解软件开发的大致流程;但是这门课更多的意义在于实践,如果对于软件工程的实践来说不太够。软件工程的实践更贴近实际工作中项目的开发,用一学期模拟实际工作中项目的开发不太够,而且与直接去企业实习相比效果也不好。本身我们专业就已经提供了校内自选企业实习,但是又有这软件工程实践,这样显得有点重复,而且这个软件工程实践仅仅用一个学期,时间不够且效果一般。这个软件工程实践又占用了这个大三下一大部分时间,对不管是想考研的同学还是想直接就业的同学都带来了一定困扰。我觉得最好是把这个软件工程放到之前的学期,而不是放在大三下这个关键节点上,这样也有利于增加学时进行更好地教学。
问题4如何区分一个好的程序员和不好的程序员呢?
回答要区分一个好的程序员和不好的程序员,除了代码量等可量化指标外,更重要的是评估其技术能力、解决问题的能力、业务理解力以及学习态度等多方面因素。比如一个好的程序员在遇到bug时能够迅速定位问题,提出合理的解决方案,并具备独立debug的能力。他们能够快速理解新项目的代码逻辑,这得益于对编程语言和业务逻辑的深入理解。此外,好的程序员保持对新知识和技术的热情,做到终身学习,在工作的同时不断学习和提升自己的技能。
问题5AI辅助编程,是一个银弹么?
回答AI辅助编程并不是银弹,至少短期内不会是,它为软件开发带来了显著的便利。它可以提高程序员的工作效率,减轻重复和枯燥的工作负担,从而有助于降低软件的开发成本。然而,未来它是否成为对软件工程师职位的一颗银弹尚需进一步观察。总的来说,AI为编程带来了便利,但并非解决所有问题的万能钥匙。
1.2项目各阶段的收获
需求阶段:
- 需求分析能力:学会将模糊的、非技术性的需求转化为明确、可执行的软件功能。
设计阶段
- 系统设计能力:掌握如何根据需求设计合理的系统架构、模块划分和接口定义。
- 技术选型能力:根据项目的特性和约束,选择合适的技术栈、框架和工具。
实现阶段
- 编程能力:通过实践提升编程技能,包括代码编写、调试和性能优化,通过实践也学会了如何使用框架做项目,编程能力得到提高。
- 团队协作能力:在多人协作的环境中,学会代码管理、版本控制和合并冲突。
测试阶段
- 测试策略制定:了解如何根据项目的需求和特性制定有效的测试计划和策略。
发布阶段
- 风险管理能力:在发布过程中,学会识别潜在的风险,并制定相应的应对策略。比如对在网站登录时,对输入信息的检查等。
1.3个人理解和心得
个人项目
学习了爬取网站json数据,和对json数据的处理,为之后的结对编程和团队项目打好了基础。然后了解了gitcode代码仓库的使用,但是这个对于个人项目来说其实意义不是很大,但是对之后的结对编程和团队项目是有很大帮助的,通过个人项目我了解了软件开发的大概流程。
结对编程
在结对编程中学习了如何设计原型,再从设计的原型完成一个网页的开发,这模拟了一个实际项目中的开发流程,对之后的学习和工作都有帮助。并且在这个环节中学会了如何和队友进行沟通交流并共同开发一个项目;此外,在结对编程中实际地运用了gitcode代码仓库,也解决了gitcode代码仓库中共同修改一个文件的覆盖问题,是一次很宝贵的经验。
团队项目
在团队项目中,每个人各司其职,我在这个项目中担任前端的职位,我学会了如何与后端接口进行对接和如何进行团队沟通。在团队项目开发过程中遇到技术难关时,通过团队讨论和查找资料进行解决,这样提升了我的交流沟通能力,对未来的学习和工作也很有帮助。通过团队项目,我也充分感受到了在团队开发项目中及时有效地沟通的重要性。
1.4自我评估
目标 | 得分 | 解释 |
---|---|---|
目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。 | 95 | 我充分了解软件工程师的职业道德规范,并在实际开发中遵守了相应的道德规范,并且我们的团队项目对用户的隐私也做到了有效保护 |
目标2: 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 | 86 | 总体来说我做到了熟练使用需求表达工具,能够规范、准确地表达客户的需求,但是在开发过程中计划赶不上变化快,很多的需求在开发之初并没有意识到,我也尽可能的进行了修改 |
目标3: 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 | 82 | 对软件开发的全过程有一定了解,可以完成从设计到实现的过程,但是仍需要在之后的实践中继续锻炼 |
目标4: 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 | 90 | 我具备设计模型的评判能力,并且可以对我的代码提供多种优化方案,这个在技术总结中也有体现,但是创新设计意识还有所欠缺 |
目标5: 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。 | 92 | 我很好地遵循软件开发各阶段文档标准,并且在团队实践中锻炼了小组之内的沟通协商能力,具有不错的交流能力 |
目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 | 88 | 我有良好的团队意识和合作技能,对gitcode仓库的运用也较为熟练,与成员之前的沟通协作有都是否高效和有效,但由于我并不担任组长职位,所以并没有能够组织、协调或指挥团队开展工作 |
目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 | 83 | 我们团队用了一些线上文档来同步管理项目进度,并且也有积极有效地继续沟通,具有一定的管理复杂软件工程项目的能力 |