一、 面向对象的基本概念。
1.继承、多态、封装。
1) 继承是指在一个对象类中定义的方法和/或属性可以被另一个对象类继承或复用。
2) 多态是指不同对象可以以不同的形式响应同样的消息。
3) 封装是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
2. 对象的形式化定义:
对象∷=(id,ms,ds,mi)其中:id 是对象的标识或名字ms是对象中操作的集合ds是对象中数据的集合mi 是对象受理的消息名集合。
3. 对象的特点:
1) 以数据为中心。
2) 对象是主动的。为了改变对象的状态,只能通过公用接口向对象发送消息,请求它执行它的某个操作,处理它的私有数据。
3) 实现了数据封装。
对象间的相互作用是通过消息传送来实现的。消息是用来请求对象执行某一处理或回答某些信息的要求, 消息统一了数据流和控制流。通常一个消息由三部分组成:接收消息的对象、消息名、变量。
二、 系统分析。
系统分析常用方法。
1、 面向数据流的结构化分析方法(sa)
2、 面向数据结构的jackson方法(jsd)
3、 结构化数据系统开发方法(dssd)
4、 面向对象的分析方法(ooa)等。
1. 可行性分析。
(1)可行性分析的定义。
可行性分析的目的:用最小的代价在尽可能短的时间内确定问题是否能够并且值得解决。
可行性研究最根本任务:对以后的行动方针提出建议。
可行性分析的基本内容:技术可行性、经济可行性、操作可行性、其它(法律可行性、社会效应、管理问题等)。
可行性分析的常用工具:系统流程图、数据流图、数据字典。
2. 用户需求分析。
软件需求的定义:软件需求是指用户对软件的功能和性能的要求。
软件需求:主要包括功能需求和非功能需求(性能需求、环境需求、界面需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求)
1) 信息系统分析强调业务方面的问题,而非技术或实现方面的问题。它的基本任务是准确地回答“系统必须做什么”这个问题。最终产生的文档是需求分析说明书。
(2)系统分析方法。
模型驱动分析法和加速系统分析法分别包含哪些方法。
模型驱动分析法:包括结构化分析、信息工程、面向对象分析,它们主要依赖于图形进行顺序分析(典型的例子是流程图);
加速系统分析法:获取原型和快速架构开发属于加速系统分析法,它们都是有回路、有反馈的分析方法。
3) 软件需求获取的过程:发现和分析问题、获取需求、归档和分析需求、需求管理。
三、 系统设计及实现。
1.软件设计的基本原则——高内聚低耦合。
2.面向对象的设计原则(七条)
3.设计模式。
设计模式分为三种类型,共23种。
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、**模式。
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
建造者模式:建造者模式是一种较为复杂的创建型模式,它将客户端与包含多个组成部分的复杂对象的创建过程分离,使客户端无需知道复杂对象的内部组成部分与装配方式,只需知道所需建造者的的类型即可。
优点:1.使用建造者模式可以使客户端不必知道产品内部组成的细节。
2.具体的建造者类之间是相互独立的,对系统的扩展非常有利。
3.由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。
缺点:所创建的产品一般具有较多的共同点,其组成部分相似,如果产品差异性较大,并不适合使用创建者模式;此外如果产品内部结构变化复杂,可能需要定义很多具体建造者类来实现这种变化,导致系统很庞大,增加了系统理解难度和运行成本。
**模式:当用户无法直接访问某个对象或访问某个对象存在困难时可以通过**对象来简介访问,为了保证客户端使用的透明性,所访问的真是对象与**对象需要实现相同的接口。 根据**模式的使用目的不同,又可以分为多种类型,如:
保护**、远程**、虚拟**、缓冲**等。
优点:1).职责清晰。
真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的**完成一件完成事务,附带的结果就是编程简洁清晰。
2).**对象可以在客户端和目标对象之间起到中介的作用,这样起到了的作用和保护了目标对象的。
作用。3).高扩展性。
缺点:1、由于在客户端和真实主题之间增加了**对象,因此有些类型的**模式可能会造成请求的处理速度变慢,例如保护**。
2、实现**模式需要额外的工作,而且有些**模式的实现过程较为复杂,例如远程**。
观察者模式:定义对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关的依赖对象得到通知并被自动更新。
观察者模式用于描述对象之间的依赖关系,为实现多个对象之间的联动提供了一种解决方案,它是一种使用频率非常高的设计模式。
优点:优点在于可以实现表示层与数据逻辑层的分离;
在观察着与观察目标之间建立一个抽象的耦合;支持广播通信并符合开闭原则。
缺点:1、 通知所有的观察者会花很多时间;
2、 如果存在循环调用可能会导致系统崩溃;
3、 没有相应的机制让观察者知道所观察的目标是如何发生变化的,而只知道观察目标发生了变化。
4.用户界面设计。
用户界面设计的原则:
1) 置于用户控制之下:就是把用户放在人机交互的核心。
2) 减少用户的记忆负担:人类的记忆有限,不应该要求用户记忆大量的信息。
(3) 保持界面一致: 菜单选择,命令输入,数据显示及其它功能应该使用一致的格式。
5. 数据库设计——关系的规范化。
规范化包括三个步骤,分别将数据模型按照第一范式、第二范式、第三范式的要求进行规范。
第一范式(1nf):属性不可分;第二范式(2nf):不存在部分函数依赖;第三范式(3nf):不存在传递函数依赖。
6. 架构设计。
(1) 分布式信息系统五层结构(如图1)
图1 分布式系统分层示意图。
(2) 各种架构的优劣比较。
a. 文件/服务器:带宽瓶颈;胖客户端;数据完整性问题。
b. 分布式表现(2层):瘦客户端;服务器端压力没有缓解;不能充分利用客户端的资源
c. 分布式数据(2层):
第一,客户端的负担比较重。在两层结构下,客户端需要进行比较复杂的数据处理,所以客户端的负担比较重。
第二,客户端的可移植性不好。在两层结构下,每个客户端上都要安装数据库驱动程序,移植至少需要重新安装数据库驱动。
第三,系统的可维护性不好。因为客户端包含过多的业务逻辑,并且业务逻辑与人机交互界面交织在一起,无论是用户界面需要修改,还是业务逻辑需要修改,都很麻烦。
第四,数据的安全性不好。两层结构下,数据库必须为每一个客户端机器开放直接操作数据库的权限,这时就很难防止一个恶意的用户在某个客户端机器上利用该权限执行其不应该执行的操作。
d. 分布式数据和应用:降低了客户端的负担;减少维护工作量;提高了系统的数据安全性;利于联机事务处理;设计开发复杂,如何最优分割各层功能。
以三层c/s为例,在数据层和客户层之间再增加一个中间层,将原来放在客户端的业务逻辑**移到中间层来。客户程序与数据库的连接被中间层屏蔽,客户程序只能通过中间层间接地访问数据库,即降低了客户端的负担、改善了其可移植性,又提高了系统的数据安全性;同时业务逻辑**与用户界面**相对独立,也在很大程度上提高了系统的可维护性,较好地解决了两层结构的上述问题。三层结构中软件开发的主要工作量在中间层,中间层包括除用户界面**与持久数据之外的几乎所有系统**,是整个软件系统的核心。
e. 基于web的体系结构(b/s):维护方便(用户群庞大,适用于需求经常变化);部署方便;成本低;可重用性好;访问灵活;安全性高。
7. 面向对象建模工具——uml
(1) 对象模型—描述系统的数据结构(类图、对象图、包图)
(2) 功能模型—描述系统功能(用例图)
(3) 动态模型—描述系统控制结构(顺序图、活**、状态图)
(4) 常见的模型元素之间的关系:关联、泛化、依赖和聚合等。
四、 软件测试。
1. 软件测试的概念。
软件测试,描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
2. 按照是否针对系统的内部结构,可分为白盒测试和黑盒测试。
(1)白盒测试——常用的覆盖标准从低到高分别是:语句覆盖、判定覆盖(或分支覆盖)、条件覆盖、判定/条件覆盖、条件组合覆盖。
(2) 黑盒测试——按照测试用例设计方法的不同,黑盒法有以下几种:① 等价分类法; ②边缘值分析法; ③错误推测法等。
3. 按照软件开发所处的阶段及其作用,可分为单元测试、集成测试、系统测试、验收测试。
1) 单元测试是在软件开发过程中要进行的最低级别的测试活动,和编码属于软件过程的同一个阶段。在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。一般采用白盒测试方法,辅之以黑盒测试,主要检查模块控制结构中的特定路径,以确保做到完全覆盖并发现最大数量的错误。
2) 集成测试也叫组装测试、联合测试、子系统测试或部件测试。集成测试是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统。集成测试是测试和组装软件的系统化技术,是把模块按照设计要求组装起来的同时进行测试,主要目标是发现与接口有关的问题。
一般采用黑盒法,辅之以白盒法。测试方式有两种:非渐增式测试方法和渐增式测试方法。
软件工程复习大纲
1 软件工程定义,本质特性,出现背景。软件工程是指导计算机软件开发和维护的一门工程学科。软件工程是 把系统的 规范的 可度量的途径应用于软件开发 运行和维护过程,也就是把工程应用于软件 研究中提到的途径。本质特性 1 软件工程关注于大型程序的构造。2 软件工程的中心课题是控制复杂性。3 软件经常变化...
软件工程复习大纲
考试题型。名词解释 填空 简答题 应用题 分析 设计 测试等 重点内容。第1章软件与软件工程的概念。1.了解与软件相关的基本概念,包括软件 程序 数据 文档。2.了解软件危机的表现及发生的原因。3.掌握软件工程的概念。4.软件生命周期由哪三个时期组成,每个时期又可划分为哪些阶段?每个阶段的主要任务是...
软件工程复习大纲
软件工程概论复习大纲。一 选用教材 软件工程导论 张海藩清华大学出版社 第5版 课程负责人 马丽。授课教师 08 软件工程1 3班马丽。二 考试方法。一 考试方法 笔试,闭卷,满分100分。二 考试时间 110分钟。三 试卷结构 一 题型及分数比例。选择题20 填空题 10 判断题 10 简答题20...