软件构造《基于案例的软件构造教材》这本书的知识点整理,以提问方式

整理内容为老师画的重点。然后以自己的理解整理。
文章内容多为问题,需自己解答。提问方式并非考试题型,以知识点为主,所以理解后,以自己的答案为主,说不定书上还没自己理解的好。
答案都在书中,列出问题的目的是快速学习。

第一章 软件开发概述

1.1 程序与软件构造

  1. 什么是程序?
  2. 什么是软件?
  3. 软件按功能划分为三种类型:______、________、__________。
  4. 软件按工作方式划分为:________________________、__________。
  5. 软件按服务对象的范围划分为_______、________。
  6. 程序设计的活动包括_______、________________________、________等不同阶段。
  7. 图灵奖获得者________提出的________________是程序设计的精辟观点。
  8. 程序设计的核心__________________________________________________。
  9. 软件开发不只是纯粹的程序的功能设计,还包括_________、___________ 、____________ 、____________ 和 ___________ 。
  10. 什么是软件工程?

1.2 软件生存周期

  1. 从用户的角度,软件生存周期分为哪几个阶段?
  2. 从开发者的角度,软件生存周期分为哪几个阶段?
  3. 软件实现与通常的程序设计的主要区别是什么?

1.3 软件开发过程

  1. 瀑布式开发过程把开发分为__________、___________ 、____________ 、___________ 、___________、___________这6个基本活动。
  2. 瀑布模型的核心思想是什么?
  3. 瀑布模型的主要问题是什么?
  4. 什么是增量开发?
  5. 增量开发模型的优点?
  6. 增量模型存在的风险?
    PSP(个体软件过程)。PSP为个体的能力提供了一个阶梯式的进化框架。借助这个框架,个体可以循序渐进地改进开发过程。它赋予软件人员度量和分析工具,使其清楚地认识到自己的表现和潜力,从而可以提高自己的技能和水平。

1.4 敏捷开发

  1. 什么是敏捷开发?
  2. 敏捷开发的4个核心价值观?
  3. 敏捷开发方法需遵循的12条原则?
  4. 什么是意图导向编程?
  5. 典型的敏捷方法包括 EPScrumCrystalFDDDSDM
  6. 什么是Scrum方法?

1.5-1.6

  1. 什么是软件构造?
  2. 按照语言的计算模型可以将高级语言划分为___和____两大类。
  3. 按照语言的转换和执行方式高级语言分为___和____ 。

第二章 模块化软件构造

  1. 什么是模块化软件构造?

2.1 分解与模块化

  1. 分而治之的策略是什么?
  2. 分解的核心是____________。
  3. 什么是关注点分离?
  4. _________是面向方面的程序设计的核心概念。
  5. 什么是模块化?
  6. 软件模块指的是 。
  7. 模块具有的三大特征是什么?
  8. _____是现代软件开发技术的一个基本原则。
  9. _____是实现软件模块化的一个基本手段。
  10. 在模块设计中,最基本的是_________。
  11. 结构化程序设计方法又称为______ 或_____法,内容是什么?

2.2 数据结构与算法

  1. 数据结构指什么?
  2. 常见的数据结构有数组、集合、栈、队列、堆、树、图、散列表等
  3. 什么是算法?
  4. 基本的算法(类型)包括查找(如顺序查找、二分查找)、排序(冒泡排序、快速排序、插入排序、归并排序等)、二叉树的遍历(前序遍历、中序遍历、后序遍历)、图的遍历(广度优先遍历、深度优先遍历)、最短路径算法
  5. 计算机算法与数据结构的关系?
  6. 存在过以数据为中心以操作为中心的开发方法。面向对象的开发方法就是综合了数据与操作,将其封装成一个软件实体——对象。

2.3 模块化设计理论初步

  1. 模块化的5条基本原则是什么?
  2. 模块的内聚性指什么?它由低到高分为哪7个等级?
  3. 模块间的耦合性指什么?它由低到高分为哪7个等级?
  4. 软件概要设计的目标是力求_______ 、________。

