软件工程实践总结&个人技术博客

这个作业属于哪个课程 2021春软件工程实践S班
这个作业要求在哪里 软件工程实践总结&个人技术博客
这个作业的目标 回顾与总结
其他参考文献 软工寒假作业(2/2)

目录

第一部分:课程回顾与总结

回答过往问题

寒假作业二博客链接

Q1:
在2.3个人开发流程中,“工程师在‘需求分析’和‘测试’这两方面明显地要花更多的时间(多60%以上);但是在具体编码上,工程师比学生要少花1/3的时间。显然,从学生到职业程序员,并不是更加没完没了地写程序——花在写代码上的时间反而少了许多。”
我认为将学生和职业程序员做这样的对比有点不合适,因为学生编码的时间和经验相对较低,各项能力水平不足,花在编码上的时间也会更多。而随着编程能力的提升,职业程序员能够更加轻松写代码能够将更多时间花在需求分析与测试上。因此我认为这样比较不太合适,并不能很有力证明学生到职业程序员写程序花费时间的差别。

A:通过这学期软件工程实践的课程,我更能深刻体会到当一个项目越大,需求分析和测试这俩方面就越重要,自然编码部分所占比重就相对而言减少。在最后的团队实践中,我们小组各成员在需求和测试方面下了更大的功夫,平均每个人具体编码的时间相对减少。

Q2:
在3.1团队对个人的期望中,提到了TSP对团队成员的要求,其中在理性地工作这一点中,“很多人认为自己需要灵感和激情,才能为宏大的目标奋斗,才能成为专业人士。著名艺术家Chuck Close说:我总觉得灵感是属于业余爱好者的。我们职业人士只是每天持续工作。今天你继续昨天的工作,明天你继续今天的工作,最终你会有所成就。”
对于这个观点,我有不同的看法。我认为在一个团队中,即使作为一个成熟的团队成员必须从事实和数据出发,但也不应该失去工作上的灵感和激情。据我所知如今很多公司的程序员每天都做着相同的工作,即使有好的灵感也会因为团队而做出妥协,日复一日,对工作的激情可能会逐日降低。因此我认为在统筹团队的要求之后,也需要保持着对工作的灵感和激情。

A:现在我更能理解这一问题,在一个团队中,一个明确的目标再加上组员每天坚持不懈向目标前进,才是一个团队真正需要的,也是成功真正需要的。灵感和激情并不能让你成为专业人士,跟着团队的目标一起学习一起奋斗一起前进才能有所成就。

Q3:
在3.4技能的反面中,作者给出了考察一个人是否精通模仿的办法。
a.给面试者一个打乱颜色的魔方;
b.要求他把六面还原;
c.如果还原了,要求他把魔方恢复成我最初给他的那个混乱的局面,必须一模一样。
我认为这种方法不能适用于考察一个人是否精通软工这门学科,就好比一个程序员解决了一些bug,并且以后发现此类bug自己能够解决,然而却需要恢复这些bug才能算精通吗?我认为一个程序员只要掌握解决bug的能力,就能算是精通,而不需要复原bug。

A:对于那些比较常见、等级相对而言较低的bug,我们确实要能还原它才能算是精通。若能做到还原它,那么以后碰到这样的问题便能一眼发现问题的根源所在,做到真正意义上的精通。在最后的团队实践作业中,我因一个相同类型的bug犯了好多次错误,原因在于我想当然认为解决了一次bug就等于掌握了它,然而并不如此,归根到底是不够熟练的原因。

Q4:
在11.4的从Spec到实现中,“写好代码后,小飞对照设计文档和代码指南进行自我复审,重构代码。“ 在这段话中,重构是什么意思?
根据网上查阅的资料,所谓重构是这样一个过程:在不改善代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。本质上说,重构就是在代码写好之后改进它的设计。但我对具体如何使用它还不是很了解,重构应该选择随时进行还是等最后再重构,还有如果发现需要大面积修改,那应该选择重构还是重写呢?

A:重构应该随时随地进行,当遇到需要重构的情况,就应当考虑重构!因为通过软工理论课的学习和实践课的经历,使我深刻领会到一个好的且及时的重构,能帮助我们找到bug,使设计的软件更容易理解。然而有时候代码太过混乱复杂,重构它不如推翻重写来的好。当一个项目临近最后期限,也应该避免重构,先要保证完成项目目标功能。

Q5:
在16.1.1迷思之一:灵光一闪,伟大的创新就紧随其后中,“就像拼图一样,很多聪明人都模糊地看出了最终图像,都在一块一块地拼接,往往拼好最后一块的人得到了最大的荣誉。但是没有前人的积累,没有自身扎实的功底,就没有’最后一块‘等着大家去拼。”
对于以上作者认为“一个成功的创新,必须要有自身扎实的功底,而对于那些技术水平不足的人,哪怕有了灵光也只能是空的构想”这点,我有不同的看法。我认为对于现阶段的大学生,可能自身的技术和功底没有那么成熟扎实,但遇到一个好的创意时,我们仍然可以先从一些比较简单的东西做起,积攒经验和能力,尽力向自己的创意靠拢,最终等到能力水平达到后再实现自己的创新。我认为创新也是需要一步步积累,并不是一蹴而就的。

A:现在我对这个问题更有深刻的理解,就算有个好的灵感有了好的规划,没有扎实的功底和技术,一切都是空谈。在团队实践中,因自己一开始对javafx没有过多的了解,有的仅仅是java的基础,因此在一开始很多功能无法熟练的去实现它。但在经过一段时间的打磨后,能相对一开始比较熟练地使用javafx。因此我现在认为,一个好的创新确实需要自身扎实的功底和技术。

每个阶段的收获

  • 需求阶段:理解了需求分析的重要性,学习了如何正确开展需求分析。
  • 设计阶段:在该阶段中收获最大的是学会了axure原型设计工具,能够根据需求制作出原型。
  • 实现阶段:在该阶段主要学会了javafx的使用以及团队之间如何高效协作编码。
  • 测试阶段:学会了对一个项目通过黑盒、白盒、系统测试等手段来测试。
  • 发布阶段:在该阶段体会到软件是需要不断维护和根据新的需求进行修改的。

理解和心得

首先这三个项目无论是从技术难度、编码量和设计人员方面都是有一定程度上不同的。在个人项目中,自己一个人完成各个阶段的实施,自己安排计划,不需要考虑其他人的因素。而在结对项目中,则需要考虑结对队友这一因素。两人需要进行任务的分配和其他沟通协调,是一次全新的体验,效果也很好。再到最后团队项目,由两个人变成了一群人,就更考验我们对组内成员的分工配合和组内沟通交流。通过了这三次项目经历,使我深刻感受到了个人和团队工作的不同,也让我体会到了团队沟通的重要性和一个真正意义上的软件工程项目。

第二部分:个人技术总结

技术链接

JavaFX 之 Canvas

概述

javaFX Canvas API提供了一个灵活的画笔。它可以通过创建canvas对象,获取其GraphicsContext以及调用绘图操作以在屏幕上呈现自定义形状,它可以在JavaFX场景图中使用。本次项目你画我猜要求呈现出一个画板并且能够绘制自定义图形,因此学习此组件来应用于项目中。

posted @ 2021-06-24 17:12  我的叶绿体  阅读(73)  评论(0编辑  收藏  举报