软件工程实践2020_个人作业 —— 软工实践课程总结
这个作业属于哪个课程 | <2020春W班 (福州大学)> |
---|---|
这个作业要求在哪里 | <作业要求> |
这个作业的目标 | <对软件工程实践课程的总结> |
作业正文 | <作业正文> |
其他参考文献 | <腾讯IM即时通讯开发文档> |
Part.01 回望
对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强软件工程专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
即按照本课程一开始的老师给出的工程能力释义图为参照,从一下方面开始总结阐述,工程能力释义图如下
221701412的工程能力变化图
-
A-analyze(复杂工程系统分析能力)
- 达成情况:对于从一开始的热身疫情数据分析到后面的结对完成疫情统计到最后的团队作业经过两阶段的冲刺,分析复杂工程系统的能力有一定的提高,可以更好的分析工程的问题关键所在
- 不足:对问题分析时得出的解决方案还需更加的精准,如在热身疫情数据分析时对命令行参数的解析方案确定不当,导致最后的导入评测程序运行时报错
-
D-design&develop(复杂工程系统设计/开发能力)
- 达成情况:在结对作业中是个人第一次进行了原型的设计工作(以前只是对原型设计有所了解),对于原型的设计能力有所提升,在团队作业中作为后端开发主要按照官方的文档初始架构了一个目录结构更为规范的后端项目,对于复杂工程的架构设计、构件设计能力有一定的提升
- 不足:原型的设计能力还只是初窥门径,还远远登不上大雅之堂,对于复杂工程的架构设计、构件设计,我认为现在设计的项目系统还仍有很多可以优化的地方还需要以时间堆积的学习
-
E-evaluate(评价能力)
- 达成情况:主要是通过下载腾讯的即时通讯IM的相关demo进行了对应的黑盒测试与相关评测,以及每周的小组答辩时使用在线评审表进行打分互评,对于恰当的评价计算机相关技术和产品的能力有所提升
- 不足:对于如何能更恰当的评价计算机相关技术和产品,需要的是自身技术的提高与眼界的上升(即多看多学),现在自己的自身积累还远远不足,所以认为自己的评价能力还有很大的提升空间
-
C-collaborate&communicate(团队协作能力)
- 达成情况:在本次软件工程实践中主要有团队协作的部分为结对编程以及后续的团队合作冲刺完成项目,其中在团队中担任组长的角色,发挥了团队协作精神,参与到了各部分的设计报告与文档的攥写工作中,对于团队协作能力有较大程度的提高
- 不足:因为本次的协作开发全是以线上合作的方式进行,沟通交流方面出了很多的问题,且对于设计报告与文档的攥写还有很多值得学习与提升的地方
-
P-project management(项目管理能力)
- 达成情况:学习使用了多方工具进行项目管理(teambition等),且在本学期自己选修了项目管理课程的理论前提下,软件工程实践则作为了对于项目管理的实践,项目管理能力有所提升
- 不足:对应的工程活动还涉及了很多的管理学、经济学知识,这是离自己专业很远的知识,还需要更多的学习提高
你在第一次作业的个人简历中制定的这门课程结束后,你预期你将增长的能力、技术、技能;
和你针对你的目标绘制的学习路线图。对比当前你的所学所得,你达到了当时的预期值吗?
本小节一开始先回顾一下在第一次作业的个人简历中制定的
这门课程结束后,你预期你将增长的能力、技术、技能
以及针对目标绘制的学习路线图
个人简历
基本信息 | 姓名:theTuring | |
兴趣爱好;编程,moba,单机,健身,旅游 | ||
特长:moba | ||
当前水平 | 掌握的编程语言:C/C++,JAVA,html,php基础 | |
掌握的开发软件:VisualStudio,IDEA,Eclipse | ||
掌握的技术框架:springboot,yii,webmagic,vue | ||
累计代码量:写过的项目的话代码行数可能10w+了,不过有效代码应该5w吧左右 | ||
开发过的最大的项目简介:基于yii2.0开发的个人博客系统,其中这个项目整合的自己以前写的一个云盘的项目进去,写了博客园的爬虫更新当日博客园首页文章到自己的博客的功能。 | ||
拥有的工程能力:一定的可快速上手新的项目能力,简单的面向对象分析 | ||
成果和获奖经历:无 | ||
专业目标 | 掌握java后端开发能力 | |
实践预期 | 工程能力:更好的在开发团队内做好后台的维护 | |
技术,技能:扎实java基础编程,java EE,对spring全家桶都有一定掌握 |
学习路线
达成情况
-
能力、技术、技能
- java基础编程有变得更扎实,其中在本次实践中主要是使用了Springboot作为后端开发,对于预期的java EE以及Spring全家桶都有一定掌握只有部分了解学习
-
学习路线
- 当时预期的学习路线广度过广了(因为以前想着会有很多的空闲时间,结果在经历了多次软工作业、平日课程与中间一段时间的秋招面试准备发现根本时间不够),所以后面几个月好像根本就没有按照计划来学
请总结这门课程的实践总结和给你带来的提升,包括以下内容:
统计一下,你在这门软件工程实践中,一共完成了多少行的代码
-
统计情况
对应作业 | 代码行数 |
---|---|
软件工程实践2020_寒假作业(2/2)—— 疫情统计 | 1794行 |
软件工程实践2020_结对第二次作业 —— 某次疫情统计可视化的实现 | 约2500行 |
团队作业 | 约10000行 |
合计 | 约14294行 |
软工实践的各次作业分别花了多少时间?(做一个列表)
-
统计情况
对应作业 | 时间(h)min |
---|---|
个人作业 | |
软件工程实践2020_寒假作业(1/2) | (12h)720min |
软件工程实践2020_寒假作业(2/2)—— 疫情统计 | (27h)1620min |
软件工程实践2020_结对第一次 —— 某次疫情统计可视化(原型设计) | (约18.3h)1100min |
软件工程实践2020_结对第二次作业 —— 某次疫情统计可视化的实现 | (30h)1800min |
软件工程实践2020_个人作业 —— 软件评测 | (15h)900min |
软件工程实践2020_个人作业 —— 软工实践课程总结 | (8h)480min |
团队作业 | |
团队作业 —— 选题 | (10h)600min |
团队作业 —— GitHub 实训 | (14h)840min |
团队作业 —— 原型设计 | (24h)1440min |
团队作业 —— 需求分析 | (12h)1200min |
团队作业 —— 系统设计与数据库设计 | (28h)1680min |
团队作业 —— Alpha 冲刺 | (64h)3840min |
团队作业 —— Beta 冲刺 | (72h)4320min |
哪一次作业让你印象最深刻?为什么?
-
现实情况
- 印象最深刻的作业:GitHub 实训
- 原因:真正的极限冲刺,从作业开始时间坐在电脑面前坐到了截止前2分钟才交上了作业,一个人写了所有界面+附加功能,太累了。然后那天负责博客的同学失误还误删了前篇博客,补博客到了夜间2 3点,深深地体会到了什么叫做996完还加班。
累计花了多少个小时在软工实践上?平均每周花多少个小时?
-
现实情况
- 累计时间:约20540min(约342.3h)
- 平均每周时间:17h
学习和使用的新软件
-
新软件
- JProfiler:JProfiler 是一个商业授权的 Java 剖析工具,由 EJ 技术有限公司,针对的 Java EE 和 Java SE 应用程序开发的,可模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
- Axure:Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图、流程图、原型和规格说明文档。作为专业的原型设计工具,它能快速、高效的创建原型,同时支持多人协作设计和版本控制管理
- 墨刀:墨刀是一款在线原型设计与协同工具,借助墨刀,产品经理、设计师、开发、销售、运营及创业者等用户群体,能够搭建为产品原型,演示项目效果。墨刀同时也是协作平台,项目成员可以协作编辑、审阅,不管是产品想法展示,还是向客户收集产品反馈,向投资人进行Demo展示,或是在团队内部协作沟通、项目管理
学习和使用的新工具
-
新工具
- Junit:JUnit 是一个 Java 语言的单元测试框架。它由 Kent Beck 和 Erich Gamma 建立,逐渐成为源于 Kent Beck 的 sUnit 的 xUnit 家族中最为成功的一个。 JUnit 有它自己的 JUnit 扩展生态圈。多数 Java 的开发环境都已经集成了 JUnit 作为单元测试的工具
- spring-boot-starter-test:Spring Boot 集成的 pring-boot-starter-test 是基于 JUnit 的单元测试工具
- JWT:英文名是 Json Web Token ,是一种用于通信双方之间传递安全信息的简洁的、URL安全的表述性声明规范,经常用在跨域身份验证
- PageHelper:来源于第三方的快速分页插件
学习和掌握的新语言、新平台
-
新语言
- go语言入门
-
新平台
- 博客园:一个面向开发者的知识分享社区,用于完成作业博客的编写
- Teambition:阿里巴巴旗下团队协作工具,面向企业和团队提供数字化协同办公工具,满足项目管理、任务协同、文档协作、日程共享、知识管理等各种协作需求。用于在团队作业中进行项目管理
学习和掌握的新方法
-
新方法
- 单元测试:了解并尝试进行单元测试
- 性能测试:了解并尝试进行性能测试
- 项目管理:了解并尝试进行项目管理
- 在线文档:在团队合作中在线文档的灵活应用
- 博客:开设和撰写博客
工程能力的提升
-
A-analyze(复杂工程系统分析能力)
- 提升情况:对于从一开始的热身疫情数据分析到后面的结对完成疫情统计到最后的团队作业经过两阶段的冲刺,分析复杂工程系统的能力有一定的提高,可以更好的分析工程的问题关键所在
-
D-design&develop(复杂工程系统设计/开发能力)
- 提升情况:在结对作业中是个人第一次进行了原型的设计工作(以前只是对原型设计有所了解),对于原型的设计能力有所提升,在团队作业中作为后端开发主要按照官方的文档初始架构了一个目录结构更为规范的后端项目,对于复杂工程的架构设计、构件设计能力有一定的提升
-
E-evaluate(评价能力)
- 提升情况:主要是通过下载腾讯的即时通讯IM的相关demo进行了对应的黑盒测试与相关评测,以及每周的小组答辩时使用在线评审表进行打分互评,对于恰当的评价计算机相关技术和产品的能力有所提升
-
C-collaborate&communicate(团队协作能力)
- 提升情况:在本次软件工程实践中主要有团队协作的部分为结对编程以及后续的团队合作冲刺完成项目,其中在团队中担任组长的角色,发挥了团队协作精神,参与到了各部分的设计报告与文档的攥写工作中,对于团队协作能力有较大程度的提高
-
P-project management(项目管理能力)
- 提升情况:学习使用了多方工具进行项目管理(teambition等),且在本学期自己选修了项目管理课程的理论前提下,软件工程实践则作为了对于项目管理的实践,项目管理能力有所提升
团队合作上的提升
-
现实情况
- 我们组建了一个相对高效的团队,能够把任务进行合理的分配、高质量地完成,在团队合作上的提升主要表现在了本次实践了解到了站立式会议的意义,第一次使用了项目管理工具(teambition)与在线文档等工具辅助与团队合作与项目管理
其他方面的提升
-
现实情况
- 抗压能力:在团队冲刺时压力还是挺大的,来源于多方,抗压能力有所提升
- 领导能力:在团队合作中作为组长参与开发,还是提升了不少管理团队的能力
- 文档攥写能力:在团队合作中负责了大部分的文档与博客的攥写,文档攥写能力提升了
- 熬夜能力???:确实熬了很多夜,现在结束可以好好休息了~
Part.02 团队总结
软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
你在团队中担任了什么角色?你是否完成了该角色的任务?现在你觉得你适合该角色吗?
如果你是组长,你觉得你有哪些地方做的不够好的?有哪些地方做的好的?你觉得该怎么改进?(详细描述)
-
我的感想
- 经过了Alpha冲刺、Beta冲刺,作为组长,我觉得我们整个小组,从团队氛围,到组员关系,到整体的团队协作能力,都有了很大的提高,一路走来,我很感谢我的小组成员,他们有实力也愿意为团队做贡献。一直以来虽然大大小小的项目都写过一些,但以往的都仅仅只是局限于完成代码层面上的。通过这次的软件工程实践,我才可以说是真真实实的体会了一个什么叫做相对完整的软件项目,从一开始的团队组建选题开始,成员有所划分,一个完整团队开发需要的有人担任产品经理、项目经理来完成项目的管理;需要开发人员分别负责前后端开发、测试等对应的开发工作。从选题过后的原型设计,需求分析、系统设计、数据库设计再到后面的两阶段的冲刺,可以说这次的时间教给我的不仅仅是代码开发,还有更多的是如何进行团队协作,一个系统的开发流程应该完成的分析与设计,测试在开发中的意义,文档对与开发的帮助,团队以及项目的管理方式,面临成员变动的处理等等。
在这长达接近一个学期的开发中,谈谈我的队友们吧,414一直以来都是中流砥柱,很有耐心也很稳,尤其文档真的写的很棒;418作为离队成员,在团队合作期间,愿意听取队友的意见,前端的界面一如既往的很美观;420话少靠谱,在beta阶段一人扛起了两个web前端的工作;429同学可能是本次实践中收获最多的几人之一,从最开始的从未接触过前后端分离式的开发,几乎没有经验,到现在相对熟练的掌握了部分后端框架的开发使用;428是后来的新队友,积极乐观,在负责测试工作的时候为众人还是提供了不少中肯的建议;417、439基础相对较差,在冲刺的最后仍没有参与到真正的代码开发中,参与了部分测试,确实是个遗憾,他们主要负责了本团队的项目管理工作,诚然,我们小队做的还是不错的项目管理(这部分是我觉得我们组在实践中做得最好的一部分)离不开他们的付出。
整个软工实践下来,我学到了很多,也遇到了很多困难。明白了一个道理,有些东西不是一蹴而就的,就像我们软件开发,你得先让它能跑起来,然后再去做相应的优化;就像我们的学习,我们先要有对全局的把握,然后再去逐个深入。 对于目前我们一起完成的校园芥子空间有一些亮点,也还有着不少未完成的遗憾,还不是一个可以独当一面发行的项目。希望日后还能继续完善!
虽然软工实践就要结束了,但希望我们旗山的骄傲不散!👍
- 经过了Alpha冲刺、Beta冲刺,作为组长,我觉得我们整个小组,从团队氛围,到组员关系,到整体的团队协作能力,都有了很大的提高,一路走来,我很感谢我的小组成员,他们有实力也愿意为团队做贡献。一直以来虽然大大小小的项目都写过一些,但以往的都仅仅只是局限于完成代码层面上的。通过这次的软件工程实践,我才可以说是真真实实的体会了一个什么叫做相对完整的软件项目,从一开始的团队组建选题开始,成员有所划分,一个完整团队开发需要的有人担任产品经理、项目经理来完成项目的管理;需要开发人员分别负责前后端开发、测试等对应的开发工作。从选题过后的原型设计,需求分析、系统设计、数据库设计再到后面的两阶段的冲刺,可以说这次的时间教给我的不仅仅是代码开发,还有更多的是如何进行团队协作,一个系统的开发流程应该完成的分析与设计,测试在开发中的意义,文档对与开发的帮助,团队以及项目的管理方式,面临成员变动的处理等等。
你这学期经历过换组吗?你对换组有哪些看法?谈谈你在这个过程中的感受。
-
我的感想
- 没有经历过换组,我认为不论是在现在还是未来工作的开发中,一个团队出现人员调动是很正常的一件事情,一个真正优秀的团队也不应该被成员的调动而影响到,适应以最快的速度继续投入到接下来的工作才是该干的事情。正如我认为的我们小组无论是我还是其他的任何一位成员被进行了调换都不会太大的影响整体的开发进度,对于换组后,我希望新组员能尽快融入队伍,走了的老队友也依然能在其他小组大放异彩。
分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建之法》第17章 人、绩效和职业道德)
-
现实情况
- 对于萌芽/磨合/规范/创造的四个阶段阶段,我认为现在的团队处于磨合-规范阶段,因为整个开发还是基于原型中设计的功能来实现,部分代码可能还有潜在的重构规范必要性,与预期功能还有小部分差距。
Part.03 人月神话
怎样证明你学会了软件工程?以下要求你们的团队达到了哪几个?请在随笔中用数据证明上述内容或侧重选择之一
(1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
(2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
(3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
-
研发出符合用户需求的软件
- 校园芥子空间,在初步发行用户调研使用人数为31人,预计3天后能保持10人左右的用户
-
通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
-
并且通过数据展现软件是可以维护和继续发展的
- 源代码使用GitHub仓库托管,代码有详细文档,有提供编译的指导readme,对项目的完成情况及bug在对应博客中有记录
- Github团队仓库地址:<点击进入>
- 截图展示(TEAM-DOC为团队文档包含设计报告等、TEAM-CODE-STANDARD为团队代码规范)
写下属于你自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析,文字部分字数要求在100字以上,可以使用你自己喜欢的方式表达(如图文结合、视频)
-
个人博客的建立->
- 让我重新的回顾了一下不知在这大学到目前为止这快三年以来可能有时随波逐流可能都快要忘掉了的初心,整理了自己的现有的知识体系,为自己也制定了目标与学习路线。
-
编码实现疫情统计->
- 记一次看似简单,却被我搞砸了的作业。看似简单的解析命令行+一个简单的逻辑处理后的文件读写,却因为我满心都只想去当那个第一个交作业的人因为没有考虑到周全而导致有很多问题,也让我明白了,
读书人写代码的人要戒骄戒躁,静心~
- 记一次看似简单,却被我搞砸了的作业。看似简单的解析命令行+一个简单的逻辑处理后的文件读写,却因为我满心都只想去当那个第一个交作业的人因为没有考虑到周全而导致有很多问题,也让我明白了,
-
结对的原型设计->
- 第二次见到原型,第一次设计原型,从墨刀的放弃到对axure的使用(主要是在做了较高的交互,使用墨刀真的不是很友好),最大的收获竟然是因为本人偷懒反而学会了两款原型设计软件的基本使用???!!!
-
编码实现原型->
- 很开心在这次作业取得最高分,和自己的老队友程伟行同学的再次合作,可以说是最舒服的一次编程,前后端分离,顺畅完成了编码实现原型。
-
团队的组建->
- 旗山的骄傲再次集结!!队伍中的黎家泽同学、郑斯彬同学、程伟行同学还有王肃南同学等其实一直以来我们都是在在不同的实践里的队友,也许我们分开的每个人并不是最出众的,但是我相信只有我们在一起,才是旗山的骄傲!
-
团队极限编程->
- 记一次从早上一直到半夜的编程实践,在那天建立的团队github仓库,开了短会,分好工,一直连着qq电话,到最后代码的发行以及博客的编写,马不停蹄的忙碌,在有一成员住院有一成员线上援助(因为不知道第二天有这样的冲刺,而回了老家无电脑,用手机为提供整体思路做出不可或缺的帮助,设计了流程)的情况下成功的拿下了这次团队作业的第一,其中我还记得我还与郑斯彬同学关于是否使用框架进行了不小的争执(我认为上框架是来不及的,但他认为我们的后端队员可以做到),最后也证明了他是对的,能行!
-
团队选题、原型设计、系统设计、数据库设计->
- 可以说我们的小队还是势如破竹,在前三次的答辩中一举全部拿下了答辩的最高分,这是大家努力的结果,但我们认为在系统设计部分,我们的成果却有一些不尽人意,是有所松懈的症状,我们小组在后面重新开了例会,我们会在下一阶段重整旗鼓,旗山的骄傲!回归!
-
团队alpha、beta的冲刺->
- 经历了两个阶段合计长达一个多月的冲刺,校园芥子空间终于上线,有一些亮点,也还有着不少未完成的遗憾,还不是一个可以独当一面发行的项目,希望日后还能继续完善。
Part.04 建议
对下一届同学的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?请写下你对后来人的期许
-
我的建议
- 这门课不仅仅是一门简单的实践课(与以往的实践课相比,因为以前对于实践课的我认为就只是要完成好代码即可),重要的是《构建之法》的落实和应用,学习的应该是一套完整的软件开发流程
- 制定的学习路线与计划要尽早落实,提前的学习能为你后续的开发省下不少的烦心,大概率在实践过程中是没有很多时间去学习一个完整的新的知识体系的
对于软工实践课程,你有哪些建议?
-
我的建议
- 建议可以学习北航的软工实践的模式,在后几届的实践中共同迭代完成一个项目,这样相比现在的只是完成一个相对“完整”的项目不同,而是去完成一个可用性更高,可以持续发行拥有一定用户基数的“成熟“项目
- 建议对教学计划有一定调整,我认为在后续冲刺阶段的时间较紧,因为如果不是本学期的疫情,正常来说beta冲刺已经接近期末周了,在本学期我beta冲刺不需要准备期末的前提下,我认为时间都是比较紧的,那如果是正常上课可能情况会更糟
对于助教工作,你有哪些建议?
-
我的建议
- 建议还可以更加深一点与同学们的交流,分享经验也好,聊聊天也不错,像最近乐助教创建的交流群(我已加入),我认为挺好的。建议可以在下次软工一开始就采取这样的方式
对于自己今后,你有哪些建言?
-
对自己的建议
- 不骄不躁,不卑不亢,细致入微,自信不疑,穷则思变
Part.05 个人技术总结
-
个人技术总结博客(webmagic的使用说明):<点击进入>