软件工程实践总结——也是结束也是开始

222000201鲍仁俊 学生 2023-06-07 01:32:16
这个作业属于哪个课程2023年福大-软件工程实践-W班
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标个人回顾总结,技术总结
其他参考文献

目录

  • 1.第一部分:课程回顾与总结
  • 1.1 五个阶段中,每个阶段收获最大的知识或能力是什么?
  • 1.1.1 需求
  • 1.1.2 设计
  • 1.1.3 实现
  • 1.1.4 测试
  • 1.1.5 发布阶段
  • 1.2 结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得
  • 1.2.1 个人项目
  • 1.2.2 结对编程
  • 1.2.3 团队项目
  • 1.3.自我评估对通过课程的学习,对各个课程目标的掌握程度,并作出解释
  • 1.4.回顾自己思考过的5个问题
  • 1.4.1 问题博客链接
  • 1.4.2 曾经的5个问题再一次思考
  • 1.4.3 提出的新问题
  • 2. 第二部分:个人技术总结

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

1.1 五个阶段中,每个阶段收获最大的知识或能力是什么?

1.1.1 需求

  在这一阶段的重点是了解客户的需求和期望,收获是掌握需求分析的方法和技巧,能够准确地表达客户的需求,构建需求分析模型。其中,最重要和有价值的是学会了NABCD分析模型。

1.1.2 设计

  在设计阶段,重点是根据需求分析结果,设计软件系统的体系结构、数据模型和构件级设计模型,收获是掌握软件设计的方法和原则,能够规范、准确地表达设计方案,以及根据团队其他成员的建议修改完善自己的设计。

1.1.3 实现

  在实现阶段,重点是根据设计方案,编写代码并进行测试,收获是掌握编程语言和开发工具的使用,能够编写高质量、可维护的代码。也在实现的过程中学会要考虑代码后续的扩充以及注释的地方和注释的格式以便其他成员阅读。

1.1.4 测试

  在测试阶段,重点是对软件系统进行测试和调试,收获是掌握测试方法和技巧,能够发现和修复软件系统中的缺陷和错误。

1.1.5 发布阶段

  在发布阶段,重点是将软件系统交付并进行维护和更新,收获是掌握软件发布和维护的方法和技巧,能够保证软件系统的稳定性和可靠性。最重要的是熟悉了GIT来管理项目。

1.2 结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得

1.2.1 个人项目

  根据澳网那次作业,我学会了爬取数据和独立分析的能力,也是第一次使用PSP表格来计算预期的时间。后来发现自己的预期都不是特别的准确。作业讲究格式要特别的规范,所以挺考量细节的处理,以及边界值的一些测试。由于感觉刚开学时间也比较的紧,所以最后在跑测试点的时候部分测试点没有通过。

1.2.2 结对编程

  结对编程开始有了合作,需要和队友交流沟通。但是有些时候由于审美和技术能力的差异,对一个功能的实现会有不同的想法,也就会产生分歧。这时候就很需要交流根据分析探讨选出合适的方案达成一致。不过对于开发水平的差异,如何分配工作任务有点困难,不过最后在原型设计和编码实现上都还算顺利。

1.2.3 团队项目

  作为组长,对于如此多人的团队开发,我几乎没有经验,也很担心自己做决策会失败。所以我才用的都是小组大家一起讨论共同商讨重大关键的问题的决策。遇到什么变化都在群里及时交流。平时,我也特别关注群内的消息,担心因为没注意一些重要的内容导致组员的进度收到影响。那么在不断地尝试中,我的组织能力得到了一定的提升,但是这也少不了组员们的帮助,我觉得我们组有个很好的地方就是大家都特别的积极,所以项目的进展都比较的顺利,沟通也比较的频繁,交流的氛围浓厚,大家都愿意说不会担心自己的建议会被他人批评等。我们也都很包容,哪怕有些问题很小我们也不会吐槽或者指责。除了团队项目,在答辩方面我也有很大的进步。以前我不是很擅长露面答辩,我会担心各种状况的出现,可是当了组长就不得不多次亲自上台答辩,这锻炼了我的胆量也锻炼了我的思考能力和应答能力。我觉得这期实践课团队项目对我的帮助特别大,受益匪浅。

