122
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | 2302软件工程 |
|---|---|
| 这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
| 这个作业的目标 | 软件工程实践总结 |
| 其他参考文献 | 《构建之法》 |
Q1:程序员是否有必要为满足小部分人的需求去做软件,或者为软件添加某些功能?
A1:我仍然觉得,在不耽误整个项目进度和完成度的前提下,有必要为了满足小部分人的需求增加某些功能。从市场定位和长期规划看,满足特定用户群体的需求可以提高用户满意度和忠诚度,这有助于建立一个积极的用户社区和口碑,有助于提高产品的竞争力和吸引力。当然了,在实际操作时,还要先考虑公司或团队需要评估资源是否充足,是否能够同时支持核心功能的开发和维护以及新功能的添加。
Q2:软件开发是年轻人的饭碗,吃的是青春饭?那年纪大的程序员经验丰富但是快速学习能力拼不过年轻程序员的时候该怎么办呢?
A2:经过实践,我坚信,年纪大的程序员拥有的丰富经验在整个软件开发中尤为重要。在个人和团队开发中,我认识到,软件开发是一个需要广泛技能和经验的行业,包括但不限于编程技能、项目管理、沟通能力、解决问题的能力等。年纪大的程序员在团队分工、团队合作、个人技术、问题解决等方面的处理更为熟练,工作效率更高,综合工作能力更强。因此,我认为,年纪大的程序员不应该担心自己的快速学习能力不如年轻人,而应该利用自己的经验和知识来构建自己的竞争优势。在软件开发领域,经验和智慧同样重要,而且随着时间的推移,这些价值往往会变得更加显著。
Q3:软件的行为和用户的期望值不一样,就一定是 Bug 吗?
A3:不一定,这种情况也可能是因为软件的需求文档不清晰或不完整,或软件可能在更新后改变了某些行为。举个相似的例子,我在团队开发与后端人员沟通合作的时候也有过这种情况,对方实现的接口功能与我期望的不大一致,有时候是因为对方程序中出现bug,更多的情况是我们的软件需求文档不够清晰不够完整,导致最终效果与期望值的区别,同理,用户与开发人员也会因此出现这种情况。
A4:当然不,个人在面对问题时可以灵活调整方法和策略,而机器可能需要外部干预才能改变其行为。在团队中,我们会根据每个人的能力、效率和完成度,不断调整分工,为整个项目的进度贡献力量,而不是仅仅完成个人任务。另外,个人可以通过经验学习和成长,而机器的学习通常需要人类干预。有了极限编程和alpha阶段的经验和教训,我们在beta阶段更加从容,编程效率明显提高。
Q5:如何让自己能够跟上软件工程发展,做一个永不落伍的开发者呢?
A5:首先,持续学习,技术不断进步,新的编程语言、框架和工具层出不穷。定期学习新技术和概念,保持好奇心。然后是积极实践,通过实际项目来应用新学的知识,实践是巩固学习成果的最好方式。关注行业动态,订阅行业杂志、博客、播客和新闻通讯,参加技术会议和研讨会,了解最新的行业趋势。始终保持好奇,了解、学习新技术,才能保持个人的竞争力,做一个永不落伍的开发者。
Q:在团队中,每个人只需要做好自己的部分就好了吗?
A:我认为不是的,我们组的成员几乎都是第一次接触团队合作,经验不足,因此在alpha阶段中,尽管分工明确,但是仍会出现一些问题。例如,后端的接口成功实现功能,但是前端调用却出了问题。我在确认前端代码无误后仍然找不到出错的原因,于是我求助后端人员,通过交流发现是参数类型不匹配,这也警示我们要及时完善接口文档。因此,在团队合作中,哪怕你完成了自己的部分,也需要配合其他人员,共同促进整个项目的完成。
需求阶段
需求分析与理解:学习利用NABCD模型,系统地分析用户需求。
技术可行性评估:学习如何评估需求在技术上的可行性。了解如何与技术团队合作,确保需求在技术上可实现。
原型设计与制作:利用墨刀工具,将想法化为具体的页面,同时学会站在用户的角度,调整布局,增加提示,增加一些对用户友好的小细节。
需求文档的编写:学习如何编写清晰、详细的需求文档,包括用例、用户故事、需求规格说明等。
设计阶段
架构设计能力:学习如何设计软件的高层架构,分离前后台、前后端模块,明确各模块间的联系。
数据模型设计:掌握如何设计数据库模式,包括实体、关系以及数据的规范化。
接口设计:学习如何设计API和系统接口,确保不同组件之间的有效通信。
安全性设计:理解并实施安全最佳实践,如身份验证、授权、数据加密等。
实现阶段
代码组织:学习如何编写结构良好、模块化的代码,以及如何组织代码库。
接口调用:学会如何分装接口,通过调用接口读取数据和实现功能。
页面跳转:学会如何在vue框架中实现导航栏调转页面,高亮当前页面。
沟通能力:团队协作在团队中尤为重要,好的交流可以大大提高效率,避免一些不必要的bug。
文档更新:前期工作中编写的接口文档等文件,也应该随着项目的进行而更新,避免因代码更新造成团队人员在某一功能上遇到不必要的bug。
测试阶段
测试用例设计:掌握如何设计测试用例,确保覆盖各种正常和异常的使用场景。
自动化测试:学习如何使用自动化测试工具和框架,编写和维护自动化测试脚本。
用户验收测试:学习如何进行用户验收测试,以用户的视角检验软件功能,确保软件满足用户需求。
功能完善与bug修复:测试阶段发现的bug,或不够完善的功能,需要及时反馈,让相应的负责人员修改。
发布阶段
项目部署:打包后台项目,上传仓库,配合成员实现云服务的部署。
市场反馈:通过问卷调查,收集用户评价与意向,为后续产品的维护和升级指明方向。
个人项目
个人项目难度不大,但是很多东西都是初次接触,因此也花了一定的时间。这个作业让我初次尝试爬取网页数据,利用fastjson解析JSON文件,性能测试和性能优化。同时,还让我复习了git库的使用和操作。虽然最终结果可能遗漏了对某些错误输入的处理,降低了程序的正确性,但是总体上让我对一个项目从无到有的过程有了一个初步的印象。
结对编程
原型设计阶段与队友配合融洽,沟通及时,进展顺利。编程实现阶段,我本来想采用前后端分离的方式,但是由于时间紧迫,在一两天的尝试无果后,赶紧改变策略,转为纯前端实现。在此期间,也多亏队友建立的基本框架,让我快速掌握vue的基本操作,迅速加入项目的开发。后面我负责数据处理和页面优化,队友负责页面跳转和项目部署,分工合作,顺利实现了整个项目。本次实践也让我认识到,实现一个项目所需的工作不仅仅是简单的代码编写,前期的需求分析、原型设计和后期的测试改进、项目部署都是整个开发过程中必不可少的环节。
团队项目
“人多力量大”这句话在团队项目初期显然不适配,初期大家经验不足,不管是分工上还是个人实现上,都稍有不足,常常会遇到各种问题。不过随着时间的推进,我们也在摸爬滚打中逐渐找到了配合的秘诀,在完成个人分工的同时,帮助其他成员找出问题的解决方案,共同促成了整个项目的完成。这一过程也为今后的就业打下来基础。
| 目标 | 内容 | 评分 | 理由 |
|---|---|---|---|
| 1 | 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。 | 93 | 我理解了软件工程师的职业道德规范,联系学生等用户对自习室的需求,开发一个自习室app,帮助用户养成自律的品德。 |
| 2 | 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 | 96 | 我掌握了需求分析的基本过程,并能够使用需求表达工具。我能够较为准确地表达客户的需求,并为其构建需求分析模型。 |
| 3 | 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 | 90 | 我学习并参与了软件开发的每个阶段,在开发前期系统地参与了原型的设计和需求分析文档等文档的编写。 |
| 4 | 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 | 90 | 对我负责的后台部分进行了各方面的测试,对产品的质量测试有了一定的了解和应用。 |
| 5 | 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。 | 96 | 在团结合作中锻炼了文档编写能力。 |
| 6 | 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 | 98 | 与各成员及时沟通,共同解决项目开发中的问题。 |
| 7 | 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 | 88 | 能够辨别软件项目管理的构成要素,并掌握了一些估算方法。 |
个人技术总结——vue框架下的接口分装
概述:在Vue中,我们可以使用Axios来封装接口请求。Axios是一个基于Promise的HTTP客户端,可以在浏览器和Node.js中使用。因为从开发到最终上线的过程中,API是需要经常更换的,为了我们更好的统一管理,所以需要将API封装起来。这种封装方式不仅提高了代码的复用性和可维护性,还使得接口请求逻辑与UI逻辑分离,有助于构建更清晰、更易于管理的Vue应用。