软件工程教学大纲
课程代码: 选课编号:
学分:4 学时:64
适用专业:计算机科学与技术(本科) 课程类别:专业技术必修 课程说明:讲授
一、课程简介 (一)课程性质
软件工程借鉴了传统工程的原则和方法,目的是高效地开发高质量的软件,涉及到计算机科学、数学、工程科学和管理科学。其中,计算机科学和数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量和成本的管理。
软件工程课程在计算机学科人才培养架构中占有重要的地位,教授包括软件系统的设计与开发,项目的开展与维护,研究如何经济有效地开发可靠的系统,学习技术方法、工具和管理等诸多方面,同时它又是一门迅速发展的新兴学科,新概念、新技术、新方法不断涌现。是帮助学生总结已修专业科目,学习成为行业实践者的重要课程。
(二)课程目标
本课程要求学生掌握软件工程的基础知识和理论,分析大型软件开发过程中出现的问题,了解软件开发生命周期中常用的技术,掌握软件开发过程的结构化方法和面向对象方法,学会运用面向对象的软件工程方法进行软件需求分析、系统设计、实现和测试,并通过课程实践,实际运用软件工程的思想和技术,掌握软件项目管理和团队开发的工作方法,并从事复杂软件项目开发和维护的实践应用能力与创新能力。
完成课程的学习之后,学生应该能够:
(1)意识到工程性在软件开发中的重要性,例如选择用户所关心的问题,使用有限的资源,保证软件的可靠性和可维护性;
(2)分析一个软件开发问题,简单准确的表达它的本质; (3)设计一个结构模型来解决问题,评价解决问题的方法; (4)实现一个模型以便于它可以正确有效的执行;
(5)以小组为单位,在软件开发的各个方面合作,并且有组织有建设性的相互交流意见,执行计划,书写文档。
(三)内容框架
要求学生需要具备的相关知识:具备计算机专业的基础知识,掌握程序设计基础、数据结构、操作系统、数据库原理等知识,具有一定的编程能力。
根据本科生的知识基础和学习特点,本课程集中介绍了软件工程的基本知识体系,从实用的角度讲解软件工程的基本原理、概念和技术方法。整个课程分成七个部分:
(1)软件工程概述,涉及一些基本概念和基础问题,包括软件的发展历史与主要问题、软件的特点、软件工程与软件过程的概念、软件生命周期过程和软件开发的基本策略;
(2)介绍软件项目管理的基本知识,包括软件项目管理的基本概念、软件项目规划与估算、软件项目风险管理、软件项目的组织等内容。
(3)讨论与需求工程有关的各种问题,包括软件需求和需求工程的基本概念、常用的需求获取技术和结构化的需求分析技术;
(4)结合目前流行的面向对象技术,重点介绍了基于UML的面向对象分析和设计技术;
(5)介绍编码和软件测试,包括软件测试的概念和原则、软件测试的基本方法和过程管理;
(6)讨论软件维护,包括软件可维护性的概念和软件度量、软件逆向工程和再工程的知识;
(7)介绍软件质量与软件质量保证有关的内容,包括软件质量的基本概念、质量管理的理论体系和软件质量保证活动、ISO9000和CMM;
(四)教学时数分配
序号 1 2 3 4 5 6 7 8 总计 内容 软件工程概述 软件项目管理 需求 面向对象分析设计 编码和软件测试 维护和再工程 质量管理 进阶 建议学时 8 12 12 16 8 4 4 0(根据具体情况安排) 64 表格 1:分章节教时分配表
(六)教学方式
学生在学习过程中应该真正理解软件工程的基本概念和理论,树立软件工程的思想,由于软件工程具有很强的实践性,因此特别需要结合课程
实践掌握软件工程的技术和方法。课程以讲授和实训互相穿插的形式进行,学生能力允许的情况下可以以实训为主讲授为辅。
二、教学内容及基本要求
章节 教学内容 一、软件工程概述 1、软件的本质 2、定义软件工程学科 3、软件过程 4、软件过程模型 5、敏捷开发 要求 理解产生软件危机的原因及解决途径; 理解软件工程的基本原理; 了解软件工程方法学; 深入理解软件生命周期中各阶段的基本任务; 理解软件过程模型; 重点: 软件工程的基本原理; 软件生命周期中各阶段的基本任务; 难点: 各类软件过程模型的特点及适用范围; 二、软件项目管理 6、软件工程人的了解软件度量的概念、范围、方面 软件特征量; 7、项目管理概念 了解软件开发成本和工作量8、度量和估算 的估算; 9、项目计划和风掌握基于 LOC 的度量方法险管理 和基于 FP 的度量方法; 10、文档写作 了解软件计划的概念、内容、分类和项目调度技术; 了解项目管理的“4P”。 了解常用的软件项目管理活动。 了解常用的软件项目组织形式。 理解项目沟通的复杂性、沟通方式和沟通活动。 了解风险管理的过程; 熟练掌握可行性分析方法及相关文档写作; 重点: 软件度量; 基于 LOC 的度量方法和基于 FP 的度量方法; 项目管理的内容、流程和以架构为中心的项目管理; 软件开发的诸角色,团队的组织结构; 工程文档写作; 学生活动 备注 学生选题,并根据选题和学生实际情况分组; 完成项目范围与视图说明; 完成可行性分析报告; 三、需求 四、面向对象分析设计 难点: 度量和估算; 工程文档写作; 11、需求概念 掌握需求的定义,掌握软件12、需求建模:结需求的不同层次; 构化方法 了解软件需求工程过程; 13、需求建模:基掌握常见的需求获取技术,于UML的面向对象确定项目的前景与范围; 方法 熟练掌握软件需求规格说明 的写作及撰写的原则,掌握需求分析模型; 理解需求分析任务目标和原则,熟练掌握数据流程图、数据字典,理解状态变迁图、Petri网、判断表和判定树及其它分析方法; 了解需求评审过程; 了解需求管理活动,包括变更管理,跟踪管理和需求管理工具; 重点: 需求分析任务目标和原则; 数据流程图、数据字典; 需求规格说明写作; 难点: 数据流程图、数据字典; 需求规格说明写作; 14、设计概念 理解设计的原则;软件架构15、体系结构设计设计和详细设计的概念; 和设计建模 掌握设计概念和原则,理解16、界面设计 以用户传统为中心的设计; 17、设计模式 熟练掌握内聚和耦合的概 念、分类和谱系,掌握有效模块化技术; 掌握传统的设计描述方法,熟练掌握层次结构图和程序流程图,掌握NS图和PDA图,了解PDL及其它; 了解界面设计指导原则、掌握界面设计基础; 掌握面向对象方法的原理,理解面向对象方法的基本概念,包括类、对象、消息、继承等,理解面向对象方法的优点; 了解几种常用的面向对象分析方法,例如OMT以及OOSE方法; 需求规约或需求分析报告; 使用UML完成用例建模和分析类设计; 学习文档写作与编制并完成需求规约或需求分析报告; 使用UML完成架构设计,包括静态和动态建模; 设计界面,尝试完成软件原型; 了解面向对象的设计描述方法; UML语义语法和工具; 重点: 内聚和耦合; 面向对象思想; 用例; UML; 难点: 基于UML的设计模式 五、编码和软件测18、编码风格 了解程序设计语言的分类和试 19、软件测试策略 语言的特性; 掌握编码风格,能写出正确清晰高效的代码; 掌握代码的度量方法; 理解测试及其目的; 理解测试当中的通用原则; 掌握白盒测试的概念、基本途径测试、条件测试和循环测试等; 掌握黑盒测试的概念、等价类划分和边界值分析; 了解其它常用的测试方法; 了解面向对象测试方法; 掌握单元测试的考虑,掌握单元测试和集成测试; 重点: 编码标准和原则; 测试原则; 常用白盒及黑盒测试方法; 难点: 测试原则; 常用白盒及黑盒测试方法; 六、维护和再工程 20、配置管理 了解配置管理的概念; 21、维护和再工程 了解维护的原因和维护的一 般手段; 理解维护的类型、成本和过程; 了解软件变更问题,软件演化的特性和策略; 软件工程再工程; 重点: 维护的类型、成本和过程; 难点: 再工程和逆向工程; 项目的实现; 按国家标准整理和修订文档;