1.3.自我评估对通过课程的学习,对各个课程目标的掌握程度,并作出解释

目标内容解释掌握程度(100分)
目标1理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。通过本次课程的学习,我对软件工程师的职业道德规范和实践要求有了更深入的了解,也了解到软件产品对社会、健康文化等方面的影响。同时,我也意识到了积极向上的软件开发理念的重要性,因此我会在今后的工作中更加注重职业道德和社会责任。90分
目标2掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。在本次课程中,我学习了需求分析的全过程,了解了如何辨别客户表述的多样化要求,以及如何规范、准确地表达客户的需求。但是,我在实践中还需要进一步提高自己的能力,更好地应对不同的需求分析场景。85分
目标3掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。通过本次课程的学习,我了解了软件开发的全过程,以及体系结构设计方法和基本设计原则。但是,在实践中我还需要进一步提高自己的能力,更好地应对复杂的软件开发项目。80分
目标4能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。在本次课程中,我学习了从组件到软件系统的技术评测方法,以及如何优选设计方案。但是,在实践中我还需要进一步提高自己的能力,更好地应对不同的评测场景。80分
目标5遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。通过本次课程的学习,我掌握了需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,并具备与业界同行交流的能力。但是,在实践中我还需要进一步提高自己的文档撰写和表达能力。90分
目标6具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。在本次课程中,我学习了团队合作和沟通的重要性,并具备了一定的团队协作能力。但是,在实践中我还需要进一步提高自己的沟通和协作能力,更好地与团队成员协作完成项目。85分
目标7能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。通过本次课程的学习,我了解了软件项目管理中涉及的构成要素,以及软件规模和工作量的估算方法。但是,在实践中我还需要进一步提高自己的项目管理能力,更好地管理复杂的软件工程项目。80分

1.4.回顾自己思考过的5个问题

1.4.1 问题博客链接

问题思考博客

1.4.2 曾经的5个问题再一次思考

① Q:程序员是否有必要为满足小部分人的需求去做软件,或者为软件添加某些功能?
A:作为程序员,我们的首要任务是满足客户的需求,而客户的需求通常是由市场需求和用户需求两部分组成。市场需求是指市场上的需求趋势和竞争对手的产品特点等,而用户需求是指用户对产品的具体需求和期望。因此,我们需要根据市场和用户需求来确定软件的功能和特点,以便满足客户的需求。然而,对于一些小部分人的需求或者某些特定功能的添加,我们需要进行权衡和评估 。如果这些需求或功能对于客户的满意度和产品的竞争力有重要影响,那么我们应该考虑满足这些需求或添加这些功能。但是,如果这些需求或功能对于客户的满意度和产品的竞争力没有重要影响,或者会增加开发成本和维护成本,那么我们可以考虑不满足这些需求或不添加这些功能。因此,作为程序员,我们需要根据客户的需求和市场趋势来确定软件的功能和特点,同时需要进行权衡和评估,以便在满足客户需求的同时,保证软件的质量和竞争力。


② Q:如何区分一个好的程序员和不好的程序员呢?
A:在过去我判断一个程序员好坏的角度全是从个人出发的,然而现在看来,这样子并不是很可靠的判断。因为未来开发中大多数情况下都是以团体的方式开发。因此除了良好的编码能力、设计能力、学习能力以及好的代码风格和规范,一个好的程序员还需要具备良好的团队合作能力,能够与团队成员协作完成项目,能够有效地沟通和协调,能够尊重他人的意见和建议,并且还重视注重代码质量和测试。


