这个作业属于哪个课程 | 软件工程实践2022年春-W班 |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 课程回顾与总结 个人技术总结 |
其他参考文献 |
文章目录
- 课程回顾与总结
-
- 寒假博客链接
- 问题回顾
-
-
- 问题一
- 问题二
- 问题三
- 问题四
- 问题五
-
- 每个阶段的收获
-
-
- 需求阶段
- 设计阶段
- 实现阶段
- 测试阶段
- 发布阶段
-
- 心得
- 自我评估
- 个人技术总结
课程回顾与总结
寒假博客链接
软件工程寒假作业博客
问题回顾
问题一
2.3 学生与职业程序员的区别p>
我认为学生在项目开发中,主要专注于代码编写,不必考虑外在因素,而职业程序员需要知道自己的东西最终将被许多用户使用,并且需要注意其健壮性,易用性,各种性能指标,甚至是代码的后续可维护性。软件开发的过程需要经过设计、评审、编码、测试一系列完整的工作流程,才能确保开发的项目符合预期,不喜欢停留在过去的技术,而是更喜欢钻研前沿的新技术,因此有如机器学习,计算机视觉等前沿领域,更多的是学生和学术界在研究。职业程序员需要遵守严格的代码规范,并且需要与其同事一起合力完成项目,相互要求自己,以共同提高代码质量和产品质量。
问题二
3.1 对于一名工程师而言,究竟应该是更”专“一点好,还是更”广“一点好呢
我认为应该在保持“广”的前提下,努力地找到自己“专”的地方。广泛的技术面和知识体系可以为工程师在遇到问题时提供更多的解决方案,而在这种前提之下,专业的技术则可以迅速的定位问题的所在之处,毕竟不是所有问题都有对应的文档来解决,而专业的工程师人才可以在这种情况中脱颖而出。
问题三
5.3 在团队项目中,个人应该如何选择或者接受团队的工作分配p>
首先个人应该了解项目的大体结构,同时要了解各工作分配的模块结构,大致了解各模块需要的技术栈,并与自身已学技术相比较,如果大多符合,则可纳入自身选择的候选项中。在自身能力足够完成多个模块的内容,要依据各模块所需技术栈中自己所缺的部分,尽量选择需要学习新技术的模块,以增强自己的硬实力,但模块的所缺技能不可过多,以免拖慢团队项目的工作进度。
问题四
11.5.4 关于多人合作中的代码如何同步p>
多人合作时首先得先注意代码规范的问题。其次,在用git等协同软件时,先把各个子模块的工作分配给指定的成员,分模块进行开发,以减少合并时产生冲突的次数,同时在开发一个全新的功能时创建一个全新的分支,这样可以保证自己的功能分支在开发时,不会被其他人影响到,在开发完成后进行合并或变基,每次push到远程仓库之前,都先拉取最新的代码,然后再进行合并和推送。
问题五
3.4 低层次的问题能依赖工具解决么p>
我认为在刚刚入门的时候,可以先使用工具进行解决,但一定要清楚低层次的问题发生的原因,不可完全依赖于工具,因为工具底层也是封装了一些解决方案,优质的程序员一定要清楚问题真正的解决方案,才可能举一反三,否则当工具停止维护或工具本身出现兼容性问题,问题就不能解决了。
每个阶段的收获
需求阶段
? 需求阶段需要明确产品的功能和界面,需要讨论完备,避免对于功能的理解产生偏差,对于一些复杂的业务逻辑,不能只停留在脑海中进行推演,应该将完整的业务逻辑通过流程图的形式表现出来,否则在开发中期就会因为业务逻辑顺序问题导致前后端出现分歧,不停的确认对方的需求,影响后续开发的速度,通过本次软工实践,意识到了需求分析的重要性,也学会了需求分析的基本流程。
设计阶段
?学习到了软件工程开发中必需的原型设计和接口设计流程。接口设计阶段主要就是进行系统设计和数据库设计了,根据需求阶段提出的产品功能,分析其必需的接口,然后再进行对应的数据库设计和系统设计,这样在接口设计阶段也能够更加深入地了解产品的功能,在原型设计阶段就需要根据业务逻辑流程图和设计的接口对各种UI和交互事件做详细的描述,这样不仅减少了前端在开发时推倒重做,也明确了后端对接口的详细设计。设计阶段的完善与否,直接导致了后面开发的效率高低,经历过一个优秀的设计阶段,确实能够加快后续开发的速度。
实现阶段
?构建了一个小型的后端开发脚手架,在多人协同开发的过程中,很明显的感到了优秀的架构显著地提高了后端的开发效率,代码的合并以及任务的分配都十分和谐,没有遇到什么异常情况,同时也加深了对一些后端中间件的理解,接触了一些其中很少用但是很好用的接口。项目的后期也深刻体会到了与前端联调时遇到的困难,认识到成员之间的交流真的很重要。
测试阶段
?了解到了测试的重要性,不论是模块开发时的单元测试,还是联调时的系统测试,都是发现问题的重要阶段,好的测试可以减少不必要的软件缺陷,同时在此次实践中,我还学会了使用postman、jmeter等测试工具,测试要贯穿软件开发的整个生命周期,越早测试越早发现软件的缺陷,修复起来就越轻松。
发布阶段
?学习了打包部署的基本步骤,知道了项目部署到服务器的流程,以及问卷调查用户的使用反馈。
心得
个人项目:深入学习了 Java 的输入输出流和管道相关的知识,以及多线程的使用,也认识到了多线程编程的困难,很容易忘记需要保证变量的可见性。掌握了对JSON数据的解析以及一些测试方法,但是编码能力还有待提高。
结对编程:学会了原型设计的流程,感受到了沟通的重要性,以及在项目的计划阶段就要考虑到工作量、个人能力以及时间的安排和管理,收获主要就是学习了原型设计工具的使用以及vue2的深入学习。
团队项目:第一次参与多人的团队开发,也是第一次参与了一款软件从设计、编码到发布的全过程。了解了团队如何分工、软件的开发流程、也逐渐理解了软件工程。自己的知识永远是不够用的,任何时候都需要不断学习和向他人学习,积累了不少开发经验。
自我评估
目标 | 课程目标 | 自我评分 | 自我分析 |
---|---|---|---|
1 | 理解软件工程师的职业道德规范和实践要求,了解国情 情民情,理解软件产品对 会、健康文化等影响,树立积极向上的软件开发理念 | 80 | 关于软件产品对 会、健康文化等方面的影响可能没法考虑的十分全面。 |
2 | 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 | 90 | 需求分析阶段是经历数次会议共同讨论后确定产品的需求,最终我们成功地确定了需求,绘制出了原型界面。 |
3 | 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 | 90 | 设计开发阶段,由我进行后端项目架构的设计和编码,提高了后端小组开发人员的开发效率。 |
4 | 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 | 85 | 软件系统的技术评测主要是通过软件评测作业,基本了解了软件系统相关的技术评测方式 |
5 | 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试 告等文档撰写方法,具备与业界同行交流能力。 | 85 | 团队项目中,参与了后端单元测试、系统设计部分,系统测试部分的文档编写,但是因为没有对比参照,不能确定是否与业界同行进行交流。 |
6 | 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 | 90 | 在此次团队项目中,作为后端开发组组长,给开发成员进行任务的分配、代码的复审、协调各模块开发进度,积极与其他成员进行交流和协作。 |
7 | 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 | 90 | 进一步学习了git中的合并变基等功能进行协同开发,还使用了teambition进行任务的分配和管理。 |
个人技术总结
个人技术总结——SpringSecurity基于JWT的动态权限验证
概述:绝大多数的软件应用都离不开权限安全,但是权限安全相关的代码在每个项目中又十分类似,因此我就编写了一个基于SpringSecurity的支持动态权限验证的权限安全模块的脚手架,并应用在我们的项目之中。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!