2.4 测试程序

  1. 什么是软件测试?
  2. 测试需求要求程序的预期结果和实际运行结果都要明确、合理、可观察、可比较
  3. 测试设计的内容包含设计用例,此外还有是否采用测试工具或自动化框架、如何组织人员进行测试等测试过程
  4. 测试用例是一组测试数据(包含运行条件)和预期结果
  5. 测试用例设计的核心是设计测试输入
  6. 什么是测试误判、什么是测试漏判?
  7. 使用测试用例的三种方式?

2.5-2.6

  1. 什么是调试?
  2. 编写测试程序的四个优点?
  3. 测试程序的基本组成 1.建立测试环境,包括初始化测试用例,初始化统计变量。2.运行测试。3.处理测试结果,主要是统计、分析测试结果,并将其显示、存储。

第三章 面向对象的软件构造

  1. 模块化与面向对象技术的区别?

3.1 抽象与封装

  1. 什么是函数簇?
  2. 什么是抽象?
  3. 程序设计有两种抽象分别是过程抽象(函数抽象)数据抽象
  4. 什么是封装?
  5. 封装有哪些好处?
  6. 数据结构是一个值的集合和定义在这个值集上的一组操作的总称
  7. 数据结构可分为两类:原子类型结构类型
  8. 抽象数据类型(ADT)是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组操作

3.2-3.7

  1. 类的模块化准则要求一个类应当是完整的、原始的、充分的
  2. 什么是多态?
  3. 学会类图和类关系图的设计
  4. 什么是设计模式?
  5. 设计模式的核心元素包括:标示模式的名称、适用环境的场景、描述设计的模板
  6. 面向对象设计的7条基本原则是什么?
    答:1.单一职责原则(一个类只有一种单一功能)、2.开放封闭原则(对拓展开发,对修改封闭)、3.依赖倒转原则(抽象不应该依赖于细节,细节应该依赖于抽象)、4.里氏代换原则(子类必须能够替换它的基类)、5.接口隔离原则(不应该强迫客户依赖于他们不用的方法)6.迪米特法则(尽量减少类之间的依赖关系,最直接的实现就是在两个类之间创建一个中间类)7.合成复用原则(尽量使用聚合、组合关系)。

第四章 数据处理的软件构造

  1. 实现数据持久性基本途径是文件数据库

4.1-4.2

  1. 什么是持久数据?
  2. 字符由比特组成,一组字符组成字段,若干字段构成记录,一个文件可以是一组相关的记录。
  3. 在操作系统中,文件是组织和管理数据的基本单位。
  4. 文件分为物理文件逻辑文件,物理文件是什么?逻辑文件是什么?
  5. 表示任意输入的源或任意输出的目的地。如果数据某个外部源出入程序,称为输入流;
  6. 序列化和反序列化。序列化是将对象的状态信息(成员变量)转换为可以存储或传输的形式的过程。它的逆过程称为反序列化。

4.3 编写健壮的程序

  1. 健壮性是指程序对于要求之外的输入进行判断并处理、使程序保持运行状态。
  2. 防御性编程是指如果无效数据传入了函数——即使是调用者的过错,函数也不能受到破坏。
  3. 防御性编程的基本思想是什么?
  4. 什么是异常?
  5. 异常处理一般有两种模型终止模式恢复模式,请解释一下这两种模式。
  6. 什么是断言?
  7. 断言可分为三类前置断言(代码执行前必须满足的特性)、后置断言(代码执行后必须满足的特性)、不变断言(代码执行前后不能改变的特性)
  8. 断言的基本用途是调试和测试程序。

