2.1公共基础知识考点详解
2.1.2程序设计基础
考点:结构化程序设计
- 程序设计风格
目标:清晰第一,效率第二
发展:结构化程序设计和面向对象的程序设计
- 结构化程序设计
原则:自顶向下、逐步求精、模块化及限制使用goto语句
基本结构:顺序结构、选择结构、循环结构
共同特征:严格地只有一个入口和一个出口
优点:①易于理解、使用和维护;②提高效率,降低成本 - 面向对象的程序设计
优点:与人类习惯的思维方式一致;稳定性好;可重用性好;容易开发大型软件产品;可维护性好
基本概念:
Ⅰ对象=数据+方法- 数据=属性
- 方法=操作
特点 | 描述 |
---|---|
唯一标识性 | 对象可区分,内在本质差异 |
分类性 | 抽象成类 |
多态性 | 不同对象同一操作得到不同结果 |
封装性 | 内部对外不可见 |
模块独立性好 | 元素被封闭在对象内部 |
基本概念
Ⅱ 类(class)和实例(instance)
类:具有共同属性、共同方法的对象的集合,反映该对象的性质;
类是关于对象性质的描述,它同对象一样,包含属性和操作。
实例:一个具体对象则是对应类的一个实例。
Ⅲ 消息(message)
对象间通信的手段,请求服务。
Ⅳ 继承
类和类可以继承,一个子类可以直接继承其父类的全部描述(数据和操作),这些属性和操作在子类中不必定义,子类还可以定义它自己的属性和操作。
继承的传递性:Y→Z,X→Y then X→Z 按需继承
Ⅴ 多态性
同样的消息可以发布给父类和子类,由于结果不同,称之为多态性。
2.1.3 软件工程基础
考点:软件的设计、测试、调试
- 基本概念
软件=程序+数据+相关文档[程序数据可执行,文档不可执行]
软件+硬件=计算机系统
- 特点
是一种逻辑实体,具有抽象性;
没有明显制作过程;
使用期间不存在磨损、老化问题;
对硬件和环境具有依赖性;
复杂性高,成本昂贵;
开发涉及诸多社会因素 - 分类
①系统软件——管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件 e.g.OS,DBMS,编译程序,汇编程序,网络软件最靠近计算机硬件的软件
②应用软件——应用于特定的领域而开发的软件 e.g. Word,QQ,360杀毒,财务管理系统
③支撑软件——介于系统软件和应用软件之间,协助用户开发软件的工具型软件 e.g.程序员开发和维护,管理员控制项目 - 软件工程
要素:方法、工具、过程
原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证性 - 软件过程
输入转化为输出
基本活动:软件规格说明,软件开发或者软件设计与实现,软件确认,软件演进 - 软件生命周期
提出、实现、使用、维护到停止使用, 3个时期8各阶段;最终退役
定义 | 开发 | 维护 |
---|---|---|
问题定义 | ||
可行性研究 | ||
需求分析 | ||
- | 概要设计 | |
- | 详细设计 | |
- | 实现 | |
- | 测试 | |
- | - | 使用和维护 |
- 需求分析
任务:发现需求、求精、建模、定义需求
创建数据模型、功能模型、控制模型
工作:需求获取、需求分析、编写需求规格说明书、需求评审
结构化分析的常用工具:数据流图、数据字典、结构化英语、判定表、判定树
需求分析常用工具:DFD 数据流图
3. 软件的设计
基本目标:确定系统的物理模型
- 概要设计(总体设计)的主要任务:将软件按功能分解成模块 高独立性原则
独立程度标准度量:内聚性(彼此结合的紧密程度)和耦合性(互相依赖的紧密程度)
内聚性越高,耦合性就越低
一个优秀的软件设计应当高内聚,低耦合即善于社交,并且独立:)
基本任务:设计软件系统结构,设计数据结构及数据库,编写概要设计文档,概要设计文档评审
术语 | 含义 |
---|---|
上级模块 | 控制其他模块的模块 |
从属模块 | 被另一个模块调动的模块 |
原子模块 | 叶子节点的模块,没有从属节点 |
深度 | 控制的层数 |
宽度 | 最大模块数的层的控制跨度 |
扇入 | 调用一个给定模块的模块个数 |
扇出 | 由一个模块直接调用的其他模块个数 |
好的结构通常顶层高扇出,中间扇出较少,底层高扇入顶层可调动多,中层适当,底层连接多,基本结构类纺锤形
- 详细设计
任务:确定并表达算法和数据结构
设计工具:PFD,N-S,PAD,HIPO,PDL
4. 软件测试
目的:发现错误
准则:
- 所有测试追溯用户需求
- 测试之前制定测试计划,并严格执行
- 充分注意测试中的集群现象
- 避免由程序的编写者测试自己的程序
- 不可能进行穷举测试
- 妥善保存测试计划……分析报告
测试方法:
- 软件是否需要被执行
- 否—静态测试:人工分析
- 是—动态测试:上机测试,运行软件
- 功能划分
- 白盒测试:了解逻辑,检查是否按照预定的要求正确地工作
- 逻辑覆盖测试(包含各种覆盖),基本路径测试
- 黑盒测试:检查功能是否符合说明书的要求
- 等价类划分法,边界值分析法,错误推测法,因果图
- 白盒测试:了解逻辑,检查是否按照预定的要求正确地工作
测试实施
- ①单元测试(模块测试)检验模块内部的错误
- 阶段:编码
依据:源程序,详细设计说明书
测试方法:静态or动态测试,动态以白盒为主,测试结果,黑盒为辅,测试功能
- 阶段:编码
- ②集成测试(组装测试)发现于接口有关的错误
- 修正错误:设计阶段产生的错误
依据:概要设计说明书
测试方法:黑盒测试
方式:非增量方式集成(一次性组装),增量方式集成(自顶向下,自底向上以及自顶向下和自底向上的结合)
- 修正错误:设计阶段产生的错误
③确认测试 检查是否与用户需求一致- 以需求规格说明书为依据
黑盒测试
- 以需求规格说明书为依据
- ④系统测试 对软件整体做确认测试
5. 程序的调试(Debug)
基本概念:发现错误后排除错误的过程
任务:诊断和改正错误
步骤:1确定错误的性质、原因、为主;2 排除错误
方法:是否跟踪和执行程序
- 静态调试(主要)人为分析
- 动态调试(辅助)
- 强行排错法、回溯法、原因排除法(二分法、归纳法、演绎法)