一、软件工程
1、软件危机:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。
2、软件生命周期:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码、单元测试、综合测试)、软件维护(运行维护)。
3、软件工程方法学包括:方法、工具、过程
4、软件是由计算机程序、文档、数据组成
二、可行性研究
1、可行性包括:技术可行性、经济可行性、操作可行性。
2、由数据元素组成的方式只有下述3种基本类型:顺序(以确定次序连接两个或多个分量)、选择(从两个或多个可能的元素中选取一个)、重复(把指定的分量重复零次或多次)。
3、数据字典:
数据流图和数据字典共同构成系统的逻辑模型。
数据字典内容(4类元素):数据流、数据流分量、数据存储、处理。
三、需求分析
1、结构化分析法:就是面向数据流自顶向下逐步求精进行需求分析的方法。
2、需求分析过程应该建立3中模型,他们分别是数据模型,功能模型,行为模型。
3、状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
4、事件就是引起系统做动作或转换状态的控制信息。
5、IPO图是输入、处理、输出图的简称。
6、软件的验证:一致性、完整性、现实性、有效性。
五、总体设计
1、总体设计通常由两个主要阶段组成:系统设计阶段(确定系统的具体实现方案)、结构设计阶段(确定软件结构,遵循的最主要的原理:模块独立原理)。
2、模块独立性:模块化、抽象化、信息隐藏概念的一个直接产物。
3、耦合是对一个软件结构内不同模块之间互相连接程度的度量。
内容耦合是最高程度的耦合
控制耦合是中等程度的耦合
4、内聚:标志着一个模块内各个元素彼此间结合的紧密程度。
高内聚:功能内聚、顺序内聚
中内聚:通信内聚、过程内聚
低内聚:时间内聚、逻辑内聚、偶然内聚
5、常用的软件概要设计方法有三大类:以数据流图为基础构造模块结构的结构化设计方法;以数据结构为基础构造模块的Jackson方法;以对象、类、继承和通讯为基础的面向对象设计方法。
六、详细设计
1、结构化程序设计是实现上述目标的关键,是详细设计的基础
2、结构化程序设计的基本思想是采用自顶向下,逐步求精的设计方法和单入口单出口的控制结构。
七、实现
1、通常把编码和测试统称为实现。
2、二级存储器的输入输出应该以信息组为单位进行。
3、测试用例应由测试数据和输出结果组成
4、软件测试方法:
黑盒测试(功能测试):把程序看做一个黑盒子,完全不考虑程序内部结构和处理过程,是在程序接口进行的测试
白盒测试(结构测试):把程序看成装在一个透明的盒子里,测试者完全知道程序的结构和算法,按照程序内部的逻辑测试程序,测试程序中的主要执行通路是否能按预定要求正确工作
5、测试步骤
1. 单元测试——详细设计说明书:模块并不是一个独立的程序,要运行它就必须为其开发驱动软件和存根(桩)软件
2. 集成测试——需求分析说明书:是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题;采用渐增式测试方法(自顶向下集成,自底向上集成)
3. 验收测试——用户参与(需求分析说明书)
4. 平行运行——新旧共存
6、语句覆盖:使程序中每个语句至少执行一次
语句覆盖是最弱的逻辑覆盖
九、面向对象方法学引论
1、面向对象方法组成:面向对象的分析、设计、程序设计
2、面向对象中,对象的特点:
(1)以数据为中心
(2)对象是主动的
(3)实现了数据封装
(4)本质上具有并行性
(5)模块独立性好
3、面向对象建模
面向对象开发软件,需要建立三种形式的模型:
对象模型。描述系统数据结构——数据结构
动态模型。描述系统控制结构——执行操作
功能模型。描述系统功能——数值变化