4.4-4.6

  1. 什么是正则表达式?
  2. 什么是表驱动编程?把复杂的逻辑编织在表中,而不是代码中,使得程序结构更加简洁、逻辑清楚、容易修改和扩展。
  3. 语句覆盖测试的基本准则:设计测试用例,使得程序的每条语句都得到执行。
  4. 逻辑覆盖测试:判定覆盖和条件覆盖。
  5. 判定覆盖:设计测试用例,使得程序中的每个判断分支都至少经历一次。
  6. 条件覆盖:设计测试用例,使得程序中的每个布尔条件的所有可能的值都至少满足一次。

第五章 用户交互的软件构造

  1. 程序的两个视角?程序员视角,程序员是程序的产生者,他们看到的是程序的内部组成。用户视角,用户使用程序实现其需求。
  2. 当程序不止一个功能时,如何呈现并执行这些功能涉及哪两个方面的问题?
  3. 两种菜单的设计方式分别是?
  4. 两个菜单的分组原则分别是?
  5. 什么是人机交互?是关于可用性的学习和实践,是关于理解和构建用户乐于使用且易于使用的软件和技术,并能在使用时发现产品有效性的学科。
  6. 什么是交互设备?
  7. 最常用的几种交互设备键盘、定位设备、显示器。
  8. 5种交互风格:直接操纵、菜单选择、表格填充、命令语言和自然语言。
  9. 什么是交互界面?
  10. 常见的几种人机交互界面:命令语言用户界面、图形用户界面GUI、直接操作用户界面、多媒体用户界面、多通道用户界面、虚拟现实技术。
  11. 人机交互涉及心理学、认知科学、计算机科学、产品设计、图形设计等。
  12. 指导人机交互涉及的3条基本原则?学习性,灵活性,健壮性。
  13. 指导人机交互设计的8条黄金规则?1. 尽量保持一致,2.满足普遍可用性,3.提供信息反馈,4.设计对话框以产生结束信息,5.预防并成立错误,6.允许撤销操作,7.支持内部控制点,8.减轻短时记忆负担。
  14. 什么是以用户为中心的开发方法?
  15. 交互设计的过程模型,它体现了“迭代”和“以用户为中心”的特征。主要包括哪4项基本活动?1.交互设计以标识和建立用户需求开始。2.提出满足需求的候选设计方案。3.构建交互式版本。4.设计评估。
  16. 什么是原型?目标系统的初步形态,为系统的后续版本当作模板。
  17. 什么是快速原型?
  18. 快速原型开发的迭代过程?1.功能选择,2.构造原型,3.运行和评价原型,4.修改和完善原型。
  19. 使用原型法开发的优势是什么?
  20. 程序的可用性指的是程序是否有用,包括用户界面是否易用。主要有三个特征:有效性、效率和主观满意度。
  21. 可用性的指标有什么?1.易学性,2.交互效率,3.易记性,4.容错性。
  22. 根据是否运行待测程序,软件测试分为动态测试和静态测试。
  23. 静态测试的主要作用有?1.发现程序在功能、逻辑构造方面的错误;2.验证实现的程序在需求和设计方面符合用户的要求;3.确认程序符合预先定义的开发规范和标准;4.保证软件开发过程的规范性;5.有助于程序员之间相互学习。
  24. 静态测试常见的类型有哪些?桌面检查、代码走查、正式审查、同行评审及静态程序分析。

第七章 GUI软件构造

  1. 什么是顶层容器类?
  2. 什么是工具条?
  3. 组件可以粗略的分为哪三类?1.顶层容器类,2.非顶层的容器类(中间容器类),3.非容器类(基本组件)。
  4. GUI的基本设计规范是什么?1.界面合理,2.风格一致,3.元素标准
  5. 什么是观察者模式?
  6. 什么是事件驱动编程?
  7. 焦点是获取键盘或鼠标输入的能力。
  8. 默认焦点和焦点切换需遵循的设计原则:默认焦点应当处于用户经常最先输入组件。焦点的切换顺序应当从左至右、由上到下。

猜你喜欢

转载自blog.csdn.net/weixin_44223946/article/details/112061296