③ Q:代码量与个人的编码能力有直接关系吗?
A:代码量与个人的编码能力并没有直接关系。编码能力是指程序员在编写代码时所表现出来的技能和能力,包括代码的质量、可读性、可维护性、可扩展性等方面。而代码量只是指程序员编写的代码的数量。一个程序员的编码能力不仅取决于他编写的代码的数量,还取决于他编写的代码的质量和效率。一个优秀的程序员可以通过精简代码、重用代码、优化算法等方式来减少代码量,同时提高代码的质量和效率。因此,代码量并不能直接反映一个程序员的编码能力。一个程序员的编码能力应该通过他编写的代码的质量、可读性、可维护性、可扩展性等方面来评估。


④ Q:学完了这些理论知识后很久的一段时间都用不上,那么学习那么多的理论知识还有没有用呢,在理论知识和实践知识的方面我们又该怎么权衡呢?
A:学习理论知识和实践知识都是非常重要的,它们是相辅相成的。理论知识可以帮助我们建立起系统化的知识体系,理解软件开发的基本原理和方法,从而更好地应对各种问题和挑战。而实践知识则可以帮助我们将理论知识应用到实际项目中,锻炼我们的实际操作能力和解决问题的能力。在学习理论知识和实践知识时,我们需要进行权衡。理论知识可以帮助我们更好地理解软件开发的基本原理和方法,但是如果只停留在理论层面,缺乏实践经验,那么我们可能无法应对实际项目中的各种问题和挑战。因此,我们需要通过实践来巩固和应用所学的理论知识。另一方面,实践知识可以帮助我们锻炼实际操作能力和解决问题的能力,但是如果缺乏理论知识的指导,我们可能会陷入盲目的实践中,无法理解问题的本质和解决问题的根本。因此,我们需要通过学习理论知识来指导和优化实践过程。


⑤ Q:应该在什么时候使用goto?
A:这个我依然保持和以前那样的想法,我们应该尽量避免使用goto语句,而是使用结构化编程语句(如if、while、for等)来实现程序的控制流程。在大多数情况下,我们应该使用结构化编程语句来实现程序的控制流程,以提高代码的可读性、可维护性和可靠性。 因为加密中有叫做GOTO加密方式的,因此GOTO会降低可读性。

1.4.3 提出的新问题

① Q:在团队中,如果技术参差不齐甚至有一些队员的技术水平比较低,在这种情况下如何分配任务才能既满足团队的需要又能让组员得到个人发展?
② Q:在时间特别短的情况下如何快速合理的分配任务并能够完成文档和构建的任务?

2. 第二部分:个人技术总结

个人技术总结——Ajax的使用和JS与PHP的结合编写
概述:jQuery的Ajax技术是用于在不刷新整个页面的情况下,通过异步请求从服务器获取数据并更新页面的技术。在需要动态更新页面内容的情况下,可以使用Ajax技术。学习该技术的原因是为了提高网站的用户体验和性能。Ajax技术的难点在于需要处理异步请求和响应的过程,以及如何处理请求失败和超时等异常情况。以及PHP部分与JS相结合的注意点。

...全文
311 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
助教-张思锐 2023-06-15
  • 打赏
  • 举报
回复

作为组长,你觉得在统领组员的过程中最大的困难是什么?

SoftwareTeacher 2023-06-14
  • 打赏
  • 举报
回复

② Q:在时间特别短的情况下如何快速合理的分配任务并能够完成文档和构建的任务?

这个学期并不短,有 14 周, 凡事预则立,不预则废。

SoftwareTeacher 2023-06-14
  • 打赏
  • 举报
回复

① Q:在团队中,如果技术参差不齐甚至有一些队员的技术水平比较低,在这种情况下如何分配任务才能既满足团队的需要又能让组员得到个人发展?

如果是班级足球队,有几个技术水平低的成员, 你怎么办? 那就让这些成员尽快提高体能和技能啊。 难道宠着他们么? 幸运的是,软件开发的很多技能,资料都很多,都可以很快地学会。 前提是:愿意付出努力来学。

② Q:在时间特别短的情况下如何快速合理的分配任务并能够完成文档和构建的任务?

686

社区成员

发帖
与我相关
我的任务
社区描述
2023年福州大学软件工程实践课程W班的教学社区
软件工程团队开发软件构建 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • aboutazhang
  • 郭渊伟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