NCRE2.1.2&2.1.3

2.1公共基础知识考点详解

2.1.2程序设计基础

考点:结构化程序设计

  • 程序设计风格
    目标:清晰第一,效率第二

发展:结构化程序设计和面向对象的程序设计

  1. 结构化程序设计
    原则:自顶向下、逐步求精、模块化及限制使用goto语句
    基本结构:顺序结构、选择结构、循环结构
    共同特征:严格地只有一个入口和一个出口
    优点:①易于理解、使用和维护;②提高效率,降低成本
  2. 面向对象的程序设计
    优点:与人类习惯的思维方式一致;稳定性好;可重用性好;容易开发大型软件产品;可维护性好
    基本概念:
    Ⅰ对象=数据+方法
    • 数据=属性
    • 方法=操作
特点描述
唯一标识性对象可区分,内在本质差异
分类性抽象成类
多态性不同对象同一操作得到不同结果
封装性内部对外不可见
模块独立性好元素被封闭在对象内部

基本概念
Ⅱ 类(class)和实例(instance)
类:具有共同属性、共同方法的对象的集合,反映该对象的性质;
类是关于对象性质的描述,它同对象一样,包含属性和操作。
实例:一个具体对象则是对应类的一个实例。

Ⅲ 消息(message)
对象间通信的手段,请求服务。

Ⅳ 继承
类和类可以继承,一个子类可以直接继承其父类的全部描述(数据和操作),这些属性和操作在子类中不必定义,子类还可以定义它自己的属性和操作。
继承的传递性:Y→Z,X→Y then X→Z 按需继承

Ⅴ 多态性
同样的消息可以发布给父类和子类,由于结果不同,称之为多态性。


2.1.3 软件工程基础

考点:软件的设计、测试、调试

  1. 基本概念
    软件=程序+数据+相关文档[程序数据可执行,文档不可执行]
    软件+硬件=计算机系统
  • 特点
    是一种逻辑实体,具有抽象性;
    没有明显制作过程;
    使用期间不存在磨损、老化问题;
    对硬件和环境具有依赖性;
    复杂性高,成本昂贵;
    开发涉及诸多社会因素
  • 分类
    ①系统软件——管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件 e.g.OS,DBMS,编译程序,汇编程序,网络软件最靠近计算机硬件的软件
    ②应用软件——应用于特定的领域而开发的软件 e.g. Word,QQ,360杀毒,财务管理系统
    ③支撑软件——介于系统软件和应用软件之间,协助用户开发软件的工具型软件 e.g.程序员开发和维护,管理员控制项目
  • 软件工程
    要素:方法、工具、过程
    原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证性
  • 软件过程
    输入转化为输出
    基本活动:软件规格说明,软件开发或者软件设计与实现,软件确认,软件演进
  • 软件生命周期
    提出、实现、使用、维护到停止使用, 3个时期8各阶段;最终退役
定义开发维护
问题定义
可行性研究
需求分析
-概要设计
-详细设计
-实现
-测试
--使用和维护
  1. 需求分析
    任务:发现需求、求精、建模、定义需求
    创建数据模型、功能模型、控制模型
    工作:需求获取、需求分析、编写需求规格说明书、需求评审
    结构化分析的常用工具:数据流图、数据字典、结构化英语、判定表、判定树
    需求分析常用工具:DFD 数据流图

3. 软件的设计
基本目标:确定系统的物理模型

  • 概要设计(总体设计)的主要任务:将软件按功能分解成模块 高独立性原则
    独立程度标准度量:内聚性(彼此结合的紧密程度)和耦合性(互相依赖的紧密程度)
    内聚性越高,耦合性就越低
    一个优秀的软件设计应当高内聚,低耦合即善于社交,并且独立:)
    基本任务:设计软件系统结构,设计数据结构及数据库,编写概要设计文档,概要设计文档评审
术语含义
上级模块控制其他模块的模块
从属模块被另一个模块调动的模块
原子模块叶子节点的模块,没有从属节点
深度控制的层数
宽度最大模块数的层的控制跨度
扇入调用一个给定模块的模块个数
扇出由一个模块直接调用的其他模块个数

好的结构通常顶层高扇出,中间扇出较少,底层高扇入顶层可调动多,中层适当,底层连接多,基本结构类纺锤形

  • 详细设计
    任务:确定并表达算法和数据结构
    设计工具:PFD,N-S,PAD,HIPO,PDL

4. 软件测试
目的:发现错误
准则:

  • 所有测试追溯用户需求
  • 测试之前制定测试计划,并严格执行
  • 充分注意测试中的集群现象
  • 避免由程序的编写者测试自己的程序
  • 不可能进行穷举测试
  • 妥善保存测试计划……分析报告

测试方法:

  • 软件是否需要被执行
    • 否—静态测试:人工分析
    • 是—动态测试:上机测试,运行软件
  • 功能划分
    • 白盒测试:了解逻辑,检查是否按照预定的要求正确地工作
      • 逻辑覆盖测试(包含各种覆盖),基本路径测试
    • 黑盒测试:检查功能是否符合说明书的要求
      • 等价类划分法,边界值分析法,错误推测法,因果图

测试实施

  • ①单元测试(模块测试)检验模块内部的错误
    • 阶段:编码
      依据:源程序,详细设计说明书
      测试方法:静态or动态测试,动态以白盒为主,测试结果,黑盒为辅,测试功能
  • ②集成测试(组装测试)发现于接口有关的错误
    • 修正错误:设计阶段产生的错误
      依据:概要设计说明书
      测试方法:黑盒测试
      方式:非增量方式集成(一次性组装),增量方式集成(自顶向下,自底向上以及自顶向下和自底向上的结合)
  • ③确认测试 检查是否与用户需求一致
    • 以需求规格说明书为依据
      黑盒测试
  • ④系统测试 对软件整体做确认测试

5. 程序的调试(Debug)
基本概念:发现错误后排除错误的过程
任务:诊断和改正错误
步骤:1确定错误的性质、原因、为主;2 排除错误
方法:是否跟踪和执行程序

  • 静态调试(主要)人为分析
  • 动态调试(辅助)
  • 强行排错法、回溯法、原因排除法(二分法、归纳法、演绎法)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值