-
第一章软件工程概述 Software Engineering Introduction
内容:软件工程基本知识、不同类型的软件过程和软件生命周期模型、相关的建模技术和工具。
通过本章的学习,学生应了解软件危机;明确什么是软件工程,理解软件工程的基本要素;理解使用系统开发方法进行系统开发的必要性;掌握不同类型的软件过程和软件生命周期模型,能够分析实际开发对象特点并正确选择软件开发模型。 -
●1.1什么是软件工程? What is Software Engineering?
本节首先介绍什么是软件,然后介绍软件的复杂性、昂贵性、高风险性及维护困难的四个特点,从而引发了软件危机,为了应对软件危机,产生了软件工程这一重要学科。最后介绍了软件工程的概念,以及软件工程方法学的内容。
-
●1.2软件生命周期模型 Life cycle models
本节介绍在软件开发过程中常用的开发过程模型。其中经典的瀑布模型将软件生命周期划分为若干个阶段活动,并且规定了它们自上而下、相互衔接的固定次序。快速原型模型可以快速实现需求。螺旋模型是在瀑布模型和快速原型模型的基础上,增加了每一个阶段的风险分析;增量模型是一种渐进地开发逐步完善的软件版本的模型,适用于大型项目开发。
Rational统一迭代过程,简称RUP建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。最后介绍敏捷过程,极限编程是敏捷过程的一个典型代表。
-
第二章软件需求 Software Requirement
内容:需求初始化方法、结构化需求分析、非结构化需求分析。
通过本章的学习,学生应掌握软件需求分析获取技术,能够应用结构化及非结构化方法正确进行需求获取、建模、分析。熟练掌握系统流程图、系统流程图、数据流图、数据字典等工具的使用,掌握需求文档的撰写规范,能够正确进行需求评审。 -
●2.1需求初始化 Initialize Requirement
业务模型是对组织的业务处理过程的一种描述,进行软件开发,首先要了解客户组织的业务处理过程,所以可以借助对业务模型的理解开发人员建立客户,对哪些部分进行计算化的决策,业务建模是系统分析师进行需求获取过程中要做的一项非常重要的工作。本节探讨如何建立业务模型以及初始化需求在获取过程中所采取的方法问题。采用调研、调查问卷和直接观察三种方法进行初始业务模型的建立,提取出系统的功能需求和非功能需求。
-
●2.2结构化的需求分析 Structured Analysis
传统分析方法中采用数据流程图和数据字典两个业务建模工具。数据流程图是一个非常重要的业务建模的工具,主要是展示了逻辑数据流程。在借助数据流程图进行业务建模的时候,根据业务内容的复杂程度,需要多次进行数据流程图的分解和求精,才能得到最终详细的数据流程图。数据字典帮助把整个数据流程图中的数据流条目进行归类定义。最后介绍基于数据流的分析方法,采用9步法进行需求分析,即从数据流分析开始入手的,是面向数据流分析的方法代表。
-
●2.3面向对象的需求分析 Object Oriented Analysis
本节首先介绍介绍面向对象方法的重要概念与UML的组成,然后介绍功能模型,即从用户的角度展示系统的功能,包括用例图。UML静态模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类图、对象图,组件图和部署图等。UML动态模型展现系统的内部行为,包括序列图,活动图,状态图。最后介绍了Osbert Oglesby案例需求建模。
-
第三章系统设计 System Design
内容:系统设计概述、结构化的概要设计、结构化的详细设计、面向对象设计。
通过本章的学习,学生应掌握结构化和面向对象的软件设计方法,包括结构化方法概要设计过程、设计原理、详细设计工具、面向对象设计过程;深刻理解模块化方法及模块独立性原则,能够正确进行软件结构的合理性评价;能够综合运用分析工具和方法,对具有一定复杂度的软件开发进行迭代优化设计;掌握系统设计文档的撰写规范。 -
●3.1系统设计概述 System Design Introdction
本节首先研究设计和抽象。软件开发的过程,其实就是把逻辑产品变为可执行的产品的这样一个过程,也就是把事物先进行抽象设计,再加以具体实现的过程。
然后探讨关于模块的相关知识。概要设计阶段主要完成的设计对象就是module模块,通过不断的分解,最终的目的是为了实现模块内部交互程度的最大化,与此同时还要实现模块之间关联度的最小化。 -
●3.2结构化的概要设计 Structured System Architectural Design
本节主要内容是内聚、耦合及模块结构设计。内聚是模块内部各元素之间紧密程度的度量指标,根据内聚度的不同,按照内聚度从低到高,我们可以把它分成7个级别:分别是偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、功能内聚、信息内聚。
耦合是指两个模块之间的交互程度,按照模块之间耦合度从低到高,可以将其分为5个类型,它们分别是内容耦合、公共耦合、控制耦合、标记耦合和数据耦合。
面向操作的设计,以目标软件所执行的操作为对象,映射出软件的功能结构关系。面向数据的设计方法,是根据数据结构之间的关系来完成模块的映射关系。 -
●3.3结构化的详细设计 Structured System Detailed Design
本节主要介绍面向过程(结构化)的详细设计的基本知识、常用方法及工具。首先介绍
结构化开发过程的盒图,包括盒图的概念,组成,应用及优缺点。然后介绍问题分析图(PAD图)的概念,元素组成,特点及优缺点,以及PAD图的画法。接下来,介绍判定表与判定树的基本原理,组成,优缺点,适用情况,两者的相关性和区别,以及它们的实际应用。最后,介绍层次图和IPO图,以及两者的结合HIPO图的基本知识,包括它们各自的组成,适用场景,各自的优缺点及联系和区别,并用实例介绍如何使用这些工具。 -
●3.4面向对象的设计 Objected Oriented Design
本节首先介绍面向对象开发过程的核心是面向对象分析(OOA)和面向对象设计(OOD)两个阶段。OOA是分析使用实例,提取用户需求,建立问题域逻辑模型的过程;OOD是建立面向对象的求解域模型的过程。从OOA到OOD实际是一个多次反复、逐步迭代模型的过程。然后介绍了Osbert Oglesby案例 初始设计过程、迭代设计过程和该案例最终设计内容。
-
第四章编码 Coding
内容:良好的编程实践、系统集成策略
通过本章学习,学生应理解在代码编写环节,良好的编程风格对软件工程的意义及具体做法;能够在分析目标软件特点基础上正确选择编码工具,能够在实际代码编写中将良好的编程实践加以应用;掌握系统的4种基本集成策略,能够针对不同的集成目标选择恰当的集成策略。 -
●4.1良好的编程实践 Good Pragraming Practice
本章从五个方面探讨良好的编程实践有哪些。第一个变量命名应该是有意义;第二个要养成的习惯就是编写自文档;第三个在使用参数的时候,要提前进行一些可维护性的考量;第四方面从视觉上提高代码的可读性;最后要根据开发过程中的实际情况,灵活应用编码标准。
-
●4.2集成 Integration
本章首先介绍了在代码编写结束以后,需要将已经完成的代码进行模块进行集成,引入两个概念,驱动模块和存根模块。然后介绍3 1种集成策略,第一种自顶向下集成。第二种自底向上集成的策略是从逻辑模块最底层的部分开始进行迭代集成的,直到最顶层的模块被集成结束。最后介绍三明治集成,综合看自顶向下集成对逻辑组件有利,而自底向上集成,对操作性的组件有力,那么我们可以对那些逻辑性的组件采取自顶向下集成,对于位于操作层面的组件,采取自底向上集成,最终将两个阵营的组建接口进行集成并测试的策略。
-
第五章测试 Testing
内容:测试用例、单元测试(黑盒法、白盒法)、测试管理(集成测试、产品测试、验收测试)。
通过本章学习,学生应明确软件测试的基本过程;掌握软件测试的管理方法;理解设计软件测试用例的必要性;熟练掌握黑盒测试技术和白盒测试技术;能够评价测试质量。 -
●5.1测试概述 Testing Introduction
测试是保证软件质量的一个非常重要的环节,在这个过程中主要针对系统进行检测本章主要介绍需要对两个主要内容进行测试,第1个内容是进行规格测试,规格测试也被称为黑盒测试、数据驱动的测试、功能性测试或输入输出驱动测试,另一种测试关注的是代码逻辑,这种测试也被称为白盒测、玻璃盒测试或逻辑测试。最后介绍要选择最有可能检测出错误的数据进行测试,这种数据就叫测试用例。
-
●5.2黑盒单元测试 Black-Box Unit-testing
本节介绍黑盒单元测试技术中有两个关键方法,分别是等价类测试和边界值分析。测试用例的选取和设计需要满足:该用例能够检测出一个先前没有被检测出的错误。为了提高测试用例的效率,用尽可能少的测试用例检测出尽可能多的错误,我们在进行测试用例设计的时候,需要对其进行有针对性的选取工作,这里给大家介绍两个重要的技术,就是等价测试和边界值分析。最后通过举例说明测试用例的设计。
-
●5.3白盒单元测试 White Box Unit-testing
本章首先介绍白盒测试的关注点在代码的内部逻辑结构。然后介绍为了实现各种逻辑结构的测试,往往需要对逻辑处理的各种因素进行覆盖检查,最后围绕白盒测试学习以下内容: 语句覆盖 、 分支覆盖 、 条件覆盖 、 分支/条件覆盖 、 条件组合覆盖 、 路径覆盖等。
-
●5.4测试管理 Management of Testing
首先当组件完成单元测试后,需要进行集成。集成是一个不断增加新组件的过程,每当有新组件被集成进来,都要进行集成测试。然后集成测试后,要进行产品测试,也就是将集成了全部组件的完整产品,从模拟用户的角度进行验收前的测试。最后在验收测试中,客户最主要的工作是检查这个产品是否与之前定义好的规格一致,是否完成了预期的开发目标。
-
第六章维护 Maintenance
内容:递交后的维护、维护工作内容、维护管理。
通过本章的学习,学生应掌握处理系统变化的方法,并掌握系统设计、编码、测试过程、文档等如何与这些变化保持一致;了解维护的种类,并能够在不同维护场景中正确应用维护技术。 -
●6.1为什么要进行递交后的维护 Why Postdelivery Maintenance Is Necessary
本节首先介绍递交后维护的概念,是指软件在完成开发过程,并为用户进行了递交之后所发生的各种修改。递交后发生的各种改变(甚至包括对相关文档的变更)。然后介绍了四种维护工作即改正性维护、适应性维护、完善性维护和预防性维护。
-
●6.2维护的工作内容 Content of Maintenance
首先针对改正性维护,需要维护人员具备:诊断技术、测试技术、编写文档的技术。
其次对应适应性和完善性维护,这两种维护往往伴随产品新功能的增加或修改,因此,在某种成度上相当于产品增量开发的一个过程。这就要求维护人员要精通软件整个生命周期的全部流程,包括需求获取、规格说明、设计、实现、集成、测试等等。更加复杂的是,此时的维护人员必须将已有的软件产品作为新的起点,在不破坏或引发原产品错误的基础上,在相关约束条件下进行产品维护。 -
●6.3递交后的维护管理 Management of Postdelivery Maintenance
本节从4个方面探讨递交后维护的管理流程和方法。首先维护程序员应首先查阅缺陷报告文件。其次讨论关于对软件产品变更进行授权的问题。第三个问题是确保可维护性。最后我们来共同探讨一下关于重复性的维护工作问题。