310
社区成员




这个作业属于哪个课程 | 软件工程实践-2023学年-W班 |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 课程回顾与总结&个人技术总结 |
其他参考文献 | ... |
通常情况下,编写更多的代码可以帮助开发者积累经验,熟悉编程语言特性、设计模式、算法应用等,从而提升编码能力。在这个意义上,代码量的增加与编码能力的提升有一定的正相关。
但单纯追求数量而不注重代码质量,可能不会有效提升编码能力。高质量的代码往往体现在良好的可读性、可维护性、高效执行等方面,这些能力的培养需要通过精心设计和重构实践来达成,而不是简单地堆砌代码行数。
编码能力还包括对技术的深入理解和广泛涉猎。一个人可能写了大量的某一类型项目的代码,但如果没有涉及其他领域或技术栈,其编码能力的全面性可能会受限。因此,代码量反映的主要是实践量,而编码能力还包含了理论知识、问题解决技巧、创新思维等多个维度。
虽然代码量可以在一定程度上反映一个人的编程经验,但编码能力的高低更多地取决于代码的质量、技术的深度与广度、解决问题的能力以及持续学习的态度等因素。因此,不应简单地将代码量视为衡量编码能力的唯一标准。
虽然很多资料可以通过网络获取,但老师在课堂上讲解的内容往往更为系统、深入,并且能够结合实际案例、最新研究动态等,帮助你更好地理解和掌握知识点。
且课堂是即时交流的场所,你可以直接向老师提问,与其他同学讨论,这种互动有助于澄清疑惑、激发思考,是自学难以比拟的优势。相比自己阅读教材或看视频,课堂听讲往往更加高效。老师会突出重点难点,帮助你快速抓住核心内容,避免在非重点上浪费时间。
计算机科学与软件工程在就业市场上各有其独特的优势,而不是一方完全优于另一方。
计算机科学的优势在于专业学生通常有更扎实的数学和理论基础,这使得他们在算法设计、数据结构、系统架构等领域有较强竞争力。且由于专业覆盖范围广泛,学生可以涉足软件开发之外的领域,如人工智能、网络安全、系统管理、嵌入式系统、数据分析等。
而软件工程的优势则在于专业更侧重于软件开发的实践技能和项目管理,学生通常有更多实际开发经验,这对企业级软件开发尤为重要。课程设计往往更贴近市场需求,特别是在软件开发、项目管理、质量保证等方面,使得学生毕业后更容易适应企业环境。
工作量的高低往往与工作效率相联系,高效的人可能在较短时间内完成同样的工作量,而效率较低的人可能需要更长时间。
但除了工作效率还要考虑工作的复杂性,复杂的任务自然需要更多时间,但这并不意味着工作量按比例增加,因为难度增加可能更多体现在思考、规划和解决难题上,甚至是要花费时间去学习一些新的技术知识来解决问题。
bug终究是 bug,没有bug是该长期存在的,良性bug在未来也有可能转变为恶性bug,会突然引发系统故障、数据丢失或安全漏洞等问题。即使当前看来是良性的,也应考虑修复。
考虑bug的存在是否会影响系统的扩展性、维护性或未来升级。即使当下无害,但如果会阻碍系统的长远发展,还是应该修复。
从软件工程的最佳实践出发,保持代码的清晰和无误是基本原则。保留已知错误,即便它是“良性”的,也可能与软件开发的透明度原则相冲突,影响团队的开发文化和产品质量标准。
需求阶段:埋下了项目成功的种子,通过与利益相关者的深入交流,明确了产品愿景和用户需求,为后续工作确立了清晰的方向。这一阶段的重心在于理解与沟通,收获在于构建共识,确保所有参与者对目标有共同的理解。
设计阶段:整合了对软件需求的深入分析,转化为具体的技术实施方案。此阶段聚焦于构建软件的结构和布局,选定技术组件,细化组件间如何交互,并规划用户交互体验。同时,它涵盖识别和规划缓解项目开发中可能遇到的风险,以及编制详尽的设计文件来指导后续的编程工作。简而言之,设计阶段是将抽象需求转换为具体实施路径的过程,为软件项目的成功实施奠定坚实的基础。
实现阶段:将概念转化为现实的桥梁,技术选型、设计、编码等环节紧密相连,团队的技术实力和创新能力在此得到展现。编码不仅仅是实现功能,更是对前期设计思想的落地,以及团队协作精神的体现。此阶段的收获在于技术创新与团队合作能力的提升。
测试阶段:测试阶段扮演着质量把关者的角色,通过系统化的测试策略确保软件的稳定性、安全性及用户体验。这一过程中,团队学会了如何高效定位并解决问题,同时对软件质量有了更深刻的认识。收获在于提升了产品的可靠性,以及团队的质量意识和应急处理能力。
发布阶段:标志着产品面向公众的正式亮相,所有的努力汇聚成用户手中的成品。从部署到监控,再到收集反馈,这一阶段教会团队如何高效运维,以及如何基于用户反馈进行快速响应和迭代。收获在于市场反馈的真实检验,以及团队对产品生命周期管理的经验积累。
个人项目:当我首次踏入个人项目的领域时,我感到既兴奋又紧张。兴奋于能够从头到尾完整地负责一个项目,紧张于担心自己是否能够胜任。在项目的推进过程中,我经历了从混乱到有序,从迷茫到清晰的心路历程。当我看到自己的代码从一行行逐渐堆积成一个完整的程序时,那种成就感让我深感满足。
然而,个人项目也教会了我,软件开发并非一蹴而就。面对复杂的逻辑和不断出现的错误,我学会了耐心和坚持。每当解决一个难题,我都会感到一种难以言表的喜悦,这种喜悦来自于对知识的渴望和对挑战的征服。
结对项目:结对项目让我感受到团队的重要性,在一起交流解决问题的过程中,我感受到前所未有的工作效率,此外就是实践的重要性,很多不错的想法在实践的过程中才能知道其的弊端,只有经过实践检验的想法,才是真正的好想法。与搭档共同工作的过程中,我们互相学习、互相启发,共同解决问题。在合作中,我学会了倾听和尊重他人的意见,也学会了如何更好地与他人沟通和协作。
有时候,我们会因为某个问题而争论不休,但正是这些争论让我们更加深入地理解了问题,也让我们更加珍惜彼此之间的合作。每当看到我们共同完成的成果,我都会感到一种深深的满足和自豪。
团队项目:团队项目是我参与过的最具挑战性的项目。在团队项目中我曾担任过软件测试的工作,但在之后的换组后,我又担任了前端页面的开发工作,与团队成员共同完成了整个项目,这是一段难忘的历程,两个跨度较大的工作是困难的,但也给我带来了很大的收获。在团队中,我感受到了集体的力量和智慧。我们共同制定计划、分工合作、互相支持,每个人都在为项目的成功而努力。
在团队项目中,我学会了如何更好地发挥自己的优势,同时也学会了如何更好地与他人协作。我们共同面对挑战和困难,共同分享成功的喜悦。在这个过程中,我感受到了团队的力量和温暖,也深刻体会到了合作的重要性。
课程目标 | 掌握程度 (百分制) | 解释 |
---|---|---|
理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。 | 80 | 在本次在课程和实践中,我遵守软件工程师的职业道德规,充分理解国情社情民情,设计的软件应该对社会产生积极的影响。 |
掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 | 85 | 我学习和掌握了需求分析的全过程,能够准确了解用户的需求,并加以构建了需求分析模型。 |
掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 | 80 | 我掌握了软件开发的全部过程,能够完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 |
能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 | 85 | 在本次在课程和实践中,我能够执行技术评测,对组件也能够有较好的使用划分。 |
遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。 | 75 | 我掌握了软件开发各阶段文档标准,在开发过程中根据项目需求,选择适合的文档模板和格式。 |
具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 | 75 | 我积极和组员交流和协作,培养了良好的团队意识,但我更多的是被动接受任务。 |
能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 | 75 | 在本次在课程和实践中,我学习了软件项目管理的方法,但对于项目的整体的任务却没有清晰的认知,掌握了一些常用的软件规模和工作量的估算方法,能够对与自己相关的工作较好的估算出工作量。 |