大三下-26春软件工程学习心得
资料仓库地址:GigaBin-y/26SpringBUPT-SoftwareEngineering: 北京邮电大学26年软件工程课程资料,大作业,智能充电桩系统,往年题,复习梳理资料
1. 课程整体印象
这学期跟着肖丁老师学《软件工程》。课程内容就是开发一款软件的全部流程,从需求设计到开发到维护等,层次分明、内容合理。
2. 成绩构成与学习策略
课程里有理论学习、课上小测、编程大作业(含一次汇报、前后两次验收)、和期中考试、期末考试,其中两次考试都为开卷。 按提纲看,期中考试考前8周内容;期末考试前 8 周内容大概占 10% - 15%,后面的软件设计、面向对象设计、软件测试、软件维护和项目管理是期末考试的重点。 开卷,题型也固定,判断、选择、简答、应用、综合题都会有。大作业,26年的题目是开发一个智能充电桩系统,需求设计文稿的编写、上台演讲自己的设计、绘制自己组的用例模型、编写自己设计系统的测试用例+对应的预期结果、最后验收
3. 学习内容主线
我把这门课分成几条主线看。
第一条是软件工程概述。 软件不等于程序,软件是程序、数据和文档的组合。 软件危机、软件工程的诞生、软件工程的定义、三要素和原则,都是在说同一件事:软件开发不能只靠个人经验,得按工程方法来做。
第二条是生命周期模型。 瀑布、原型、增量、螺旋、RUP、敏捷,这些名字很多,但本质都是在回答同一个问题:软件开发过程要不要迭代,怎么迭代,什么时候反馈。
第三条是需求分析。 这一章的重点是把用户想要什么说清楚。 需求获取、需求规格说明、结构化分析,这些东西看起来像文档,实际上是在给后面的设计打底。
第四条是面向对象分析。 UML、用例模型、领域模型这些内容,核心就是把对象、关系和职责先找出来。 这部分和课程作业最贴近,也最容易出综合题。
第五条是软件设计和面向对象设计。 软件设计要分概要设计和详细设计。 面向对象设计则是把 OOA 的结果继续往下落,重点看 SSD、操作契约、交互图和 GRASP。 这里最容易混的是“分析”和“设计”。
第六条是软件实现、测试、维护和项目管理。 实现讲编码和文档化。 测试讲黑盒、白盒、等价类、边界值和控制流图。 维护和项目管理讲改正、适应、完善、预防,以及项目范围、时间、成本、风险这些东西。
4. 作业与考试内容
这门课的题型很固定。 判断、选择、简答、应用、综合题基本都会有。 其中最值得下功夫的是综合题和应用题,因为它们会把需求、设计、测试这些内容连在一起考。
我自己觉得最有用的,是把课程作业和复习提纲放在一起看。 课程作业 2 很容易把需求分析、软件设计和 OOD 串起来。 往年题和题库则更适合拿来查漏补缺。 如果只背答案,效果不大。 还是要知道每道题在考什么阶段、什么图、什么方法。
5. 我的复习方法
这门课复习的时候,我基本是按这几个文件顺着看:
软件工程期末复习总目录每章
复习梳理期中考试复习提纲.txt期末考试复习提纲.txt软件工程考题整理_含答案往年试卷
这个顺序比较稳。 先看总目录,先知道整门课在讲什么。 再看每章梳理,把图和概念对上。 最后再刷题,这样不会一上来就乱做。
我也觉得这门课很吃图。 用例图、领域模型、交互图、类图、状态图、控制流图,这些图不是单独背的,它们对应的是不同阶段的表达方式。 图和文字能对上,复习就顺很多。
6. 最后总结
学完这门课以后,我最大的感受是:软件工程不是教你“写出代码”,而是教你“把一个软件项目做完整”。 需求不清楚,后面一定乱。 设计不扎实,代码一定返工。 测试不完整,问题一定会漏。 维护和项目管理不到位,项目最后还是会散。
所以回头看,这门课其实是在训练一种很实用的思路: 不要只盯着代码本身,而要盯着整个软件生命周期。 把流程串起来,软件工程就不会那么乱。