《软件工程-北京大学》 学习笔记
1、软件开发——实现问题域中的概念和处理逻辑到运行平台的概念和处理逻辑的映射,其本质是问题域到不同抽象层之间概念和计算逻辑的映射。
2、软件开发的含义:问题空间与解空间的映射,这是一个抽象的过程(数据抽象、行为抽象)
3、模型:在特定意图下所确定的角度和抽象层次上对物理系统的描述,通常包含对该系统边界的描述,给出系统内各模型元素以及它们之间的语义关系。
4、实现映射的基本手段:建模
5、无论是自顶向下的软件开发还是自底向上的软件开发,正确定义问题是解决问题的前提。
6、需求分析(问题定义):通过分析分配给软件的那些需求,确定软件需求及约束;
7、软件体系结构设计(解决方案分析):为软件需求及约束,确定一组解决方案,进行实例研究,分析可能的方案,并选择一个最佳的方案;
8、需求:一个需求是一个有关“要予构造”的陈述,描述了待开发产品/系统功能上的能力、性能参数或者其他性质。
9、需求分类:1)功能需求——规约了系统或者系统构件必须执行的功能,功能需求是整个需求的主题,没有功能需求就没有非功能需求(性能需求、外部接口需求、设计约束和质量属性);2)性能需求——规约了一个系统或者系统构件必须具有的性能特性;3)外部接口需求——规约了系统或者系统构件必须与之交互的硬件、软件或者数据库元素,它也可能规约其格式、时间或者其他因素;4)设计约束——限制了系统或系统构建的设计方案;
10、模块:执行一个特殊任务的一组例程和数据结构,模块化就是把系统分解成若干模块的过程;如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合。
11、模块的作用域力争在控制域之内。作用域:受该模块内一个判定影响的所有模块的集合,控制域:模块本身+所有直接或者间接从属于它的模块集合。
12、面向对象方法的世界观:一切系统都是由对象构成的,他们的相互作用、相互影响,构成了大千世界的各式各样的系统。对象是现实世界中某个实际存在的事物,它可以是有形的也可以是无形的。对象是构成世界的一个独立单位,它有自己的静态特征和动态特征。对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务构成的。事物的静态特征用对象的属性表示,事物的动态特征(即事物的行为)用对象的操作表示。
13、对象的属性和操作结合为一体,构成一个独立的实体,对外屏蔽其内部细节(封装),对事物进行分类,把具有相同属性和相同操作的对象归为一类,类是构成这些对象的抽象描述,每个对象是它所属类的一个实例。
14、通过在不同程度上运用抽象的原则(较多或者较少地忽略事物之间的差异),可以得到较一般的类和较特殊的类。特殊类继承一般累的属性和操作,面向对象方法支持这种继承关系的描述和实现,从而简化系统的构造过程及其文档。
15、复杂的对象可以用简单的对象作为其构成部分(聚合)。对象之间只能通过消息进行通信(不允许一个对象直接使用另一个对象的属性),以实现对象之间的动态联系。用关联表达类之间的静态关系。
16、面向对象方法的基本思想:1)从现实世界中客观存在的事物出发建立软件系统——强调直接以问题域中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌;2)充分运用人类日常的思维方法——强调运用人类在日常的逻辑中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装、关联等。这使得软件开发者能更有效地思考问题,并以其他人也能看懂的方式把自己的认识表达出来。
17、UML图
18、接口:是一组操作的集合,其中每个操作描述了类或者构件的一个服务。接口是模型化系统中的“接缝”。通过声明一个接口,表明一个类、构件、子系统提供了所需要的且与实现无关的行为,或者表明一个类、构件、子系统所要得到的且与实现无关的行为。接口只描述类(构件或子系统)的外部可见操作,并不描述内部结构。通常接口仅描述一个特定类的有限行为,接口没有实现,接口也没有属性、状态和关联,接口只有操作。
19、用况:是对一组动作序列的描述,系统执行这些动作产生对特定的参与者一个有值的、可观察的结果。用况用于模型化系统中的行为,一个用况描述了系统的一个完整的功能需求。
20、主动类用于体现并发行为抽象,是一种至少具有一个进程或者线程的类,因此它能够启动控制活动。
21、关联:是类目之间的结构关系,描述了一组具有相同结构、相同语义的链。链是对象之间的链接。聚合是一种特殊的关联,表示一种“整体/部分”关系,即一个类表示了一个大的事物,它是由一些小的事物组成的。如果整体类的实例和部分类的实例具有相同的生命周期,这样的聚合称为组合。组合是聚合的一种形式。
22、依赖是一种使用关系,用于描述一个事物使用另一事物的信息和服务。大多数情况,使用依赖来描述一个类使用另一个类的操作。依赖关系通常表现为一个类使用另一个类作为它的操作参数。
24、类体现了数据抽象、过程抽象、局部化以及信息隐藏等原理。1)过程抽象:任何一个完成确定功能的操作序列,其使用者都可以把它看成一个单一的实体,尽管实际上它实际上可能由一系列更低级的操作完成,过程抽象不是OOA的主要抽象形式,因为OOA方法不允许超出对象的界限在全系统范围内进行功能的描述,但过程抽象对于在对象范围内组织对象的操作是有用的。2)数据抽象:根据施加于数据之上的的操作来定义数据的类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是OOA的核心原则,它强调把数据(属性)和操作结合为一个不可分的系统单位(即对象),对象的外部只知道它做什么,而不知道它怎么做。
25、用况体现了问题分离、功能抽象等原理;接口体现了功能抽象等原理,当使用这些术语创建系统模型时,其语义就映射到相应的元素。OOA 模型