310
社区成员




这个作业属于哪个课程 | 软件工程实践-2023学年-W班 |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | ①完成课堂回顾和总结 ②个人技术总结 |
其他参考文献 | 无 |
- 在需求分析阶段,通过了解目标用户群体的需求,程序员可以针对这些需求进行项目开发。
- 在项目刚开始阶段,对项目进行原型设计时,是第一次对这个项目直观地体验,在一些比较大的方面的体验需要得到用户体验的反馈。
- 项目开发过程中的α冲刺结束需要用户对已经实现的功能进行反馈,然后程序员可以在得到反馈后在接下来的β冲刺时进行改进。
- 在β冲刺结束后,项目发布之前需要除测试以外的人员对已经完成的项目进行体验修改来提高用户的使用体验。
- 上述几个地方均为在本次软工实践过程中得到的想法。
- 构造测试样例可以分为几个阶段进行构造:需求分析阶段之后开始着手设计测试样例,在完成一部分代码编写时进行单元测试时可以新增测试样例,在前后端联调的时候产生的新测试样例,在最后综合测试时产生新测试样例。这几个阶段产生的测试样例总和为总测试样例。
- 在设计测试样例时,除了之前回答时提到的那些方面,还需要注意随机数据的选取,用于评估项目的性能数据,要注意设计测试样例时的数据完整性,要考虑到当前数据库中相关联的数据之间联系,尽量少用或不用直接不考虑关联的数据。
- 在通过这次的软件工程实践后,我更加确信对于这个问题我回答的答案。
- 在几次的团队作业中,每个人都有自己负责的部分,但每个人之间少不了沟通交流,需要进行沟通交流来对问题进行讨论解决。而且一个人的工作是可以在另一个人做的时候进行并发完成,并不完全像流水线一样个人的工作得在前面已经完成的工作基础上继续实现。
- 在开发过程中会有各种各样的突发情况,可能需要不断对前面的工作进行推倒重做或者是进行修改,不像流水线直接完成组装就结束了。
- 因此我认为也许在一些情况下团队成员得像流水线上的机器一样工作,但不代表他的角色就像流水线上的机器。
- 不断跳出自己的舒适区,在面对新问题时不断寻找新的解决方案,不排斥新技术的学习和使用。对不熟悉的语言或者框架要学会静心学习,并在实践中进行应用。多与他人进行沟通交流,学习他人优秀简短的代码。
- 我的回答和之前回答一样,肯定是不合适。在开发时间和质量要求上,都是商用民航发动机要求来的高。在成本和迭代速度等方面也存在显著差异。
- 当时做法:主动增加交流工作进展和遇到的问题。效果不太明显。
在需求分析阶段,主要负责的是软件需求说明书的撰写部分。
完成软件需求说明书的撰写之后,明白了软件需求说明书的重性,对于验收标准步骤和要求有了一定认识。也提高了对文档的编写能力。
说明书的撰写过程中,通过与队员之间的交流沟通,完成明确了项目的需求。说明书可以帮助其他队员加深对项目需求认识的目标,给后续设计工作和编码提供依据,尽量避免在后续工作中出现对需求不明确导致工作没办法开展的情况。并且在项目完成之后提供了验收标准,有利于在项目完成之后的评估与验证。
在设计阶段,主要负责的是系统体系结构设计与系统设计说明书的撰写部分。
完成系统体系结构设计之后,学到了系统体系结构的设计思路和方法,在设计过程中应该注意的事项,并且在答辩后学到了如何规范体系结构设计图。帮助队员和自己更好的理解到项目关键层次、里面的内容以及他们之间的联系。
完成系统体系结构说明书,学习了如何准确、规范撰写文档。为队员和自己明确了功能模块、接口设计和系统安全和权限设计。
在实现阶段中,主要负责后端的接口编码实现。
在实现过程中,学习了框架Springboot,每次使用的感受一次比一次不一样。在编写过程中,在后端组长分好项目结构的项目中编写代码,深刻体会到整体项目结构划分的作用,提高了编写代码的效率。通过学习后端组长的代码,还学会了如何在项目中导入自己所需的依赖和使用框架自带的方法。这次实现中,还用到了项目管理工具来配合项目完成进度工作,加深了对在工作中团队沟通和协作的重要性理解。
在测试阶段中分为个人编写接口的单元测试、前后端的联调和对整体项目的集成测试。
在单元测试中,我学会了使用swagger对接口进行测试,更加清晰地看清get和post传输方式中数据的不同格式。对编写好的接口进行黑盒测试。并且意识到测试数据之间的关联性在设计测试数据时的重要性。
前后端的联调过程中,深刻体会到了接口设计的重要性,在对前后端传输参数的key和value值的一致性上,得到了深刻教训。
在进行整体项目的集成测试中,深刻体会到在对数据库中数据修改时团队沟通的重要性。在发生意料之外的结果时,应该先沟通而不是在埋头苦干,换来的可能是无用功。
在发布阶段,结对编程中完成服务器部署,团队编程中负责配合部署服务器的同学完成部署。
对云服务器的部署中,掌握了部署前后端分离项目的步骤和所需要的文件。尤其是在跨域报错的地方,跌倒了无数次。在这中间可能会出现端口未开的情况,访问接口地址写错的情况,忘记加上解决跨域@CrossOrigin注释等。
- 在这次的个人项目中,最开始对于数据的爬取感到无从下手,但在阅读相关资料后,我找到了如何爬取数据的相关方法,但在使用过程中出现了方法没有达到预期效果,在同学的帮助下,我转换了一种方法,最终我学会了如何对数据进行爬取与解析爬取下来的json数据。
- 在编写代码的过程中,没有做好设计规划和框架,导致在编写代码的过程中,大规模修改之前编写的代码,浪费了不少时间。
- 对gitcode仓库的使用更加熟练,不仅完全掌握了克隆仓库、提交代码的方法,还学会了将分支合并到主干上去。
- 在这次过程中,其实遇到了一些意料之外的情况发生,但这次没有出现负面情绪,而是在耐心地将问题一个个解决,这是自己进步的地方。
- 第一次接触原型设计,对于陌生的问题,两个人配合完成显得也不是那么难解决。掌握了对Axure的使用。
- 在结对编程阶段,我们遇到了不少问题,其中有不少问题是出现在跨域,还有问题出现在部署服务器时犯的错误。在经过这次的结对编程后,让我有一次部署云服务器的经历,让我对部署服务器有了比较明显的认识。
- 第一次使用springboot框架,完成效果出乎意料的好,虽然在编写代码过程中,犯了一些低级的错误,这也是对框架不熟悉所犯下的错误。
- 在结对编程过程中,也可以体会到团队合作以及沟通的重要性。无论是在解决问题的效率上,还是完成工作的过程上,都得到了一定的提升。
- 在完成团队项目的过程中,更明显的体会到了团队合作和沟通的重要性,良好的团队沟通与分工,会让工作显得更加轻松。
- 在α阶段,根据后端组长分好整体的项目结构中编写代码,虽然刚开始会有云里雾里的感觉,感觉并没有必要这么复杂,但在之后编写过程中逐渐理解并上手后发现这并不是无用功,反而会帮助我提高效率,并且还在后端组长那学到了导入依赖和各类框架自带的方法。并且在不断学习他人的代码中,我相比于结对编程,加深了对springboot框架的理解。
- 在β阶段,对接口的理解和代码的编写速度变快,对一些需要联系表之间数据的操作也变得更加得心应手,并且学到了一个更加方便操作数据库的方法。在团队项目编写过程中,和队友们一起协作完成一项工作,让我更加意识到在工作中团队沟通和协作的重要性。并且还学到了如何使用项目管理工具来配合项目的工作。
- 在整个项目的编码过程中,深刻体会到了接口设计文档的重要性和专人负责接口设计文档的作用。
目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。
掌握程度:95
解释:作为软件工程师,我学到了关于软件工程师的八荣八耻,应该坚持诚实和正直的正常标准。不应该利用技能和能力做出不诚实、有辱软件工程专业名誉的行为。软件工程师的基本职业道德包括:保密性:尊重雇主或客户的保密要求、能力:不歪曲专业能力水平、知识产权:确保雇主或客户的知识产权受到保护、不利用技术技能来滥用他人的电脑。
软件产品可以为教育提供不一样的教学方式,给学生带来不一样的学习体验。会促进经济发展,可能会产生新的职业和商业机会。在医疗方面可以配合医生诊断治疗病人。软件产品还可以帮助文化传播和传承。
目标2: 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。
掌握程度:80
解释:在需求分析阶段,因为负责的是软件需求说明书的撰写部分,对整个软件需求过程有一个认识,对所需要的内容还是有一定的了解,能相对规范准确地表达客户需求。
但由于缺少相应的经验,对所接触到的需求分析数量过少,因此在这一部分中可能会存在经验不足产生各种各样的问题,而且对于流程只实现了一次,对需求表达工具如原型设计工具也只是简单的使用过。
目标3:掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。
掌握程度:85
在对软件设计中,我参与的是对软件体系结构进行设计和软件体系结构说明书撰写,并且通过答辩过程中学到了软件结构设计图的正确画法,并且对体系结构设计有了一定了解,因此在在软件体系结构设计方面得到了一定的锻炼。
而在这部分缺少的是对数据设计经验和构件级设计模型。
目标4:能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。
掌握程度:75
解释:在对组件到软件系统的技术评测方面,我的理解是我能完成对接口的代码阅读和功能的测试,可以在一定程度上降低代码之间的耦合度,而且在本次实践中也参与了不少测试工作。
在对设计模型的评判中,涉及的内容有点多,在这一方面我无论是自己负责的方面还是队友负责的方面肯定是还有欠缺的,并且在创新设计,优选设计方案这一方面,我深知自己是欠缺的并且在本次实践中也缺少对这一方面的锻炼。
目标5: 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。
掌握程度:85
解释:如上文中所说,我在本次实践中负责了需求规格说明书和系统设计说明书的撰写部分,在这两个文档的撰写方法上,在了解过后有了一定的实践锻炼机会,具备了于业界同行一定的交流能力,对文档的标准有了一定认识。
在测试方面我只做了测试工作,对于系统测试报告则没有进行实践,缺少了这部分的实践经验。
目标6:具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。
掌握程度:80
解释:在团队意识和合作技能方面,在这次实践中我在编码方面、接口设计方面、数据库设计方面都与相关队员进行交流和协作,并且在交流协作过程中明显体会到交流的想法逐渐同步。而且组长布置的任务我也能协调完成。
在组织和指挥团队开展工作方面,我更多的是被动接受任务,没有主动做过这方面的工作,因此在这方面是欠缺的。
目标7:能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。
掌握程度:70
解释:在这次实践中,我们团队用到了ONES作为我们的项目管理工具,这对我们掌握软件规模和工作量有直观的了解,可以比较好的估算出工作量。对与自己工作相关联的会发布给相关的负责人,在管理项目方面有一定的实践。
在辨别具体软件管理项目涉及的构成要素和对选择合适工具规划软件方面,我在本次实践中并没有涉及和认识到,并且对于项目的总体任务并不是很了解,因此这些都是我缺少的地方。
在本次实践学习到的技术内容和寒假学习路线是不一样的,这也让我意识到个人的学习路线应该和团队需要技术路线相符合才可以在做中学,能更好发挥出自己的能力。
该技术在项目进行云服务器部署时使用。难点在于:首先网上大多数资料都是通过xshell和Xftp 7来部署这对初学者来说不那么友好,其次会出现在本地可以运行,部署后会发生无法运行情况。