688
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | 2022年福大-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
| 这个作业的目标 | 回顾寒假作业对《构建之法》中问题,写出在这门实践课程中的总结和收获 |
| 其他参考文献 | 无 |
问题一
对于一名工程师而言,究竟应该是更”专“一点好,还是更”广“一点好呢?
对于这个问题,我的回答与上次回答基本一致。 我仍然认为不能独立于人去说明。有些人选择广,这样他们找工作找活更容易。而对于另外一些人,他们选择专,在某一个领域钻研,走在技术的前沿,突破技术,既有成就工作也好找。不过对大多数人来说,我认为专比广好,作为一名工程师,应该先专于某个方面,掌握一门可以拿得出手的技能,再去研究其他的方面。
问题二
为何长久以来用户体验设计师或者用户体验专业没有被软件工程师或者计算机系所代替?
在这次实践的结对实践中,我体验到了这一点,做出来的界面就不大好看,虽然功能都实现了,但是基本不考虑美观体验的方面。 程序员主要负责软件结构和算法方面的内容,让程序员设计用户体验良好的界面,有点困难,毕竟程序员不专精于此,有时他们认为好的界面往往达不到预期。毕竟隔行如隔山,有些事就得交给合适的人来做,才能事半功倍。
问题三
如何区分一个好的程序员和不好的程序员呢?
这点从实践中也可以认识。我这次团队协作中负责测试和代码复审,有的人写的代码很好理解,也有相应的注释,缩进也很规范。但有的人要么代码逻辑乱,虽然最后完成了,但没有上一个代码好理解。有的人不写注释,让人看得头疼。有的人不好好缩进,不好阅读。 所以对于区分程序员好还是不好,我认为要看他所写的程序。从程序中,我们可以看出他的业务理解能力,对技术的理解程度,以及逻辑思维。程序功能完善,代码明了,bug少,就是一个好的程序,程序员就是一个好的程序员。
问题四
程序员是否有必要为满足小部分人的需求去做软件,或者为软件添加某些功能?
这个问题的重点是需求。如果这个需求是伪需求或者没有实现的价值,程序员就没有必要去添加功能或者去做软件实现需求,这样只会让软件变得臃肿或者做无用功。如果有必要实现,就要去实。所以,是否要去满足需求管理提炼需求,将符合产品需求的需求提炼出来。
问题五
软件的行为和用户的期望值不一样,就一定是 Bug 吗?
该观点未改变,按照团队协作中的图片上传为例,我们只允许用户在一个问题中发布三个图片,如果用户期望能发9张,这就与软件的行为不一样,但软件仍然按照团队的逻辑运行。“bug是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。”,用户的期望值与软件的行为不同,可能是用户的期望与开发者的期望不一致导致的,软件遵循了程序的运行逻辑,程序本身并没有错误,就不是bug,但这个情况可以当做是用户的需求,开发者可以判断改动。
需求阶段
在结对、团队实践中,需求阶段都使用到了nabcd模型进行需求分析,可以很好地描述开发软件的需求、优点、实现的可行性。在过程中收获了问题的分析能力。
设计阶段
在这一阶段,实现了原型设计、类图er图设计、数据库设计以及用例分析。
团队项目我负责测试,也包括一些数据库数据的编写及数据库修改。我深刻地认识到数据库设计一定要仔细,满足需求,不然在开发过程中修改数据库,添加新字段,修改数据类型等等可能导致开发阻塞、开发人员频繁修改代码。这点我深有体会,在开发过程中修改数据库,设计基础数据,有些不和修改后的规范,导致程序在运行过程中无法展示数据。
实现阶段
在阶段项目实践中主要负责后端接口开发,使用的技术栈是springboot、mybatis,与制定的学习路线一致。学会了springboot开发的规范,关于dao、service、controller层的开发更加熟练。且在与前端的对接上,锻炼了沟通能力。
而在团队项目实践中,我是测试岗,不参加实现的开发。
测试阶段
在后端方面,主要使用单元测试、接口测试。使用junit4对接口进行单元测试,以及集成测试,使用postman对接口进行接口测试。而前端方面,主要使用真机测试,测试功能是否实现,实现是否正确,以及UI是否符合预期。这一阶段收获了测试能力包括黑盒白盒测试、单元测试以及自底向上的测试方法。
发布阶段
在结对项目的发布阶段,需要将jar包部署到服务器上,在服务器上搭建环境,由于项目比较简单,只需要配置jdk以及ngix,一步到位。这一阶段收获了项目的服务器部署,以及服务器环境搭建的经验。
个人项目
个人项目完成的是澳网每日赛程等信息的输出
使用网络获取赛程数据json文件,通过文件读取进行操作
项目结果只大致通过了1、2、3项测试用例,可能是程序的操作部分写得还不够仔细,存在逻辑上的问题,或者是获取的网络数据有误。这些方面都需要加强。
结对项目
结对项目使用axure进行原型设计,使用vue+springboot进行项目的开发
使用了axure的团队协作,不过使用不精,经常导致签入失败。
在vue的使用中,体验到了组件化开发的便利之处,也学习了axios的使用并应用在此项目中,向后端传输请求。
在结对项目实践中,与队友沟通协作,共同解决困难,进行前后端对接,锻炼了沟通能力,还加深了对开发的理解,以及培养了互帮互助的美德。
团队项目
这次项目是我参与的最大人数最多的项目,从确认项目到β阶段结束,我们经历了很多困难,技术上的,交流上的,不过我们最终都克服了,最终的项目成品也在我们的期望之中。这次实践,我不仅在技术上有进步,而且在与队友的沟通交流上也迈进了一步。而且,在实践中,有些认为简单的东西实现起来并不简单,团队协作也不是那么容易。有些时候,任务分工时间不明确,可能导致前后端的对接出现问题,我们这次实践中就出现了这类问题,对接没完全,导致部分功能在α阶段结束时本应该可以使用却无法使用。
| 序号 | 课程目标 | 掌握程度(百分制) | 理由 |
|---|---|---|---|
| 目标1 | 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。 | 85 | 我认为目前对于软件工程师的职业道德规范和实践要求有着很好的理解。在软件开发中,所开发的软件都是积极向上的,不影响健康文化的。 |
| 目标2 | 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 | 80 | 在分析阶段能够很好地使用nabcd模型进行分析,能够使用axure设计软件原型,但设计不够熟练 |
| 目标3 | 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 | 78 | 在项目开发中,掌握软件开发的全过程,参与了系统设计方案的制作,但出的力不够多。 |
| 目标4 | 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 | 75 | 具有设计模型的评判能力,能够优选设计方案,但不具备创新设计意识。 |
| 目标5 | 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。 | 85 | 在文档编写过程中,负责需求规格说明书、系统测试报告的撰写,但与业界同行交流能力不强 |
| 目标6 | 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 | 80 | 在团队中使用git与队友进行协作,与其他成员在测试问题上有有效的沟通和协作。但没有组织协调指挥团队工作。 |
| 目标7 | 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 | 75 | 在结对项目中,对于工作量的估计与分工十分合理。具备初步的管理复杂软件工程项目的能力。但没有选择合适的工具规划软件进度。 |
技术博客
概述:主要讲解axios在项目中的使用及拦截器、全局设置。
让程序员设计用户体验良好的界面,有点困难,毕竟程序员不专精于此,有时他们认为好的界面往往达不到预期。毕竟隔行如隔山,有些事就得交给合适的人来做,才能事半功倍。
但是软件是程序员写的, 如果程序员要做好界面, 还需要学什么技能呢? 学习这些技能,需要多少时间呢?