《软件工程》教学大纲
课程代码 | 045100312 |
课程名称 | 软件工程 |
英文名称 | Software Engineering |
课程类别 | |
课程性质 | 必修 |
学时 | 总学时:64 实验学时:16 实习学时:0 其他学时:0 |
学分 | 3.5 |
开课学期 | 第五学期 |
开课单位 | 计算机科学与工程学院 |
适用专业 | 计算机科学与技术 |
授课语言 | 全英授课 |
先修课程 | Java程序设计、算法设计与分析、数据库 |
课程对毕业要求的支撑 | 本课程对学生达到如下毕业要求有如下贡献: 1. (设计/开发解决方案)能够设计针对计算机工程复杂问题的解决方案,设计满足特定需求的计算机软硬件系统,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。 2. (个人和团队)能够在多学科背景下的团队中承担个体、团队成员以及负责人的角色。 3. (沟通)能够就计算机工程复杂问题与全球业界同行及社会公众进行有效沟通和交流,包括撰写报告和设计文稿、陈述发言、清晰表达或回应指令。并具备良好的国际视野,能够在跨文化背景下进行沟通和交流。 4. (项目管理)理解并掌握计算机工程管理原理与经济决策方法,并能在多学科环境中应用。 |
课程目标 | 完成课程后,学生将具备以下能力: (1)具有软件工程基本概念、了解软件开发工程化过程并能实施。 (2)具有软件系统的分析、建模和设计开发能力。 (3)使用计算机辅助的开发工具和开发环境帮助进行软件开发。 |
课程简介 | 软件工程课程属于计算机科学的分支,主要针对如何使开发人员有效的构建软件系统。课程内容覆盖软件工程的基础知识,包括理解用户需求、有效的进行设计、编码实现、测试、软件开发的团队协作以及应用到的工具等。课程包含对涉及的概念、技术、方法的学习和实践,从而使程序员能有效的设计、构建和维护大型软件系统。 |
教学内容与学时分配 | (一) 软件工程介绍 2学时 (1)中国软件以及软件工程的发展 1学时 (2)软件工程中的常见问题FAQs 1学时 教学要求: 了解软件工程概念,软件工程过程主要阶段和相关知识 (二) 软件过程 2学时 (1)软件过程模型 1学时 (2)过程活动 1学时 教学要求:了解软件过程和软件过程模型的概念,理解软件过程中所包含活动(需求工程、软件开发、软件测试和软件演化) (三)项目管理(Project management) 4学时 (1)软件项目管理活动 1学时 (2)项目计划 1学时 (3) 项目时间安排 1学时 (4) 项目风险管理 1学时 教学要求: 了解软件项目管理的主要任务,掌握软件项目计划和进度安排方法 (四) 软件需求 4学时 (1)软件需求分类 1学时 (2) 用户需求和系统需求 1学时 (3) 接口定义 1学时 (4) 软件需求文档 1学时 教学要求: 了解功能性需求、非功能性需求、用户需求、系统需求等概念;如何定义这些类型的需求,并记录成需求文档 (五) 需求工程过程 4学时 (1) 可行性分析 1学时 (2) 需求导出和分析 1学时 (3) 需求验证 1学时 (4) 需求管理 1学时 教学要求:了解多种软件需求导出和分析技术,如何采用需求检查等方法来进行需求验证,需求管理方法 (六) 系统模型 4学时 (1)上下文模型 1学时 (2) 行为模型 1学时 (3) 数据模型 1学时 (4) 对象模型 1学时 教学要求:了解如何建立上下文模型,划分系统边界;掌握行为模型、数据模型、对象模型等模型的概念和应用方法;掌握UML中使用到的一些模型 (七) 形式化描述 4学时 (1) 软件过程中的形式化描述 2学时 (2) 子系统接口描述 1学时 (3) 行为描述 1学时 教学要求:形式化方法基本概念和技术;使用代数的形式化描述方法来定义接口;使用基于模型的形式化方法来定义行为描述 (八) 体系结构设计 4学时 (1) 系统组织 1学时 (2) 模块划分方式 2学时 (3) 控制方式 0.5学时 (4) 参考体系结构 0.5学时 教学要求:几种系统体系结构形式以及如何使用这些体系结构形式来设计系统 (九) 面向对象设计 4学时 (1) 对象和对象类 0.5学时 (2)面向对象的设计过程 0.5学时 (3)设计模式 3学时 教学要求:软件设计如何表示为对象集合以及它们之间的交互;面向对象设计过程中的主要设计活动;面向对象设计中所涉及的多种设计模式 (十) 快速软件开发 2学时 (1)敏捷方法 0.5学时 (2) 极限编程 0.5学时 (3) 快速应用开发 0.5学时 (4) 软件系统原型 0.5学时 教学要求: 了解敏捷方法的基本思想,极限编程的原则以及实践,软件原型在需求和软件系统开发中的作用 (十一) 计算机辅助的软件工程(CASE) 8学时 (1) 计算机编程语言 2学时 (2) 计算机辅助的系统开发以及软件体系结构 4学时 (3) 计算机辅助的软件测试 2学时 教学要求:了解特殊的计算机编程语言,学习使用软件开发框架对软件进行开发以及测试。 (十二) 检验和有效性验证 2学时 (1) 检验和有效性验证计划 0.5学时 (2) 软件审查 0.5学时 (3) 自动化的程序静态分析 0.5学时 (4) 验证和形式化方法 0.5学时 教学要求: 掌握软件审查的概念和方法,了解静态审查和动态检验方法的特点和区别以及净室软件开发方法 (十三) 软件测试 4学时 (1) 系统测试 1学时 (2) 组件测试 1学时 (3) 测试用例设计 1学时 (4) 测试自动化 1学时 教学要求: 掌握有效性验证测试和缺陷测试区别,系统测试和组件测试原则,系统测试用例生成方法和原则 |
实验教学(包括上机学时、实验学时、实践学时) | (一) 需求分析 3学时 (1) 系统分析 1学时 (2) 系统需求描述 1学时 (3)编写软件需求规格说明书 1 学时 教学要求: 让学生了解需求分析的目的是描述系统所需要解决的主要问题。掌握不同类型的需求描述技术来描述软件需求,这些需求描述技术可以包括: 自然语言、规范描述形式以及形式化方法等等。 (二) 软件设计 4学时 (1) 分析系统需求 0.5学时 (2) 系统体系结构设计 0.5学时 (3) 类设计 1学时 (4) 其他模型图设计 2学时 教学要求:让学生能使用UML的多种模型图来进行软件的面向对象设计。可以使用的UML模型包括:包图、用例图、顺序图、状态图、类图等等。 (三) 软件原型实现 6学时 教学要求:学生使用C++或者Java等程序设计语言来实现一个软件系统的原型。实现过程遵循面向对象的设计以及MVC(模型-视图-控制器)的软件体系结构。实现的原型系统包括用户界面和一些主要功能。 (四) 软件测试 3学时 (1) 测试用例设计 2学时 (2) 执行测试并记录结果 1学时 教学要求:让学生在测试过程中培养测试用例设计的能力,同时应用这些测试用例来执行软件测试。 |
教学方法 | 课程教学以课堂教学、实验课以及授课教师的科研项目积累等共同实施。 |
考核方式 | 本课程注重过程考核,成绩比例为: 平时作业和课堂表现:30% 期末考试(闭卷):70% |
教材及参考书 | 现用教材:Ian Sommerville. Software Engineering, Ninth Edition. ISBN: 978-7-111-34825, 机械工业出版社2011 主要参考资料: (1)Roger S.Pressman. Software Engineering: A Practitioner Approach, ISBN:978-7-111-33581-8. 2011. (2)Shari Lawrence Pfleeger and Joanne M.Atlee, Software Engineering Theory and Practice (Fourth Edition), 影印版, 高等教育出版社, 2009 |
制定人及制定时间 | 李剑,2019年4月11日 |
“Software Engineering” Syllabus
Course Code | 045100312 |
Course Title | Software Engineering |
Course Category | Disciplinary Basic Courses |
Course Nature | Compulsory Course |
Class Hours | Class Hours:64Computer-aided Class Hours:16 |
Credits | 3.5 |
Semester | 5th Semester |
Institute | School of Computer Science & Engineering |
ProgramOriented | Computer Science and Technology |
Teaching Language | English |
Prerequisites | JAVA Programming, Algorithm Design and Analysis, Database |
Student Outcomes (Special Training Ability) |
|
Course Objectives | Student can be with following abilities after studying this course: 1. Understanding software engineering concepts and knowledge and using them to build softwares. 2.Being with abilities to make analysis on software systems and model them. 3.Using computer-aided tools and environments to develop softwares. |
Course Description | Software engineering is the branch of computer science that creates practical, cost-effective solutions to developing software systems in the service of mankind. This course covers the fundamentals of software engineering, including understanding system requirements, effective methods of design, coding, and testing, team software development, and the application of engineering tools. It includes the study and practice of a collection of concepts, techniques and tools which enable programmers to design and build, and maintain large software systems in a reliable and cost effective way. |
Teaching Content and Class Hours Distribution | (1)Introduction Hours: 2 a. Development of Chinese software and software engineering Hours: 1 b. FAQs about software engineering Hours: 1 Teaching aim: understanding software engineering concepts, phases of software process and other knowledge. (2)Software processes Hours: 2 a. Software process models Hours: 1 b. Process activities Hours: 1 Teaching aim: Knowing concepts of software process and software process model. Understanding activities in software development process(requirements engineering, software development, software testing and maintenance ) . (3)Project management Hours: 4 a. Software management activities Hours: 1 b. Project planning Hours: 1 c. Project scheduling Hours: 1 d. Risk management Hours: 1 Teaching aim: Knowing main tasks of software project management. Understanding project planning and scheduling (4)Software requirements Hours: 4 a. Requirements types Hours: 1 b. User requirements and system requirements Hours: 1 c. Interface specification Hours: 1 d. Software requirements document Hours: 1 Teaching aim: Understanding concepts of functional requirements, non-functional requirements, user requirements and system requirements, etc.. Knowing how to define these requirements and write software requirement specification. (5)Requirements engineering processes Hours: 4 a. Feasibility studies Hours: 1 b. Requirements elicitation and analysis Hours: 1 c. Requirements validation Hours: 1 d. Requirements management Hours: 1 Teaching aim: Knowing how to analyze and elicit software requirements. Understanding how to make requirements validation and manage requirements specification. (6)System models Hours: 4 a. Context models Hours: 1 b. Behavioral models Hours: 1 c. Data model Hours: 1 d. Object model Hours: 1 Teaching aim: Knowing how to establish context model and divide the system modules. Understanding behavioral model, data model and object models. Knowing diagrams in UML models. (7)Formal specification Hours: 4 a. Formal specification in the software process Hours: 2 b. Sub-system interface specification Hours: 1 c. Behavioral specification Hours: 1 Teaching aim: Understanding concept and technique of formal methods. Using algebraic based formal specification to describe interfaces. Using model based specification to describe behaviors. (8)Architectural design Hours: 4 a. System organization Hours: 1 b. Modular decomposition styles Hours: 2 c. Control styles Hours: 0.5 d. Reference architectures Hours: 0.5 Teaching aim: Understanding various of architecture styles and how to use these reference architectures to design the system. (9)Object-oriented design Hours: 4 a. Objects and object classes Hours: 0.5 b. An object-oriented design process Hours: 0.5 c. Design pattern Hours: 3 Teaching aim: Modeling the system with object sets and interactions between objects. Understanding activities in the process of software design. Studying design patterns used in the object-oriented design. (10)Rapid software development Hours: 2 a. Agile methods Hours: 0.5 b. Extreme programming Hours: 0.5 c. Rapid application development Hours: 0.5 d. Software prototyping Hours: 0.5 Teaching aim: Understanding basic idea of agile methods. Studying principles of extreme programming. Using software prototype in the software requirements analysis and development. (11)Computer aided Software Engineering(CASE) Hours: 8 a. Programming language Hours: 2 b. Computer aided system development and software architectural Hours: 4 c. Computer aided software testing Hours: 2 Teaching aim: Understanding special programming languages; Studying how to use software tools to build systems and test softwares. (12)Verification and validation Hours: 2 a. Planning verification and validation Hours: 0.5 b. Software inspections Hours: 0.5 c. Automated static analysis Hours: 0.5 d. Verification and formal methods Hours: 0.5 Teaching aim: Studying software inspection’s concept and methods. Understanding characters of static inspection and dynamic validation. Studying cleanroom software development method. (13)Software testing Hours: 4 a. System testing Hours: 1 b. Component testing Hours: 1 c. Test case design Hours: 1 d. Test automation Hours: 1 Teaching aim: Understanding verification testing and defect testing. Studying principles of system testing and component testing. Understanding methods to design test cases to test the software. |
Experimental Teaching | (1)Requirements analysis Hours: 3 a. System analysis Hours: 1 b. Describe these requirements using a standard form Hours: 1 c. Write a brief requirements specification Hours: 1 Teaching aim: It is important to remember that the purpose of requirements is to specify the problem that the system is intended to solve. There are many different types of definition and specification techniques that can be used for specifying requirements. In this project we will exercise ourselves to specify software requirements with different techniques, such as natural language, standard form and formal method. (2)Software design Hours: 4 a. Analyze the requirements Hours: 0.5 b. System architecture design Hours: 0.5 c. Class design Hours: 1 d. Other diagram design Hours: 2 Teaching aim: This project is to make an object-oriented design for the software system with UML diagrams. Students can model the system with these diagrams, such as: package diagram, use case diagram, sequence diagram, state diagram, class diagram, etc.. (3)Software prototype implementation Hours: 6 Teaching aim: Implement a software prototype with C++ or Java programming language. It follows the object-oriented design and MVC (Model-View-Controller) architectural model. The prototype includes user interfaces and some functions. (4)Software testing Hours:3 a. Test case design Hours: 2 b. Perform testing and record results Hours: 1 Teaching aim: In the process of software testing, students can create the test data, design the test cases, and run the tests. |
Teaching Method | Classroom Teaching, including Comprehensive, Designing Experiment |
Examination Method | Attendance and Experiment: 30% Final exam: 70% |
Teaching Materials and Reference Books | Reference book: Ian Sommerville. Software Engineering, Ninth Edition. ISBN: 978-7-111-34825. 2011 Other references: [1] Roger S.Pressman. Software Engineering: A Practitioner Approach, ISBN:978-7-111-33581-8. 2011. [2]Shari Lawrence Pfleeger and Joanne M.Atlee, Software Engineering Theory and Practice (Fourth Edition), 2009. |
Prepared by Whom and When | Li Jian, April 11, 2019 |
《软件工程》实验教学大纲
课程代码 | 045100312 |
课程名称 | 软件工程 |
英文名称 | Software Engineering |
课程类别 | 专业基础课 |
课程性质 | 必修 |
学时 | 总学时:64 实验学时:16 实习学时:0 其他学时:0 |
学分 | 3.5 |
开课学期 | 第五学期 |
开课单位 | 计算机科学与工程学院 |
适用专业 | 计算机科学与技术 |
授课语言 | 全英授课 |
先修课程 | Java程序设计、算法设计与分析、数据库 |
毕业要求(专业培养能力) | 本课程对学生达到如下毕业要求有如下贡献: 1. (设计/开发解决方案)能够设计针对计算机工程复杂问题的解决方案,设计满足特定需求的计算机软硬件系统,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。 2. (个人和团队)能够在多学科背景下的团队中承担个体、团队成员以及负责人的角色。 3. (沟通)能够就计算机工程复杂问题与全球业界同行及社会公众进行有效沟通和交流,包括撰写报告和设计文稿、陈述发言、清晰表达或回应指令。并具备良好的国际视野,能够在跨文化背景下进行沟通和交流。 4. (项目管理)理解并掌握计算机工程管理原理与经济决策方法,并能在多学科环境中应用。 |
课程培养学生的能力(教学目标) | 完成课程后,学生将具备以下能力: (1)具有软件工程基本概念、了解软件开发工程化过程并能实施。 (2)具有软件系统的分析、建模和设计开发能力。 (3)使用计算机辅助的开发工具和开发环境帮助进行软件开发。 |
课程简介 | 软件工程课程属于计算机科学的分支,主要针对如何使开发人员有效的构建软件系统。课程内容覆盖软件工程的基础知识,包括理解用户需求、有效的进行设计、编码实现、测试、软件开发的团队协作以及应用到的工具等。课程包含对涉及的概念、技术、方法的学习和实践,从而使程序员能有效的设计、构建和维护大型软件系统。 |
主要仪器设备与软件 | 计算机 UML 设计工具:Rational Rose Java 或者C++ 软件开发环境 |
实验报告 | 需要 |
考核方式 | 实验报告审查 |
教材、实验指导书及教学参考书目 | 现用教材:Ian Sommerville. Software Engineering, Ninth Edition. ISBN: 978-7-111-34825, 机械工业出版社2011 主要参考资料: (1)Roger S.Pressman. Software Engineering: A Practitioner Approach, ISBN:978-7-111-33581-8. 2011. (2)Shari Lawrence Pfleeger and Joanne M.Atlee, Software Engineering Theory and Practice (Fourth Edition), 影印版, 高等教育出版社, 2009 |
制定人及发布时间 | 李剑,2019年5月7日 |
《软件工程》实验教学内容与学时分配
实验项目编号 | 实验项目名称 | 实验学时 | 实验内容提要 | 实验类型 | 实验要求 | 每组人数 | 主要仪器设备与软件 |
1 | 软件需求分析 | 3 | 对目标软件进行分析,导出软件需求说明。软件需求类型包括功能性需求和非功能性需求。用需求文档标准格式来描述这些软件需求(例如用数据流图来描述业务处理流程)。撰写一份简明的软件需求规格说明书。 | 探索性 | 必做 | 2 | 计算机 |
2 | 软件设计 | 4 | 对需求文档进行分析并进行面向对象的设计。其中包括:对系统中的主要类进行分析并设计UML中的类图。同时也用其他的UML模型来描述软件系统,包括状态图,顺序图等。划分系统主要模块并用模块图来描述系统的体系结构。 | 设计性 | 必做 | 2 | 计算机 Rational Rose |
3 | 软件原型实现 | 6 | 用C++或者JAVA等开发语言实现一个软件原型系统。其实现遵照面向对象的设计。所实现的软件系统包括用户界面和一些主要功能。 | 综合性 | 必做 | 2 | 计算机以及软件开发工具 |
4 | 软件测试 | 3 | 基于软件功能和程序结构来设计测试用户,并使用测试用例来进行软件系统测试,同时记录软件测试结果。 | 综合性 | 必做 | 2 | 计算机 |
“Software Engineering” Syllabus
Course Code | 045100312 |
Course Title | Software Engineering |
Course Category | Disciplinary Basic Courses |
Course Nature | Compulsory Course |
Class Hours | Class Hours:64Computer-aided Class Hours:16 |
Credits | 3.5 |
Semester | 5th Semester |
Institute | School of Computer Science & Engineering |
Program Oriented | Computer Science and Technology |
Teaching Language | English |
Prerequisites | JAVA Programming, Algorithm Design and Analysis, Database |
Student Outcomes (Special Training Ability) | 1.Design / Development Solutions: An ability to design solutions for computer engineering complex problems, to design computer hardware and software systems that meet with specific requirements, and to embody innovation awareness in the design process and take into account social, health, safety, cultural and environmental factors. 2.Individual and Teams: An ability to function effectively as an individual, and as a member or leader in diverse teams and in multi-disciplinary settings. 3.Communication: An ability to communicate effectively on complex computer engineering problems with the engineering community and with society at large, such as being able to comprehend and write effective reports and design documentation, make effective presentations, give and receive clear instructions, and communicate in cross-cultural contexts with international perspective. 4.Project Management: Demonstrate knowledge and understanding of computer engineering management principles and methods of economic decision-making, to function in multidisciplinary environments. |
Teaching Objectives | Student can be with following abilities after studying this course: 1. Understanding software engineering concepts and knowledge and using them to build softwares. 2.Being with abilities to make analysis on software systems and model them. 3.Using computer-aided tools and environments to develop softwares. |
Course Description | Software engineering is the branch of computer science that creates practical, cost-effective solutions to developing software systems in the service of mankind. This course covers the fundamentals of software engineering, including understanding system requirements, effective methods of design, coding, and testing, team software development, and the application of engineering tools. It includes the study and practice of a collection of concepts, techniques and tools which enable programmers to design and build, and maintain large software systems in a reliable and cost effective way. |
Instruments and Equipments | Computers UML design tool: Rational Rose Java or C++ development environment |
Experiment Report | Compulsory |
Assessment | |
Teaching Materials and Reference Books | Reference book: Ian Sommerville. Software Engineering, Ninth Edition. ISBN: 978-7-111-34825. 2011. Other references: [1] Roger S.Pressman. Software Engineering: A Practitioner Approach, ISBN:978-7-111-33581-8. 2011. [2]Shari Lawrence Pfleeger and Joanne M.Atlee. Software Engineering Theory and Practice (Fourth Edition), 2009. |
Prepared by Whom and When | Li Jian, May 7, 2019 |
“Software Engineering” Experimental Teaching Arrangements
No. | Experiment Item | Class Hours | Content Summary | Category | Requirements | Number of StudentsEach Group | Instruments, Equipments and Software |
1 | Requirements Analysis | 3 | Elicit requirements for a software project. The requirements include functional requirements and non-functional requirements. Describe these requirements using a standard form (e.g. describe the business process with a data flow diagram). Write a brief requirements specification. | Exploratory | Compulsory | 2 | Computers |
2 | Software Design | 4 | Analyze the requirements and make an object-oriented design. Identify main classes in the system and draw a class diagram with UML. Other UML diagrams, such as state machine diagrams, sequence diagrams, etc., can be used to model the system. Identify main components and draw a block diagram of a possible architecture for such a system. | Design | Compulsory | 2 | Computers Rational Rose |
3 | Software Prototype Implementation | 6 | Implement a software prototype with C++ or Java. It follows the object-oriented design. The prototype includes user interfaces and some functions. | Comprehensive | Compulsory | 2 | Computers Development tools |
4 | Software Testing | 3 | Design test cases based on the functions and structure of the software, apply these test cases on the software testing, show the testing results. | Comprehensive | Compulsory | 2 | Computers |