这个作业属于哪个课程 软件工程实践2022年春-W班
这个作业要求在哪里 软件工程实践总结&个人技术博客
这个作业的目标 课程回顾与总结
个人技术总结
其他参考文献

文章目录

  • 课程回顾与总结
    • 寒假博客链接
    • 问题回顾
      • 问题一
      • 问题二
      • 问题三
      • 问题四
      • 问题五
    • 每个阶段的收获
      • 需求阶段
      • 设计阶段
      • 实现阶段
      • 测试阶段
      • 发布阶段
    • 心得
    • 自我评估
  • 个人技术总结

课程回顾与总结

寒假博客链接

软件工程寒假作业博客

问题回顾

问题一

2.3 学生与职业程序员的区别?

我认为学生在项目开发中,主要专注于代码编写,不必考虑外在因素,而职业程序员需要知道自己的东西最终将被许多用户使用,并且需要注意其健壮性,易用性,各种性能指标,甚至是代码的后续可维护性。软件开发的过程需要经过设计、评审、编码、测试一系列完整的工作流程,才能确保开发的项目符合预期,不喜欢停留在过去的技术,而是更喜欢钻研前沿的新技术,因此有如机器学习,计算机视觉等前沿领域,更多的是学生和学术界在研究。职业程序员需要遵守严格的代码规范,并且需要与其同事一起合力完成项目,相互要求自己,以共同提高代码质量和产品质量。

问题二

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

我认为应该在保持“广”的前提下,努力地找到自己“专”的地方。广泛的技术面和知识体系可以为工程师在遇到问题时提供更多的解决方案,而在这种前提之下,专业的技术则可以迅速的定位问题的所在之处,毕竟不是所有问题都有对应的文档来解决,而专业的工程师人才可以在这种情况中脱颖而出。

问题三

5.3 在团队项目中,个人应该如何选择或者接受团队的工作分配?

首先个人应该了解项目的大体结构,同时要了解各工作分配的模块结构,大致了解各模块需要的技术栈,并与自身已学技术相比较,如果大多符合,则可纳入自身选择的候选项中。在自身能力足够完成多个模块的内容,要依据各模块所需技术栈中自己所缺的部分,尽量选择需要学习新技术的模块,以增强自己的硬实力,但模块的所缺技能不可过多,以免拖慢团队项目的工作进度。

问题四

11.5.4 关于多人合作中的代码如何同步?

多人合作时首先得先注意代码规范的问题。其次,在用git等协同软件时,先把各个子模块的工作分配给指定的成员,分模块进行开发,以减少合并时产生冲突的次数,同时在开发一个全新的功能时创建一个全新的分支,这样可以保证自己的功能分支在开发时,不会被其他人影响到,在开发完成后进行合并或变基,每次push到远程仓库之前,都先拉取最新的代码,然后再进行合并和推送。

问题五

3.4 低层次的问题能依赖工具解决么?

我认为在刚刚入门的时候,可以先使用工具进行解决,但一定要清楚低层次的问题发生的原因,不可完全依赖于工具,因为工具底层也是封装了一些解决方案,优质的程序员一定要清楚问题真正的解决方案,才可能举一反三,否则当工具停止维护或工具本身出现兼容性问题,问题就不能解决了。

每个阶段的收获

需求阶段

  需求阶段需要明确产品的功能和界面,需要讨论完备,避免对于功能的理解产生偏差,对于一些复杂的业务逻辑,不能只停留在脑海中进行推演,应该将完整的业务逻辑通过流程图的形式表现出来,否则在开发中期就会因为业务逻辑顺序问题导致前后端出现分歧,不停的确认对方的需求,影响后续开发的速度,通过本次软工实践,意识到了需求分析的重要性,也学会了需求分析的基本流程。

设计阶段

 学习到了软件工程开发中必需的原型设计和接口设计流程。接口设计阶段主要就是进行系统设计和数据库设计了,根据需求阶段提出的产品功能,分析其必需的接口,然后再进行对应的数据库设计和系统设计,这样在接口设计阶段也能够更加深入地了解产品的功能,在原型设计阶段就需要根据业务逻辑流程图和设计的接口对各种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的支持动态权限验证的权限安全模块的脚手架,并应用在我们的项目之中。

