软件工程实践总结──忆往昔

222100418张星航 2024-06-01 00:26:49
这个作业属于哪个课程软件工程实践-2023学年-W班
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标课程的回顾与总结,个人技术的总结
其他参考文献《构建之法》

@

目录

  • 一、课程回顾与总结
  • 1.1 以前问题思考的博客链接
  • 1.2 再次思考
  • 1.3 新的问题
  • 1.4 每个阶段的收获
  • 1.4.1 需求分析阶段
  • 1.4.2 设计阶段
  • 1.4.3 实现阶段
  • 1.4.4 测试阶段
  • 1.4.5 发布阶段
  • 1.5 心得体会
  • 1.6 自我评估
  • 二、个人技术总结

一、课程回顾与总结

1.1 以前问题思考的博客链接

以前问题思考的博客链接

1.2 再次思考

Q1:为什么要在大学中只用一学期软件工程,时间够吗?

在大学中只学习一学期的软件工程是相对较短的时间,在这一学期有限的时间内,学生们能够了解到软件开发的基本原理和方法,学会基本的软件工程知识和技能,为未来的学习工作打下坚实的基础。但软件工程是一个复杂而广泛的学科领域,涵盖多个方面。如果仅仅依靠这一个学期的学习,是远远不够的。在课程结束后我们仍然需要通过不断地自学、查阅资料或者请教相关前辈进一步深度学习,掌握专业技能。正所谓:学无止境。

Q2:如何让自己能够跟上软件工程发展,做一个永不落伍的开发者呢?

1 .作为开发者,我们要不断保持学习,学无止境,坚持活到老学到老。因为软件工程领域每天都在不断地更新和演变,新技术与新工具层出不穷。只有持续学习,我们才能掌握这些新鲜事物,更好地为我们所用,提高开发效率。在平时空闲时可以阅读相关博客、参加培训课程、交流会等,让自己保持与行业最新动态的接触。
2.丰富自己的实践经验。通过参与实际项目,了解软件开发的各个流程,包括需求分析、设计、编码、测试、部署等,促进开发者不断学习和成长。同时开发者需要注重代码的可读性、可维护性、可扩展性等方面,遵循代码规范,确保代码的质量和效率。
3.加强团队协作和沟通能力。软件工程往往是一个团队协作的过程,作为一名开发者需要具备良好的团队协作能力和交流沟通能力。通过积极参与团队讨论、分享经验和知识、提供建议和解决方案等方式,促进团队协作和提升团队效率。
4.不断反思和总结。通过反思自己的工作,可以发现自己的不足和需要改进的地方,以便更好地提升自己的技术水平,避免类似问题再次发生,还可以提高自己解决问题的能力。

Q3:程序员是否有必要为满足小部分人的需求去做软件,或者为软件添加某些功能?

1.商业价值:如果这部分小众需求能够迎合一个具有商业价值的市场,满足这些需求可能会带来可观的收益,那么考虑满足这些需求是有商业意义的。
2.技术可行性:如果实现这些需求需要对现有架构进行大规模的改动,或者引入复杂的技术难题,那么可能需要重新评估其可行性。
3.未来可扩展性:在考虑是否满足小众需求时,还需要考虑这些功能在未来是否容易扩展和维护。如果添加的功能在未来可能成为负担,或者难以与其他系统集成,那么可能需要重新考虑。
4.用户需求和价值:评估用户需求的重要性和广泛性。如果满足这些需求只会给少数人带来价值,并且对于大多数用户来说并不重要,那么可能不值得投入时间和资源。

Q4:软件的行为和用户的期望值不一样,就一定是 Bug 吗?

不一定。
1.用户误解或错误操作:用户可能没有正确理解软件的功能或操作方式,从而产生了错误的期望。这种情况下,问题并不在于软件本身,而是用户的使用方式或理解有误。
2.用户需求不明确或变化:在软件开发过程中,用户需求可能会发生变化或不明确,导致开发团队对用户的期望有误解。这种情况下,软件的行为可能与用户的期望不一致。
3.存在Bug:如果是 Bug,开发团队将需要识别、修复和测试这些问题。

Q5:顾客真的知道他们想要什么吗?

我觉得顾客并不总是完全知道自己想要什么。
知识限制与沟通障碍:大部分顾客可能不完全了解软件开发的相关过程,可能无法准确描述自己想要的功能。他们只能基于自己的经验和需求给出大致的期望,其中他们使用的行话、专业术语或者模糊的描述,这可能导致开发团队对需求的理解产生偏差。因此具体的实现细节需要与开发团队进行进一步的沟通和交流并不断调整。

1.3 新的问题

Q1:对于一名工程师而言,究竟应该是更”专“一点好,还是更”广“一点好呢?

由于在开发过程中,岗位时常会发生变动。因此程序员所扮演的角色也会变得有所不同。我认为作为一名程序员应该要专精于某一方面,以广为辅,各种技能都涉猎一二。如果没有在某个方向专精,是很难在当前动荡的行业中生存下来的;如果没有各种技能都略知一二,一旦发生特殊情况,程序员将会很难适应新的变化。因此应该以专为主,以广为辅。

1.4 每个阶段的收获

