第七章——嵌入式系统开发与运维
第七章——嵌入式系统开发与运维
前言:
计算机第七章节主要知识点。
1 知识点介绍
- 系统开发过程及项目管理;
- 系统分析基础知识;
- 系统设计知识;
- 下午题专题训练
2 系统开发过程及项目管理
- 开发模型
- 项目管理
- 软件过程改进
2.1 开发模型
瀑布模型
演化模型
增量模型
螺旋模型
快速原型模型
喷泉模型
V模型
迭代模型/迭代开发方法
构建组装模型/基于构件的开发方法
统一过程/统一开发方法
敏捷开发方法
模型驱动的开发方法
软硬件协同开发的方法
2.2 瀑布模型
2.3 原型模型
2.4 螺旋模型
2.5 增量模型
2.6 V模型、喷泉模型、快速应用开发模型
2.7 构建组装模型
2.8 敏捷方法
敏捷宣言 。
- 个体和交互胜过了过程和工具;
- 可工作的软件胜过了大量的文档;
- 客户合作胜过了客户合同谈判;
- 响应变化胜过了遵循计划;
常用敏捷方法。
- 自适应开发;
- 水晶方法;
- 共用驱动开发;
- 极限编程;
基本原则。
- 短平快的会议;
- 小型版本发布;
- 较少的文档;
- 合作为重;
- 客户直接参与;
- 自动化测试;
- 适应性计划调整;
- 结对编程;
- 测试驱动开发;
- 持续集成;
- 重构;
4大价值观。
- 沟通;
- 简单;
- 反馈;
- 勇气;
5大原则。
- 快速反馈;
- 简单性假设;
- 逐步修改;
- 提倡更改;
- 优质工作;
12大最佳实践。
- 计划游戏
- 结对编程
- 小型发布
- 集成代码所有制
- 隐喻
- 持续集成
- 简单设计
- 每周工作40小时
- 测试先行
- 现场客户
- 重构
- 编码标准
2.8.1 水晶方法
水晶方法系列(Crystal),其目的是发展一种提倡“机动性的“方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。Crystal家族实际上是一组经过证明、对不同类型项目非常有效的敏捷过程,它的发明使得敏捷团队可以根据其项目和环境选择最合适的Crystal家族成员。
与XP的对比。
- 它与XP方法一样,都以人为中心的理念,但在实践上有所不同。Crystal考虑到人们一般都很难严格遵循一个纪律约束很强的过程,因此,与XP的高度纪律性不同,Crystal探索了用最少纪律约束而仍能成功的方法,从而产出效率与易于运作上达到一种平衡。
- 也就是说,虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接收并遵循它。
2.8.2 开放源码
这里提到的开放式源码指的是开放源码界所用的一种运作方式。
- 开放式源码项目有一个特别之处,就是程序开发人员在地域上分布很广,这使得它和其他敏捷方法不同,因为一般的敏捷方法都很强调项目组成员在同一地点工作。
- 开放源码的一个突出特点就是查错排障的高度并行性,任何人发现了错误都可以将改成源码的“补丁”文件发给维护者。然后由维护者将这些“补丁”或是新增的代码并入源码库。
2.8.3 并列争球法
Scrum(并列争球法),该方法强调这样一个事实,即明确定义了的可重复的方法过程,只限于在明确定义了的可重复的环境中,为明确定义了的可重复的人员所用,去解决明确定义了的可重复的问题。
运用了“迭代“的方法,把每段时间(例如30天)一次的迭代成为一个冲刺,并按需求的优先级别来实现产品,有多个自治组织和自治小组并行的递增来实现产品。
敏捷方法之极限编程(XP)和Scrum区别。
- 迭代长度不同;
- 在迭代中,是否允许修改需求;
- 在迭代中,User Story是否严格按照优先级别来实现;
- 软件的实施过程中,是否采用严格的工程方法,保证进度或者质量;
2.8.4 功用驱动开发方法
Coad的功用驱动开发方法(FDD-Feature Drive Development)FDD是由Jeff De Luca和大师Peter Coad提出来的。
- 像其他方法一样,它致力于短时的迭代阶段和可见可用的功能。
- 在FDD中,一个迭代周期一般是两周。
- 在FDD中,编程开发人员分成两类:首席程序员和“类”程序员(class owner)。首席程序员是最富有经验的开发人员,他们是项目的协调者、设计者和指导者,而“类”程序员则主要做源码编写。
2.8.5 自适应软件开发方法
自适应软件开发方法(ASD方法),ASD(Adaptive Software Development)方法由Jim Highsmith提出,其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。
2.8.6 动态系统开发方法
DSDM(动态系统开发方法,也称业务中心框架开发方法),它倡导以业务为核心,快速而有效的进行系统开发。我们可以把DSDM看成一种控制框架,重点在于快速交付、并补充如何应用这些控制的指导原则的框架。
DSDM是一整套的方法论,不仅仅包括软件开发内容和实践,也包括了组织结构,项目管理,估值,工具环境,测试,配置管理,风险管理,重用等各个方面的内容。
2.8.7 例题
(B)适用于程序开发人员在地域上分布很广的开发团队。(D)中,编程开发人员分成首席程序员和“类”程序员。
(1)
A. 水晶系列开发方法
B. 开放式源码开发方法
C. SCRUM开发方法
D. 功用驱动开发方法(FDD)
(2)
A. 自适应软件开发(ASD)
B. 极限编程(XP)开发方法
C. 开放统一过程开发方法(OpenUP)
D. 功用驱动开发方法(FDD)
在敏捷过程的开发方法中,(C)运用迭代的方法,其中,把每段时间(例如30天)一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品,有多个自治组织和自治小组并行的递增来实现产品。
A. 极限编程XP
B. 水晶法
C. 并列争球法
D. 自适应开发方法
以下关于敏捷开发原则的叙述中,错误的是(B)。
A. 强调通过尽早地、持续地交付有价值的软件来使客户满意。
B. 经常交付可以工作的软件,但是每次都必须交付具有完整功能的系统。
C. 在团队内部,最具有效果并富有效率的信息传递方法是面对面的交换。
D. 强调应对需求的持续变更,即使在项目后期也可灵活应对需求变更。
2.9 时间管理
2.9.1 PERT图
项目计划评审技术。
关键路径的事件流:1-2-3-4-6-7-9
- ES: 最早开始时间;
- EF: 最早完成时间;
- LS: 最迟开始时间;
- LF: 最迟完成时间;
2.9.2 关键路径法
关键路径法是在制定进度计划时使用的一种进度网络分析技术。关键路线法沿着项目进度网络路线进行正向与反向分析,从而计算出所有计划活动理论上的最早开始与完成日期、最迟开始与完成日期,不考虑任何资源限制。
总时差(松弛时间):在不延误总工期的前提下,该活动的机动时间。活动的总时差等于该活动最迟完成时间与最早完成时间之差,或该活动最迟开始时间与最早开始时间之差。关键路径为总时差为0的路径。
2.9.3 甘特图
优点:甘特图直观、简单、容易制作,便于理解,能很清晰地标识出直到每一项任务的起始与结束时间,一般适用比较简单的小型项目,可用于WBS的任何层次、进度控制、资源优化、编制资源和费用计划。
缺点:不能系统地表达一个项目所包含的各项工作之间的复杂关系,难以进行定量的计算和分析,以及计划的优化等。
2.9.4 例题
- 某软件项目的活动图如下图所示,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的数字表示活动的持续时间(天)。完成该项目的最少时间为(B)天。处于某种原因,现在需要一个开发人员完成BC和BD,则完成该项目的最少时间为(C)天。
(1)
A. 11
B. 18
C. 20
D. 21
(2)
A. 11
B. 18
C. 20
D. 21
【解题思路】本题考查软件项目管理的基础知识。
活动图是描述一个项目中各个工作任务相互依赖关系的一种模型,项目的很多重要特性是可以通过分析活动图得到的,如估算项目完成时间,计算关键路径和关键活动等。根据上图计算出关键路径为ABCEFJ和ABDGFJ,其长度为18。
- 下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,则里程碑(B)没有按时完成会影响整个项目的精度。若活动0 + 2完成后,停止3天才开始2 + 6,则完成整个项目的最少时间是(C)天。
(1)
A. 1
B. 2
C. 3
D. 4
(2)
A. 53
B. 55
C. 56
D. 57
- 下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,则里程碑(A)在关键路径上。活动GH的松弛时间是(D)。
松弛时间是指延误多少天不会延误总的工期时间。
3 软件配置管理
IEEE对配置项的定义为硬件、软件或二者兼有的集合,为配置管理指定的,在配置管理过程中作为一个单独的实体对待,可作为配置项管理的有:外部交付的软件产品和数据、指定的内部软件工作产品和数据、指定的用于创建或支持软件产品的支持工具、供方/供应商提供的软件和客户提供的设备/软件。
- 典型配置项包括项目计划书、需求文档、设计文档、源代码、可执行代码、测试用例、运行软件所需的各种数据,他们经评审和检查通过后进入软件配置管理(SCM)。
- 每个配置项的主要属性有:名称、标识符、文件状态、版本、作者和日期等。所有配置项都被保存在配置库里,确保不会混淆、丢失。
- 配置项及其历史记录反映了软件的演化过程。
3.1 三种库
- 检查点:指在规定的时间间隔内对项目进行检查,比较实际与计划之间的差异,并根据差异进行调整;
- 里程碑:完成阶段性工作的标志,不同类型的项目里程碑不同;
- 基线:指一个(或一组)配置项在项目生命周期的不同时间点上通过正式评审而进入正式受控的一种状态。基线是一些重要的里程碑,但相关交付成果要通过正式评审,并作为后续工作的基准和出发点。基线一旦建立后其变化需要受控制。
3.2 三种基线
- 功能基线(定义基线):是指在系统分析与软件定义阶段结束的时候经过正式评审和批准的系统设计规格说明书,这就是功能基线。
- 分配基线(需求基线):也叫指派基线,它是指软件需求分析阶段结束时,经过正式评审和批准的软件需求规格说明(SRS)。
- 产品基线:是指在软件组装与系统系统测试阶段结束时,经过正式评审和批准的有关开发的软件产品的全部配置项的规格说明。
就要按照变更控制系统来管理变更,所谓变更管理的控制系统它是一套实现所确定的修改项目文件或者改变项目活动的时候应该遵循的程序。
3.3 版本控制
控制版本其实就是软件配置项的版本控制,因为所有配置项在标识的阶段已经描述了版本以及日期相关的信息,那么随着项目的开展,这些配置项可能要修改,要发生变更,变更以后那么版本要升级,整个整个过程叫版本控制。
- 总的来讲,配置项有三个状态,草稿状态,正式状态和修改状态;
- 那么整个版本控制的话,要明确一个版本的规则;
3.4 风险的分类
- 项目风险
- 潜在的预算、进度、人员和组织、资源、用户和需求问题;
- 项目复杂性、规模和结构的不确定性;
- 技术风险
- 潜在的设计、实现、接口、测试和维护方面的问题;
- 规格说明的多意性、技术上的不确定性、技术陈旧、最新技术(不成熟);
- 商业风险
- 时长风险:系统虽然很优秀但不是市场真正所想要的;
- 策略风险:系统不再符合企业的信息系统战略;
- 销售风险:开发了销售部门不清楚如何推销的系统;
- 管理风险:由于重点转移或人员变动而失去上级支持;
- 预算风险:开发过程中没有得到预算或人员的保证;
3.5 例题
- 软件项目至少应该形成功能基线、分配基线和产品基线三类基线。功能基线形成的时机是(A)。
A. 在系统分析与软件定义阶段结束时
B. 在需求分析阶段结束时
C. 在软件设计阶段结束时
D. 在综合测试阶段结束时
【解题思路】本提考查软件工程的基础知识
在配置项目生命周期的某一特定时间内,一个和一组正式指定或固定下来的配置标准文件。基线加上根据这些基线批准同意的改动构成当前配置标识,对于配置管理由三类基线:功能基线、分配基线、产品基线。
3.6 软件过程改进-CMM
CMM即软件能力成熟度模型,是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度的等级认证标准。规定了软件研制和软件测试中的主要软件管理过程和工程过程的实践。主要用于评价软件企业的质量保证能力。
重复级特点是项目级,已定义级特点是组织级,已管理级特点是量化,优化级特点是缺陷预防。
每个成熟度等级被分解成几个关键过程域,共18个关键过程域(KPA)。
成熟度等级/过程分类 | 管理方面 | 组织方面 | 工程方面 |
---|---|---|---|
优化级 | 技术变更管理 过程变更管理 |
缺陷预防 | |
已管理级 | 量化过程管理 | 软件质量管理 | |
已定义级 | 集成软件管理组间合作 | 组织过程焦点 组织过程定义 培训计划 |
软件产品过程 同行评审 |
可重复级 | 需求管理 软件项目计划 软件项目跟踪与监控 软件子合同管理 软件质量保证 软件配置管理 |
3.7 例题
- 软件能力成熟度模型CMM(Capability Maturity Model)规定了(C)中的主要软件管理过程和工程过程的实践。
A. 系统分析与软件定义阶段
B. 软件研制与维护活动
C. 软件研制和软件测试
D. 软件设计
【解题思路】本题考查软件工程的基础知识,CMM的基本概念。
CMM即软件能力成熟度模型,是目前国际上最流行、最实用的软件生产过程标准和软件企业成熟度的等级认证标准。规定了软件研制和软件测试中的主要软件管理过程和工程过程的实践。主要用于评测软件企业的质量保证能力。
- 在软件能力成熟度模型CMM中,“同行评审”关键过程属于(B)。
A. 可重复级
B. 已定义级
C. 已管理级
D. 优化级
【解题思路】本提考查软件工程的基础知识,CMM的基本概念。
理解各个级别最重要的特点。比如:可重复级是项目级的,已定义级是组织级的,已管理级是量化的优化级是缺陷预防。
4 系统分析基础知识
- 需求工程概述
- 需求分类
- 需求分析
软件的需求工程,他包括了创建和维护需求文档所必须的一切活动的过程。
4.1 例题
- 在软件需求工程中,需求管理贯穿整个过程。需求管理最基本的任务是明确需求,并使项目团队和用户达成共识,即建立(D)。
A. 需求跟踪说明
B. 需求变更管理文档
C. 需求分析计划
D. 需求基线
- 软件需求管理是软件项目开发过程中控制和维持需求约定的活动,包括(B)、版本控制、需求跟踪、需求状态跟踪等活动。
A. 需求发现
B. 需求变更控制
C. 需求排序
D. 需求评估
- 软件需求分析阶段的测试手段一般采用(C)。
A. 总结
B. 阶段性报告
C. 需求分析评审
D. 黑盒测试
【解题思路】
对软件阶段工作产品的验证的手段一般分为评审、测试、分析,对于需求分析阶段产生《软件需求规格说明书》来说,一般是开展相应的评审活动去验证需求的完整性、正确性和一致性。
4.2 需求分类
软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。
4.2.1 例题
- 某软件公司正在承担开发一个字处理器的任务。在需求分析阶段,公司的相关人员整理出一些相关的系统需求,其中,“找出文档中的拼写错误并提供一个替换项列表来提供选择替换拼错的词”属于(B);“显示提供替换词的对话框以及实现整个文档范围的替换”属于(C);“用户能有效的纠正文档中的拼写错误”属于(A)。
(1)
A. 业务需求
B. 用户需求
C. 功能需求
D. 性能需求
(2)
A. 业务需求
B. 用户需求
C. 功能需求
D. 性能需求
(3)
A. 业务需求
B. 用户需求
C. 功能需求
D. 性能需求
- 某企业财物系统的需求中,属于功能需求的是(A)。
A. 每个月特定的时间发放员工工资
B. 系统的响应时间不超过3秒
C. 系统的计算精度符合财物规则的要求
D. 系统可以允许100个用户同时查询自己的工资
4.2.2 结构化分析
4.2.2.1 数据流图(DFD)
自顶向下,逐步求精。上层称父图,下层称子图。父图和子图的外部实体在数量和名称上要保持平衡。
4.2.2.2 状态转换图(STD)
4.2.2.3 实体联系图(ER)
4.2.2.4 例题
- 某医院预约系统的部分需求为:患者可以查看医院发布的专家特长介绍及其就诊时间;系统记录患者信息,患者预约特定时间就诊。用DFD对其进行功能建模时,患者是(A);用ERD对齐进行数据建模时,患者是(A)。
(1)
A. 外部实体
B. 加工
C. 数据流
D. 数据存储
(2)
A. 实体
B. 属性
C. 联系
D. 弱实体
【解题思路】
数据流图是结构化分析的一个重要模型,描述数据在系统中如何被传送和变化,以及描述如何对数据流进行变换的功能。实体联系图是一个常用的数据模型,用于描述数据对象及数据对象之间的关系。
4.2.2.5 面向对象分析OOA-UML
本节只需了解即可。
- 构造块
- 事物
- 结构事物:最静态的部分,包括:类、接口、构件、协作、用例。活动类和节点。
- 行为事物:代表时间和空间上的动作。交互和状态机,包括:消息、动作次序。
- 分组事物:看成是个盒子,如:包、构件。
- 注释事物:UML模型的解释部分。用来描述、说明和标注模型的任何元素。如注解。
- 关系
- 依赖关系:一个事物的发生变化会影响另一个事物。
- 关联关系:所描述的是一组对象之间的连接的结构关系。
- 聚合关系:整体与部分生命周期不同。
- 组合关系:整体与部分生命周期相同。
- 泛化关系:一般/特殊关系。
- 实现关系:接口与类之间的关系。
- 图
- 事物
- 规则
- 公共机制
- 规格说明:事物语义的细节描述,它是模型真正的核心。
- 修饰:通过修饰来表达更多的信息。
- 公共分类:类与对象、接口与实现。
- 扩展机制:允许添加新的规则。
4.2.2.6 需求分析-OOA-UML
UML图。
- 静态图(结构图)
- 类图
- 对象图
- 构件图
- 部署图:软硬件之间映射
- 制品图
- 包图
- 组合结构图
- 动态图(行为图)
- 用例图:系统与外部参与者的交互。
- 顺序图:强调按时间顺序。
- 通信图:强调收发消息的对象、或者参与者的一种构造或组织。
- 状态图:状态转换变迁。
- 活动图:类似程序流程图,并行行为。
- 定时图:强调消息跨越不同对象的实际时间。
- 交互概览图:是活动图和顺序图的混合物。
4.2.2.7 例题
- 在UML的通用机制中,(A)用于把元素组织成组;(D)是系统中遵从一组接口规范且付诸实现的物理的、可替换的软件模块。
(1)
A. 包
B. 类
C. 接口
D. 构件
(2)
A. 包
B. 类
C. 接口
D. 构件
5 系统设计知识
- 结构化设计
- 面向对象设计
- 软硬件协同设计
5.1 结构化设计
自顶向下,逐步求精,模块化的过程。
- 概要设计
- 详细设计
特点。
- 抽象化
- 自顶而下、逐步求精
- 信息隐蔽
- 模块独立(高内聚、低耦合)
模块设计特点。
- 保持模块的大小适中;
- 尽可能减少调用的深度;
- 多扇入,少扇出;
- 单入口,单出口;
- 模块的作用域应该在模块之内;
- 功能应该是可预测的;
内聚。从上到下内聚程度由高到低。
内聚类型 | 描述 |
---|---|
功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可 |
顺序内聚 | 处理元素相关,而且必须顺序执行(有数据传递) |
通信内聚 | 所有处理元素集中在一个数据结构的区域上(使用相同数据) |
过程内聚 | 处理元素相关,而且必须按特定次序执行(无数据传递) |
瞬时内聚 | 所包含的任务必须在同一时间间隔内执行(如初始化)(时间因素) |
逻辑内聚 | 完成逻辑上相关的一组任务(传递参数) |
偶然内聚 | 完成一组没有关系或松散关系的任务 |
耦合。从上到下耦合程度由低到高。
耦合类型 | 描述 |
---|---|
非直接耦合 | 没有直接联系,互相不依赖对方 |
数据耦合 | 两个模块彼此间通过数据参数交换信息 |
标记耦合 | 组模块通过参数传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量 |
控制耦合 | 模块间传递的信息中包含用于控制模块内部逻辑的信息 |
外部耦合 | 模块间访问同一全局简单变量 |
公共耦合 | 多个模块引用同一个全局数据结构 |
内容耦合 | 一个模块访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块内部;两个模块有一部分程序代码重叠;一个模块有多个入口 |
5.2 模块结构设计
模块结构设计的基本任务是:将系统划分为模块、确定软件的结构,模块的功能和模块间的接口,以及全局数据结构的设计。
模块的概念。
- 模块是组成系统的基本单位,它的特点是可以组合、分解和更换。
模块的四要素。
- 输入和输出;
- 处理功能:指模块把输入转换成输出所做的工作;
- 内部数据:指仅供该模块本身引用的数据;
- 程序代码:指用来实现模块功能的程序;
5.3 面向对象设计
5.4 软硬件协同设计
5.5 例题
- 结构化开发方法中,(D)主要包含对数据结构和算法的设计。
A. 体系结构设计
B. 数据设计
C. 结构设计
D. 过程设计
【解题思路】
结构化设计主要包括:1.体系结构设计:定义软件的主要结构元素及其关系。2.数据设计:基于实体联系图确定软件设计的文件系统的结构及数据库的表结构。3.外部接口:描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。4.过程设计:确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。
6 下午题专题训练
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
智能家居系统以消费者的使用习惯为依据,利用信息系统和自动化控制系统实现人与家用设备之间的信息交换,也就是说,智能家居是对家庭环境中的各个子系统(家电、水电、窗帘、视频监控、服务机器人等)进行互通控制的一套体系。图1-1位某单位设计的以ZigBee、WiFi及GSM为基础构建的集智能控制、安全监控为一体的智能家居系统示意图,依次是:家庭内部以ZigBee为基础的无线系统、用来进行视频传输的WiFi网络和用来外部交互的外部交互网络。
略。