软件工程实践总结——程序员的自我修养相关推荐

  1. 从实践理解《程序员的自我修养》(1)

    从实践理解<程序员的自我修养>(1) 前言 这篇文档主要从实践的角度充分理解<程序员的自我修养>一书中提到的细节.书中提到的各种机制.数据结构,我都将在实际系统中找到并理解它们 ...

  2. 很认真地聊一聊程序员的自我修养

    最近看了<浅谈程序员的英语学习>,对于文章中的观点我非常认同,英语是非常重要的,但文章站的高度还是太高,具体表述的学习方法我不是很认同,也认为不太实际,恰好之前有一篇一直没有发表的文章想重 ...

  3. 聊一聊程序员的自我修养

    今天逛博客园,看到了一篇推荐的文章<浅谈程序员的英语学习>,就点进去看了一下,对于文章中的观点我非常认同,英语是非常重要的,但文章站的高度还是太高,具体表述的学习方法我不是很认同,也认为不 ...

  4. 很认真的聊一聊程序员的自我修养(转自博客园)

    今天逛博客园,看到了一篇推荐的文章<浅谈程序员的英语学习>,就点进去看了一下,对于文章中的观点我非常认同,英语是非常重要的,但文章站的高度还是太高,具体表述的学习方法我不是很认同,也认为不 ...

  5. 一个程序员的自我修养

    摘要: 如何成为华为技术专家. 原文:一个程序员的自我修养 作者:徐宏伟 一天晚上,我和老婆聊天,说部门要我写个"大咖谈软件"的文章,老婆斜了我一眼,淡淡地说:"Linu ...

  6. 在华为写了十几年代码,一个程序员的自我修养

    以下内容来自公众号逆锋起笔,关注每日干货及时送达 本文来自<华为人>徐宏伟,转载请注明出处 一天晚上,我和老婆聊天,说部门要我写个"大咖谈软件"的文章,老婆斜了我一眼, ...

  7. 程序员的自我修养,好文

    很认真的聊一聊程序员的自我修养 本文正在筹备第二版,以下是第一版主要内容 首先要谈的是,今天的话题所聊的程序员包含哪些人? 在中国,写程序,不仅仅是一种兴趣,更多的时候,还是一种普通职业和谋生工具 大 ...

  8. 程序员的自我修养——读《软技能-代码之外的生存指南》笔记

    我记得曾经读过俞甲子的<程序员的自我修养--链接.加载和库>,当时就觉得这个书名起的不太合适,有点不合主题,因为这本书主要讲述链接库的事情,我认为这个是编译器的一部分,是作为程序员要掌握的 ...

  9. 程序员的自我修养(转载)

    疲于加班,幸好我还保留看看别人写的东西的习惯,下面转载的一篇文章,在某些地方触动到了我,有些时候我也是反面典型,思考得少,反而直接拿来用的更多,但是我发现,往往很多问题都是糊里糊涂地用了别人的东西导致 ...

最新文章

  1. 使用IntelliJ IDEA 13搭建Android集成开发环境(图文教程)
  2. MongoDB基本概念学习 - 集合
  3. Android Studio安装genymotion模拟器
  4. 全程图解:Centos 5.2 下 ORACLE10G 安装配置
  5. JAVA 类加载 随记
  6. java web 开发基础_javaweb开发基础(一)
  7. malloc动态内存分配
  8. python logger设置信息取得_shell 脚本中如何获取 python logging 打印的信息?
  9. lambda,reserve list, list comprehension, string of slice
  10. iOS底层探索之多线程(五)—GCD不同队列源码分析
  11. 联想电脑管家和驱动人生 驱动版本对比
  12. VC++ 中主线程等待子线程结束的方法
  13. 网络安全-靶机dvwa之sql注入Low到High详解(含代码分析)
  14. JavaScript实现网页计算器
  15. LNZ32P4-C - Pan-Tilt-Zoom (PTZ) Camera with 1080p HD Video Color Night Vision
  16. 为什么越能干越忙碌越吃亏?这四点干货,说破职场微生态
  17. 深度学习入门笔记(二):神经网络基础
  18. Android的警示对话框AlertDialog简单使用实例(附Demo)
  19. B端产品经理的工作精进思路
  20. 华创证券签约有因直播,打造金融+直播新场景

热门文章

  1. 软实力-领导力|影响力
  2. 关于开发微信小程序后端linux使用xampp配置https
  3. unix、minix和linux的关系
  4. Android图像处理之图形特效处理
  5. 【一起入门MachineLearning】中科院机器学习第*课-支持向量机SVM
  6. Unity游戏运行闪退问题定位与解决(标签:Oops、crashed、System out of memory、UnityEngine.AssetBundle:LoadAsset_Internal)
  7. 串口通信协议RS232
  8. php点赞 收藏 评论代码,基于云开发的小程序评论、点赞、收藏功能实现总结 | 码农网...
  9. LDAP 注入与防御
  10. mysql复合主键优缺点_提问关于 mysql得联合主键和复合主键的问题