1.4.1 需求分析阶段

  • 首先通过NACBD将用户需求进行分析,了解用户真正需要什么。
  • 在了解了项目需求之后,就要进行需求分析和规格说明书的编写。后续开发都要围绕该说明书展开。

    1.4.2 设计阶段

  • 在设计阶段我的最大收获就是学会使用axure进行原型的设计。在没接触原型设计之前,自己根本不知道还有这种工具,可以快速给用户展现产品的大致概况。
  • 其次学以致用,将之前在面向对象与程序设计课上学到的UML图(用例图、类图、对象图、状态图、顺序图)运用到项目中去,使设计更加易于理解沟通。
  • 再者就是数据库设计和接口,这部分的设计尤为重要,一个合理的数据库设计和接口设计会为后续的开发省下很多时间(亲身经历,前端人员一定要提前与后端人员沟通好接口的设计)。

    1.4.3 实现阶段

  • 在这几次的实践中,我的角色是前端开发人员。
  • 在实现阶段我收获最大的就是我学会了vue框架+element-plus+axios的配合开发。从一开始手忙脚乱不知道如何做起,从后来一步步稳扎稳打,行云流水地使用vue。我对vue框架的开发又有了进一步的认识和理解。

    1.4.4 测试阶段

  • 学会了测试的基本策略和方法:包括单元测试、集成测试和系统测试等,以确保软件的质量和稳定性。
  • 借助工具调试和软件测试:学习使用一些测试工具分析、解决和测试软件中的问题和错误,进行故障排查。

    1.4.5 发布阶段

  • 软件部署:学习了如何有效地部署软件到服务器上。
  • 维护与管理:收集用户的使用反馈并进行问题解决,进行软件的更新和维护,以带给用户更好的使用体验。

1.5 心得体会

个人项目:

  • 在个人项目中自己需要担当多个角色:项目需求、设计、开发、测试等。这将会使得自己的个人能力充分得到锻炼。
  • 由于没有团队成员的帮助,自己必须独立解决所有遇到的问题。这锻炼了我的问题解决能力和独立思考能力,让我在面对困难时更加冷静和自信。
  • 个人项目中自己可以根据自己的实际情况进行项目的开发,时间与优先级等相对自由,没那么多约束。

结对项目:

  • 在结对项目中自己感觉找到了一个共同战斗的伙伴。我与队友的结对实践过程还是比较顺利的。基本上做项目都会进行沟通和交流,在意见不合时彼此也会相互斟酌,选择比较折中的方案。但是队友有点过于完美主义,导致在每次任务基本完成后,队友仍然想要进行部分修改,加剧了彼此的工作量。
  • 在结对作业中,队友确实比我优异,帮了我很多忙(彼时的我还不懂前后端对接等)。在做完后端后,来帮我进行了前后端的对接工作,心里非常的感谢她。
  • 想要做好一件事需要俩个人一起互相沟通,互帮互助,才能实现共赢。

团队项目:

  • 团队项目中有人担当了项目管理者的身份,使得整个开发井然有序。在每次作业发布后,管理者发布各个任务,自己可以根据自己的实际情况认领自己的工作,并在规定时间提交任务。
  • 也正是在这个团队实践中,我感觉自己有了质和量的进步。如果没有这次实践,自己根本不会了解到软件的开发过程竟然有这么多步骤。也是在这次实践中,我学会了vue框架+element-plus+axios的配合开发,学到了前端开发的一项新技能。
  • 团队合作都不可避免需要进行人员之间的沟通和交流。例如与一起做原型设计的同学交流界面的设计细节,与后端人员沟通接口的设计等。有效、清晰的交流沟通会给整个团队开发带来许多好处。

1.6 自我评估

目标掌握程度解释
目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。100%我明白身为工程师职业道德规范的重要性,了解国情社情民情,设计的软件应该对社会产生积极的影响。
目标2: 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。85%基本掌握需分析的全过程,但有时可能无法准确表达出用户的部分需求。
目标3: 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。90%整个开发过程我都基本参与,部分体系结构设计和数据库设计我都亲自设计,但还不是非常熟练。
目标4: 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。75%在技术评测方面,由于我主要负责前端界面的编写,,对于从组件到系统的评测没怎么涉及。但具有创新设计意识,能够优选设计方案。
目标5: 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。90%基本能够采用规范的表达进行API文档的撰写,具备与业界同行交流的能力
目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。95%我在团队中经常给出自己的意见,并与队员们沟通。与其他成员能够展开有效的沟通与合作。
目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。75%能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,但对于配置不太熟练。

二、个人技术总结

axios的使用总结
技术概述:

axios是一个流行的基于Promise的HTTP客户端,用于在浏览器和Node.js中发送HTTP请求。它通常用于从服务器获取数据或将数据发送到服务器。学习axios的原因在于它简单易用、功能强大且支持浏览器和Node.js环境,可以轻松处理异步请求。技术的难点在于对Promise的理解和处理,以及对HTTP请求和响应的处理。

...全文
254 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

310

社区成员

发帖
与我相关
我的任务
社区描述
福州大学的软件工程实践-2023学年-W班
软件工程需求分析结对编程 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • Pity·Monster
  • 助教张富源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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