这个作业属于哪个课程 | <软件工程23年春季> |
---|---|
这个作业要求在哪里 | <软件工程实践总结&个人技术总结> |
这个作业的目标 | <课程回顾与总结、个人技术总结> |
其他参考文献 | 《构建之法》 |
这是过去问题回答的博客
Q1:对于一名工程师而言,究竟应该是更”专“一点好,还是更”广“一点好呢?
A1:我还是保持原来的回答——"专"和”广“都要兼顾一些,在团队合作项目中更加坚定了这个想法,因为你需要足够"专",才能够把你所负责的部分做得够好。而同时你也需要足够"广",在团队初期技术选型的时候,可以敲定适合该项目的框架与所需技术,以便获得最佳实践体验。此外,与其他团队成员一起团队开发时候经常需要沟通,所以也需要足够广,这样的话能够减少许多交流成本。再者,实际开发中,你除了自己要负责的部分外,很可能还要帮助其他成员,这时候也是需要足够广的。
Q2:学生与职业程序员的区别?
A2:通过这次软件工程实践课,会发现职业程序员解决问题的思路要更为高效与简单,并且我发现职业程序员较之学生,在代码书写规范上更加注重,而且很多时候除了了完成功能外,还会考虑到如何降低耦合度,如何去封装,如何用更加简洁的代码书写方式,如何让自己的代码部分也能够让别人接手,而学生很有可能不会注意到这一点。
Q3:完成任务的预估时间如何预估?
A3:完成任务的预估时间和之前的回答一样,个人计划完成时间的1.5到2倍左右,经过多次的软工实践作业,从个人开发来说,我会倾向于做得更好,所以个人开发的时候,会舍得多花一点时间去把自己的任务优化、做好。团队完成任务的时间预估为计划的2到3倍,有的时候开站立式会议讨论进度的时候,原本计划1~2天内完成的任务,往往会因为其他因素而花上更长的时间(比如前后端交接的时候前端写好了,但是还要等后端接口给好,才能渲染数据测试)
Q4:结对编程中,应选择与自己能力互补的搭档比较好还是与自己能力相近的搭档比较好?
A4:这个问题也是与之前的回答一致——与自己能力互补的搭档,通过实践课的结对编程,我和搭档还是有不少遗憾的,比如没能实现前后端分离,我们两个的技术都是前端方向,所以最后时间较紧的情况下,就只能纯前端开发了,如果我们的能力互补的话,或许我们能够实现前后端分离。所以我认为还是能力互补的搭档会比较好,这样能够实现1+1>2的效果。
Q5.在团队项目中,是选择有利于自身成长、最具挑战性的工作;还是有利于团队、有把握的完成的工作?
A5:通过这次团队项目开发,我认为还是要选择有利于团队、有把握的完成的工作,我们团队在开发过程中,因为时间限制,要把控项目进度,大家都基本都是求稳,在安排的时间内,把自己负责的部分做好。而对于有利于自身成长、最具挑战性的工作,可能要往后站站,毕竟挑战性工作可能具有一定的风险,管控这个风险也是需要成本的,除非你已经完成了你所负责的部分了。
NABCD模型
与使用墨刀进行原型设计
,对我们产品的需求设计有更明确的认识,让我们充分认识到如何从用户角度思考,如何以人为本。同时在需求阶段,我们还确定了技术选型。收获就是对产品进行需求分析的能力提高了。element ui + vue2
,进行后台的一个快速开发。通过实际编码和开发过程,我提高了自己的编程技巧和代码组织能力并对vue2这个框架有了更深的认识,此前对前后端分离还是只停留在概念阶段,这次才是真正接触到了前后端交接
。在这个阶段,我也学会了与团队成员进行协作,使用GitHub
进行代码管理,并解决实现过程中的技术难题。用户体验反馈的调查问卷
,我们在β阶段对设计上不合理的地方进行了优化与完善,这个阶段使我更加明白以用户为导向的重要性,在开发的过程中,应当时时注意用户实际体验感。Junit5进行单元测试
。JProfiler性能测试工具
,也学习到了别人的一些优化思路,以后实战的时候性能优化肯定是十分重要的。Axure
;而在代码实现阶段,我也是第一次接触学习vue框架
,虽然在结对编程中有许多缺憾,但是,在结对编程阶段的经历也可以说是为后面团队项目开发做铺垫。前后端的充分沟通
,要事前写好API文档
,确保前后端的理解一致,否则在前端渲染数据时发现接口有问题,还要修改,这是很浪费时间的。有问题一定要及时报备
,比如我之前本来打算直接用ruoyi的模板开发后台,所以乐观地估计了完成时间,但是后来发现与我们产品的需求与技术选型还有差异,且二次开发难度不小,只能用element ui+ vue2快速搭建一下后台了,后面时间还差点不够了。不过α阶段做得好了,β阶段要做的事就少了很多了。目标 | 理由 | 分数 |
---|---|---|
目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。 | 在团队项目编写中,我们的主要目的:为考研学子提供所需的考研信息资料与经验分享,来帮助考研学子成功上岸。目的是便利考研学子获取信息 ,符合以人为本,积极向上的软件开发理念 。 |
90 |
目标2: 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 | 使用 NABCD模型进行分析 ,明确用户需求并将功能细分,使用原型设计工具墨刀 初步构建 ,能够辨别用户客户多样化要求。 |
85 |
目标3: 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 | 遵循之前需求分析与数据库设等体系结构设计, 在后续实际代码开发阶段中依照体系结构设计与设计原则进行功能完善,形成了一个可行的软件系统设计方案 | 85 |
目标4:能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 | 在参照竞品中的优秀设计,作为优选设计方案备选,与队员交流探讨后,选择适合本项目的有利改进,最后统合为优选设计方案,实施到软件系统中 | 85 |
目标5:遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。 | 在设计API文档与编写系统设计说明书时,参照相应的业界标准,具有编写此类文档的能力,但是与业界同行交流能力可能还有欠缺 | 85 |
目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 | 能够和其他团队成员进行有效沟通与协作,能够协调团队,明确进度,方便开展工作 | 90 |
目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 | 使用teambition进行项目管理 ,可以估计项目工作量,方便管控和规划项目开发进度,对复杂项目,能够拆分为子任务逐步实现 |
90 |