写在前面
专业课成绩在专业分流、保研以及奖学金的争取等大学的各个环节中都十分重要。那么专业课该如何学习?期末考试又该如何应对?
为了帮助同学们取得专业课好成绩,岛主将为大家带来系列专业课学习经验分享!由于不同院校课程所用教材版本不同,分享以具体的教材版本为准。今天带来的是——软件工程导论(张海藩)第六版
教材内容介绍
01
课程特色
《软件工程导论》是计算机科学和软件工程专业的核心课程。主要在大二第二学期或大三开设,学分占比很重,是后续项目开发的前置课程。
教材重点在软件工程的基础理论和开发流程,帮助学生掌握从需求分析、系统设计到编码、测试的工程化开发过程。内容涵盖了软件生命周期的所有阶段,注重培养工程化思维,为学生提供项目管理和开发规范的指导,是本科生和研究生必修的重要教材。此课程在一些自命题学校软件学院考试是中作为一门考试科目。
02
学习重难点
在系统开发的各个阶段中,详细的分解和研究有助于确保系统的可行性和实用性。以下是将书中知识点的总结:
01
CSBAOYANDAO
可行性研究
可行性研究的主要目的是评估项目的系统解决方案是否在技术上和经济上可行,以避免在无法解决的问题上投入不必要的资源浪费。通过系统分析,研究能够帮助决策者确认项目的投入价值,确保项目方向正确。
重难点:研究分为八个步骤,从明确系统目标到编写可行性研究报告,强调了定义问题的精准性和构建合理的逻辑模型。关键难点在于准确识别问题特性,并确保推荐的方案具有操作性和经济效益。
02
CSBAOYANDAO
需求分析
需求分析的核心在于明确系统需求,提供系统设计的详实基础,包括功能需求、性能需求、可靠性需求、接口需求等五类需求,确保系统功能与用户预期相符。
获取与建模 :通过访谈等方式获取需求,并使用数据流图、实体关系图等工具进行分析建模,将需求转化为系统逻辑模型。
重难点:精确记录用户需求,利用图形工具建模,确保设计符合用户需求并具备扩展性。
03
CSBAOYANDAO
形式化说明技术
形式化说明技术使用数学手段描述系统行为,减少二义性,适用于关键系统。常用的工具包括有限状态机(适合描述交互系统)、Petri网(适用于并行事件)、和Z语言(用集合论描述需求)。
重难点:该技术的难点在于如何用数学工具准确表示系统关键特性,保持模型的简洁性和清晰性,以确保规格说明的严谨性和精确性。
04
CSBAOYANDAO
总体设计
总体设计定义系统的高层结构,明确模块组成及相互关系,确保模块之间独立,为详细设计奠定基础。设计包括选择实现方案、系统结构设计、数据库设计、功能分解和编写测试计划。
重难点:总体设计的难点在于模块化设计,确保模块独立性和接口合理性,从而为后续的详细设计提供清晰的结构基础。
05
CSBAOYANDAO
详细设计
详细设计在总体设计的基础上定义程序逻辑和实现细节,提供清晰的“蓝图”。内容包括结构化程序设计、人机界面设计和使用流程图与伪代码展示逻辑。
重难点:设计中重视用户友好性和简化程序复杂度,以提高系统的可维护性。难点在于确保界面设计的友好性和程序逻辑的简化,以便后续编码的顺利进行。
06
CSBAOYANDAO
实现(编码与测试)
实现阶段将详细设计转化为可执行程序,通过各种测试确保系统的正确性。编码遵循统一的命名和注释规范,测试包括单元测试、集成测试等。
重难点:黑盒测试关注外部行为,白盒测试确保每条代码路径的有效性。重难点在于保持代码规范与可读性,确保全面覆盖功能模块和接口的测试,提升代码质量。
07
CSBAOYANDAO
面向对象方法
面向对象方法模仿人类对现实的理解,通过对象抽象、封装、继承和多态等机制模拟实际场景。对象、类与继承、消息传递等机制增强系统的稳定性和可重用性。
重难点:该方法符合人类的自然思维方式,易于理解且便于维护。建模包括对象模型、动态模型和功能模型,重难点在于对象的抽象与封装、继承与多态的合理应用。
08
CSBAOYANDAO
面向对象设计
面向对象设计采用模块化、抽象、信息隐藏等原则,系统分解成独立模块,提高模块内聚性、降低依赖性。启发规则包括控制继承层次、设计简单类和协议。
重难点:通过分而治之将系统分解成子系统,减少耦合便于维护。难点在于实现模块化设计、信息隐藏、继承控制和系统分解,提升系统的可维护性与重用性。
09
CSBAOYANDAO
面向对象实现
选用适合表达问题域的面向对象语言,编程风格保持一致命名和注释,提高代码重用性。继承机制支持代码共享,提升开发效率。
重难点:面向对象实现强调代码复用、继承合理性和测试复杂性,关键在于确保每个模块都能有效重用,同时通过合理的测试策略保证代码质量和系统功能的全面性。
学习方法总结
1
理论与实践结合
软件工程注重实践。学习这门课的主要目的是为了后期在软件开发工程中,熟悉软件开发的各个阶段,以及在每个阶段都应有相应的文档产出。学习过程中,建议一边学习理论知识一边动手练习,比如以一个简单的项目为例,从需求分析到系统设计、编码、测试一步步实践。可以选择一个自己感兴趣的小项目,如个人博客、图书管理系统或任务管理工具,将理论知识转化为实践操作。
2
笔记整理与总结
将课程的知识点分章归纳,尤其是生命周期模型、需求分析流程、设计模式和测试类型等内容。可以使用思维导图软件整理知识体系,特别是各个开发模型、设计模式的对比,帮助更直观地掌握知识框架。同时,可以定期回顾笔记,形成知识的内化。
3
使用项目管理与代码管理工具
软件工程课程涉及到实际开发工具的使用。建议在学习过程中,熟悉一些常用的项目管理工具和代码管理工具,例如JIRA、Trello和Git。可以利用这些工具模拟项目的实际开发流程,并在项目中使用Git进行版本控制,体验团队开发的协作过程。
4
反复练习与提升
软件工程中的许多内容需要通过练习来掌握,例如UML建模、编写测试用例、设计模式的应用等。建议在学习过程中不断反复练习这些内容,巩固自己的实践能力。可以在LeetCode、Codewars等平台上练习编程和算法题,增强编码能力。
考试准备与复习攻略
考试形式
软件工程的期末考试通常以纸质试卷的形式,主要考察学生对各个软件开发阶段的理解,一般题型包括选择题(基本概念)、填空题,简答题(对概念的理解)、分析题和画图题(如用例图、数据流图等)等。题目最大的重点在于需求分析、软件设计原则,以及测试用例(黑盒测试和白盒测试)的编写。
复习重点
在复习时,关注以下重点内容:
-基础概念:生命周期模型、需求分析流程、测试类型、项目管理等。
- 关键流程:需求分析、设计方法、测试方法。
- 模型和设计工具:UML建模、代码规范、测试用例编写。
- 设计模式和项目管理工具:如单例模式、工厂模式、Git的基本操作。
复习策略
复习时,可以按以下步骤分阶段进行:
1
第一阶段(知识点理解,约一周)
阅读教材和课堂笔记,理解基础知识,复习各章节的主要内容。
2
第二阶段(重难点攻克,约一周)
针对生命周期模型、UML建模、算法复杂度分析等重点内容,结合实例进行深入练习。复习需求分析时,结合具体的应用场景,理解如何提取和分析需求。考虑如何为不同类型的用户设计合适的解决方案。复习设计原则时,结合课程中的案例,理解每种设计模式的优缺点以及适用场景。建议通过经典的设计模式(如单例模式、观察者模式等)进行练习,将理论与实际问题结合。复习时测试时应明确单元测试、集成测试和系统测试的区别和联系。
3
第三阶段(题目练习,约一周)
结合历年考试题或课后习题,进行练习。重点练习设计题和算法题,提升实际解题能力。
4
第四阶段(模拟测试,查漏补缺)
进行限时模拟考试,尽量使用真题或考研模拟题,评估复习效果并强化薄弱知识点。
学习资源推荐
网课资源
B站
https://www.bilibili.com/video/BV1Ns41177VM/?spm_id_from=333.337.search-card.all.click)、中国大学MOOC(哈尔滨工业大学,徐晓飞、战德臣老师)等平台有许多优秀的软件工程课程,可以观看清华、北大等高校的公开课,以加强知识的理解。
在线题库与编程平台
LeetCode、Codewars等平台有大量编程练习题,可以帮助强化编码能力。
辅助书籍
《Head First 设计模式》、《UML精粹》以及《敏捷软件开发》均为软件工程学习的经典参考书籍,可以帮助补充课外知识。
工具资源
可以使用Visual Paradigm或StarUML进行UML建模,利用GitHub或GitLab练习版本控制和代码协作技能。
岛主有话说
岛主也为大家准备了
《软件工程导论》第六版(张海藩)
配套学习资料包
内含教材&课后答案pdf
知识点总结&期末题库&名词解释
助力大家拿到高绩点!
点击下方卡片
关注公众号【计算机保研岛】
后台回复关键词【软件工程导论资料】
即可免费领取!
BaoYanDao BaoYanDa
计算机通类资料
通类资料
计算机保研手册
计算机资讯资料
项目解析手册
笔面试真题
笔面试知识点
文书资料
面试资料
竞赛资料