688
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | 2023年福大-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
| 这个作业的目标 | 总结心得、回顾并思考过去提出的问题、自我评估、完成个人技术博客 |
| 其他参考文献 | 《构建之法》、理论课教材 |
Q1.程序员是否有必要为满足小部分人的需求去做软件,或者为软件添加某些功能?
A1. 我现在仍然认为应当以把握核心需求,优先解决主要问题为重。
在历次实践的策划阶段中(包括结对作业和团队作业),我们为了能在一众作业中展现自己的独到匠心,总想着画大饼增加一些天马行空的设计,而做这些设计的策划时,我们往往会忽视技术壁和时间规划。很多时候实现主要需求就已经消耗了团队的大半数精力和时间,因此为了小众需求去投入过多精力是非常不必要的。
Q2.低层次的问题能依赖工具解决么?
A2. 寒假时我的回答是不能完全依赖工具,而在这小半年中实际上手ChatGPT等AI工具后,我认为用工具去解决低层次问题并不是件羞耻的事。
在团队作业中,我们通过使用ChatGPT完成了一部分业务逻辑代码的原型编写,实现了原型开发过程的快速设计。另外,为了让生成的代码能够正确、高效运行,我们还在性能优化上做了不少功课,总的来说并没有在学习的细节上落下多少,还额外提高了开发效率,给了我们很大信心去完成整个的开发。正如助教在寒假作业的博客下所评论的,“要有自己的一技之长”,工具的使用也让我们更能够关心到更艰深的问题,尽早学习更多高阶知识。工具辅助开发能够成为流行确实尤其独特优势。
Q3.为什么“开源”要设置那么多的协议呢?
A3. 我认同之前的回答。在实现小程序的前后台页面时,我们寻找了不少开源免费的模板以便参考。开源协议虽然不能完全解决代码版权盗用的问题,但至少保障了我们这种学习者的环境,它像一剂定心丸——遵照协议,我们可以放心地在协议允许的范围内使用这些开源的模板。
Q4.写博客也会花挺多时间的,如果把这些时间花在写代码上面会不会更好?
A4. 我的观点与寒假时相同,甚至更加坚信编写博客的好处。这学期可是写了不少博客……编写博客的作业督促我对这一阶段的工作进行整理,每次写作博客的时刻,都是我对当时的作业理解最深的时刻;写博客的经验也能被用在撰写实验报告上,以前很苦恼实验报告究竟要如何才能凑够字数,而现在我能非常从容的从多个方面详细的解释实验内容;另外,写完博客也给人一种成就感,回看过去的博客,当时的一处处细节又浮现在眼前……知识与经历都深深刻进回忆,难以忘记了。
Q5.开源项目的商业价值如何体现?
A5. 我认同之前的回答。在实际开发中,开源项目往往有大量开发者使用,因此这些项目对应的学习资源也是最多的。光从开发教程这一方面来看,开源项目就能创造大量的商业价值了,更别说它们还有庞大的生态,生态带来的附加价值又是何其庞大,呵呵……
需求阶段
需求阶段,我学会了运用NABCD模型进行竞争性分析。套用模型的五个部分,让我能很容易发现当前设计中存在的缺陷。毕竟说服客户前,需要先说服自己,好的设计才是成功的基石。
设计阶段
在团队项目中,我在设计阶段主要负责了系统安全和权限设计。通过学习,我学会了运用经典的RBAC模型进行权限设计,并使用关系图描述不同角色间的继承、约束关系。
实现阶段
在结对作业中,我主要负责前端组件开发,这部分要求我接触了不少关于Vue+ElementUI的应用案例。但是写CSS实在太痛苦了于是团队项目怒转后端(),我学会了使用node.js来实现后端接口。另外我也学会了使用云开发这种新兴的开发手段,它允许我们便捷地部署、监听数据库变化,并执行指定的回调动作。同时,在开发中,我对多线程并发有了更进一步的体会,且学会了通过编写链式调用让不同线程及子线程能异步配合,确保得到确定的运行结果。
测试阶段
在个人项目中,我学会了安装相应插件,对项目展开实际的性能测试和单元测试;在团队项目中,我学会了编写合适的测试用例,发掘、定位代码中隐藏的bug,以及编写驱动模块和桩模块来方便地验证代码BUG的修复情况。
发布阶段
由于开发微信小程序的发布过程过于无脑简单,因此在微信的上传发布上并没有学到多少,倒是结对作业中,我与队友学会了将web项目部署在阿里云服务器上,真正的体验了一回Web项目开发的流程。
个人项目
个人项目中,我首次将软件开发作为一种工程对待。从前期对作业需求的理解到确定使用的类库架构,再到后期的测试和改进,如此完整地走过一个项目的生命周期还是头一回。这个项目的编写也极大地提升了我的工程水平,让我摒弃了“只要结果对就OK”的想法,使得我能够更加立体地看待开发这一活动过程。
结对编程
结对编程中,我首次与他人合作完成一个项目。从前期的Axure原型设计到后期的编码实现,无不需要紧密配合。在这阶段中,我第一次尝试使用git这种版本控制工具进行团队开发。虽然当时我们也有过因操作不当而导致自己的代码丢失的这种尴尬情形,但这一阶段也让我实实在在体验到了通力合作的强大。在与队友的配合和互相鼓励中,我们在一周内完成了不小的工作量,最后也收获了出我们意料的好成绩。
团队项目
团队项目可谓是使出了我们这三年以来的“浑身解数”,我们既选择了完全没接触过技术类型(微信小程序),又选择了新兴的云开发平台。使用Node.js编写云函数和微服务是市面上非常常用的方式,能学会这方面的知识,也让我对当今流行的技术框架有了一定把握。对着开发文档边做边学,这样的经历也很符合真正的开发过程吧,这次经历算是对未来职业的小小预习了。
| 目标 | 目标解释 | 自我评分 | 理由 |
|---|---|---|---|
| 目标1 | 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。 | 95 | 本人理解软件工程师的职业道德规范和实践要求,以及理解软件产品对社会、健康文化等方面的影响 |
| 目标2 | 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 | 80 | 可以辨别主要需求和次要需求,能够发现潜在需求。能使用UML等图例来拆解、分别详细描述用户需求。 |
| 目标3 | 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 | 70 | 我自觉自己对实际设计没有信心。一切当初看起来合理的设计,实际上总会因为平台、性能等各种限制不能完全如愿实现……相关的学习之路还很漫长。 |
| 目标4 | 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 | 78 | 理由同上,可以进行创新设计,但往往太过不切实际导致实现比较困难,一开始选择的设计方案同样欠佳,往往是后知后觉。 |
| 目标5 | 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。 | 90 | 参与了需求规格说明书、系统设计说明书、系统测试报告等文档的撰写,对各类文档的标准较熟悉。 |
| 目标6 | 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 | 78 | 能够与其他成员开展有效的沟通和协作,但缺少组织和指挥的能力,总是自己独揽复杂问题。 |
| 目标7 | 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 | 83 | 在理论课中学习了工作量的相关估算方法,也使用了Teambition作为项目管理工具。但任务的分配和管理能力欠佳。 |
个人技术博客——微信小程序Collection.watch()应用总结
Collection.watch()是微信小程序数据库集合引用的重要方法之一,它能够监听集合中符合查询条件的数据的更新事件,并执行编写的回调事件。
从个人到结对再到团队编程,相信你开始感受到了项目团队的规模的不同,带来的体验上的不同,希望继续加油努力!
写完博客也给人一种成就感,回看过去的博客,当时的一处处细节又浮现在眼前……知识与经历都深深刻进回忆,难以忘记了。
博客能帮助你和很多读者, 另外, 感谢你的详细的 ‘回答’ + ‘再次回答’。 希望你可以把你的回答加到 https://bbs.csdn.net/forums/SoftwareEngineering?typeId=828 原始的提问中,帮助后来者。