整理内容为老师画的重点。然后以自己的理解整理。
文章内容多为问题,需自己解答。提问方式并非考试题型,以知识点为主,所以理解后,以自己的答案为主,说不定书上还没自己理解的好。
答案都在书中,列出问题的目的是快速学习。
目录
第一章 软件开发概述
1.1 程序与软件构造
- 什么是程序?
- 什么是软件?
- 软件按功能划分为三种类型:______、________、__________。
- 软件按工作方式划分为:_______、________、_________、__________。
- 软件按服务对象的范围划分为_______、________。
- 程序设计的活动包括_______、________、________、________、________等不同阶段。
- 图灵奖获得者________提出的________________是程序设计的精辟观点。
- 程序设计的核心__________________________________________________。
- 软件开发不只是纯粹的程序的功能设计,还包括_________、___________ 、____________ 、____________ 和 ___________ 。
- 什么是软件工程?
1.2 软件生存周期
- 从用户的角度,软件生存周期分为哪几个阶段?
- 从开发者的角度,软件生存周期分为哪几个阶段?
- 软件实现与通常的程序设计的主要区别是什么?
1.3 软件开发过程
- 瀑布式开发过程把开发分为__________、___________ 、____________ 、___________ 、___________、___________这6个基本活动。
- 瀑布模型的核心思想是什么?
- 瀑布模型的主要问题是什么?
- 什么是增量开发?
- 增量开发模型的优点?
- 增量模型存在的风险?
PSP(个体软件过程)。PSP为个体的能力提供了一个阶梯式的进化框架。借助这个框架,个体可以循序渐进地改进开发过程。它赋予软件人员度量和分析工具,使其清楚地认识到自己的表现和潜力,从而可以提高自己的技能和水平。
1.4 敏捷开发
- 什么是敏捷开发?
- 敏捷开发的4个核心价值观?
- 敏捷开发方法需遵循的12条原则?
- 什么是意图导向编程?
- 典型的敏捷方法包括 EP、Scrum 、Crystal、FDD、DSDM。
- 什么是Scrum方法?
1.5-1.6
- 什么是软件构造?
- 按照语言的计算模型可以将高级语言划分为___和____两大类。
- 按照语言的转换和执行方式高级语言分为___和____ 。
第二章 模块化软件构造
- 什么是模块化软件构造?
2.1 分解与模块化
- 分而治之的策略是什么?
- 分解的核心是____________。
- 什么是关注点分离?
- _________是面向方面的程序设计的核心概念。
- 什么是模块化?
- 软件模块指的是 。
- 模块具有的三大特征是什么?
- _____是现代软件开发技术的一个基本原则。
- _____是实现软件模块化的一个基本手段。
- 在模块设计中,最基本的是_________。
- 结构化程序设计方法又称为______ 或_____法,内容是什么?
2.2 数据结构与算法
- 数据结构指什么?
- 常见的数据结构有数组、集合、栈、队列、堆、树、图、散列表等。
- 什么是算法?
- 基本的算法(类型)包括查找(如顺序查找、二分查找)、排序(冒泡排序、快速排序、插入排序、归并排序等)、二叉树的遍历(前序遍历、中序遍历、后序遍历)、图的遍历(广度优先遍历、深度优先遍历)、最短路径算法。
- 计算机算法与数据结构的关系?
- 存在过以数据为中心和以操作为中心的开发方法。面向对象的开发方法就是综合了数据与操作,将其封装成一个软件实体——对象。
2.3 模块化设计理论初步
- 模块化的5条基本原则是什么?
- 模块的内聚性指什么?它由低到高分为哪7个等级?
- 模块间的耦合性指什么?它由低到高分为哪7个等级?
- 软件概要设计的目标是力求_______ 、________。
2.4 测试程序
- 什么是软件测试?
- 测试需求要求程序的预期结果和实际运行结果都要明确、合理、可观察、可比较。
- 测试设计的内容包含设计用例,此外还有是否采用测试工具或自动化框架、如何组织人员进行测试等测试过程。
- 测试用例是一组测试数据(包含运行条件)和预期结果。
- 测试用例设计的核心是设计测试输入。
- 什么是测试误判、什么是测试漏判?
- 使用测试用例的三种方式?
2.5-2.6
- 什么是调试?
- 编写测试程序的四个优点?
- 测试程序的基本组成 1.建立测试环境,包括初始化测试用例,初始化统计变量。2.运行测试。3.处理测试结果,主要是统计、分析测试结果,并将其显示、存储。
第三章 面向对象的软件构造
- 模块化与面向对象技术的区别?
3.1 抽象与封装
- 什么是函数簇?
- 什么是抽象?
- 程序设计有两种抽象分别是过程抽象(函数抽象)和数据抽象。
- 什么是封装?
- 封装有哪些好处?
- 数据结构是一个值的集合和定义在这个值集上的一组操作的总称。
- 数据结构可分为两类:原子类型、结构类型。
- 抽象数据类型(ADT)是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组操作。
3.2-3.7
- 类的模块化准则要求一个类应当是完整的、原始的、充分的。
- 什么是多态?
- 学会类图和类关系图的设计。
- 什么是设计模式?
- 设计模式的核心元素包括:标示模式的名称、适用环境的场景、描述设计的模板。
- 面向对象设计的7条基本原则是什么?
答:1.单一职责原则(一个类只有一种单一功能)、2.开放封闭原则(对拓展开发,对修改封闭)、3.依赖倒转原则(抽象不应该依赖于细节,细节应该依赖于抽象)、4.里氏代换原则(子类必须能够替换它的基类)、5.接口隔离原则(不应该强迫客户依赖于他们不用的方法)6.迪米特法则(尽量减少类之间的依赖关系,最直接的实现就是在两个类之间创建一个中间类)7.合成复用原则(尽量使用聚合、组合关系)。
第四章 数据处理的软件构造
- 实现数据持久性基本途径是文件和数据库。
4.1-4.2
- 什么是持久数据?
- 字符由比特组成,一组字符组成字段,若干字段构成记录,一个文件可以是一组相关的记录。
- 在操作系统中,文件是组织和管理数据的基本单位。
- 文件分为物理文件和逻辑文件,物理文件是什么?逻辑文件是什么?
- 流表示任意输入的源或任意输出的目的地。如果数据某个外部源出入程序,称为输入流;
- 序列化和反序列化。序列化是将对象的状态信息(成员变量)转换为可以存储或传输的形式的过程。它的逆过程称为反序列化。
4.3 编写健壮的程序
- 健壮性是指程序对于要求之外的输入进行判断并处理、使程序保持运行状态。
- 防御性编程是指如果无效数据传入了函数——即使是调用者的过错,函数也不能受到破坏。
- 防御性编程的基本思想是什么?
- 什么是异常?
- 异常处理一般有两种模型终止模式和恢复模式,请解释一下这两种模式。
- 什么是断言?
- 断言可分为三类前置断言(代码执行前必须满足的特性)、后置断言(代码执行后必须满足的特性)、不变断言(代码执行前后不能改变的特性)。
- 断言的基本用途是调试和测试程序。
4.4-4.6
- 什么是正则表达式?
- 什么是表驱动编程?把复杂的逻辑编织在表中,而不是代码中,使得程序结构更加简洁、逻辑清楚、容易修改和扩展。
- 语句覆盖测试的基本准则:设计测试用例,使得程序的每条语句都得到执行。
- 逻辑覆盖测试:判定覆盖和条件覆盖。
- 判定覆盖:设计测试用例,使得程序中的每个判断分支都至少经历一次。
- 条件覆盖:设计测试用例,使得程序中的每个布尔条件的所有可能的值都至少满足一次。
第五章 用户交互的软件构造
- 程序的两个视角?程序员视角,程序员是程序的产生者,他们看到的是程序的内部组成。用户视角,用户使用程序实现其需求。
- 当程序不止一个功能时,如何呈现并执行这些功能涉及哪两个方面的问题?
- 两种菜单的设计方式分别是?
- 两个菜单的分组原则分别是?
- 什么是人机交互?是关于可用性的学习和实践,是关于理解和构建用户乐于使用且易于使用的软件和技术,并能在使用时发现产品有效性的学科。
- 什么是交互设备?
- 最常用的几种交互设备键盘、定位设备、显示器。
- 5种交互风格:直接操纵、菜单选择、表格填充、命令语言和自然语言。
- 什么是交互界面?
- 常见的几种人机交互界面:命令语言用户界面、图形用户界面GUI、直接操作用户界面、多媒体用户界面、多通道用户界面、虚拟现实技术。
- 人机交互涉及心理学、认知科学、计算机科学、产品设计、图形设计等。
- 指导人机交互涉及的3条基本原则?学习性,灵活性,健壮性。
- 指导人机交互设计的8条黄金规则?1. 尽量保持一致,2.满足普遍可用性,3.提供信息反馈,4.设计对话框以产生结束信息,5.预防并成立错误,6.允许撤销操作,7.支持内部控制点,8.减轻短时记忆负担。
- 什么是以用户为中心的开发方法?
- 交互设计的过程模型,它体现了“迭代”和“以用户为中心”的特征。主要包括哪4项基本活动?1.交互设计以标识和建立用户需求开始。2.提出满足需求的候选设计方案。3.构建交互式版本。4.设计评估。
- 什么是原型?目标系统的初步形态,为系统的后续版本当作模板。
- 什么是快速原型?
- 快速原型开发的迭代过程?1.功能选择,2.构造原型,3.运行和评价原型,4.修改和完善原型。
- 使用原型法开发的优势是什么?
- 程序的可用性指的是程序是否有用,包括用户界面是否易用。主要有三个特征:有效性、效率和主观满意度。
- 可用性的指标有什么?1.易学性,2.交互效率,3.易记性,4.容错性。
- 根据是否运行待测程序,软件测试分为动态测试和静态测试。
- 静态测试的主要作用有?1.发现程序在功能、逻辑构造方面的错误;2.验证实现的程序在需求和设计方面符合用户的要求;3.确认程序符合预先定义的开发规范和标准;4.保证软件开发过程的规范性;5.有助于程序员之间相互学习。
- 静态测试常见的类型有哪些?桌面检查、代码走查、正式审查、同行评审及静态程序分析。
第七章 GUI软件构造
- 什么是顶层容器类?
- 什么是工具条?
- 组件可以粗略的分为哪三类?1.顶层容器类,2.非顶层的容器类(中间容器类),3.非容器类(基本组件)。
- GUI的基本设计规范是什么?1.界面合理,2.风格一致,3.元素标准
- 什么是观察者模式?
- 什么是事件驱动编程?
- 焦点是获取键盘或鼠标输入的能力。
- 默认焦点和焦点切换需遵循的设计原则:默认焦点应当处于用户经常最先输入组件。焦点的切换顺序应当从左至右、由上到下。