《软件工程概论》是一门集理论与实践于一体的核心课程,旨在全面介绍软件工程的基础概念和原理。课程内容涵盖软件生命周期的每个阶段,包括软件工程流程、方法、模型、需求分析、设计、实现、测试以及项目管理等内容。
通过本课程的学习,使学生了解软件项目生命周期中在不同阶段如何使用不同的软件工程方法进行问题分析和解决。课程将指导学生如何严格遵循软件工程方法论,从而提高软件开发项目的成功率,显著降低开发和维护过程中的错误率,为学生未来深入学习软件工程或在该领域开展职业生涯奠定坚实的基础。
课程目标 1.掌握软件工程的基础知识,具有发现问题、分析问题和解决问题的能力;
课程目标 2.能基于软件工程的专业知识,正确表达一个软件工程问题的解决方案;
课程目标 3.能客观评价软件工程领域的相关发展对社会、安全以及文化的影响;
课程目标4.能及时跟踪软件工程领域及相关行业发展状况,并掌握软件工程领域复杂工程问题决策的方向和方法。
学习《软件工程概论》需要具备一定的计算机科学导论、程序设计基础、数据结构、面向对象程序设计等方面的知识。
1. 教材与参考书
• 《软件工程:理论与实践》:许家珆编著,全面系统地介绍了软件工程的基本理论和实践方法。
• 《软件工程:实践者的研究方法》:作者是Roger S. Pressman,详细介绍了软件过程、软件工程原则以及项目管理等核心概念。
• 《软件工程:系统开发原理》(原书第4版):Ian Sommerville所著,提供了软件工程的全面概述,内容涵盖了需求、设计、测试及维护等方面,适合用作补充阅读材料。
2. 学术论文与研究报告
• IEEE Transactions on Software Engineering:这是软件工程领域的权威期刊之一,发表大量关于软件工程理论和实践的最新研究成果,适合进阶学习。
• ACM Digital Library:美国计算机学会数字图书馆收录了大量软件工程相关的论文,是获取最新研究资料的好去处。
3. 实用工具与框架
• GitHub:学习如何使用版本控制系统对代码进行管理,GitHub是全球最大的代码托管平台,也是软件工程实践中不可或缺的工具。
• Docker、Kubernetes:这些是现代软件开发中常用的容器化和自动化部署工具,了解其基本使用方法对软件工程学习非常有益。
Q : 选择不同的软件过程模型需要考虑的因素有哪些?
A : 这种选择基于项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。
Q : 软件实现是软件项目中最重要的部分么?
A : 不是。软件开发过程包括:需求分析、系统设计、程序设计、编码、测试、维护,其中最重要的是需求分析。
Q : 实体关系(ER)图是在需求期间完成么?
A : 在形成初步的需求规格说明书之后即可开始完成实体关系的建模了。
Q : 如何区分需求和设计过程?
A : 需求的目标是讲清楚说做什么,设计的目标讲清楚怎么做?
Q : 软件设计中的设计原则在掌握不好的时候能否适当违背?
A : 设计原则是把系统功能和行为分解成模块的指导方针,初学者如果做不到也需要尽量参照在设计中尽量参照其他优秀的设计对自己的设计进行改进或者迭代,及时真的短期内无法达到,也要了解违背的弊端,尽量将弊端带来的风险控制在可以接受的范围内。
Q : 软件体系结构风格可以混搭么?
A : 实际的软件系统中很少有单一风格的设计,在构造系统的时候可以在不同的层次不同级别组合使用不同的体系结构风格。
Q : 集成测试的要点是什么?
A : 集成测试也叫组装测试、联合测试、子系统测试或部件测试。集成测试是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统。测试的设计者需要考虑从整体性考虑问题,而不是局部,需要考虑模块间的协作、全局数据结构、消息在模块间的传递,累计效应等问题。
Q : 项目的风险能够被消除完么?
A : 不需要,需要通过风险管理主动而系统地对项目风险进行全过程的识别、分析 和监控, 最大限度地降低风险对软件开发的影响。