Channy's blog

//Description: 记录系统分析中的一些概念和方法,备考软考系统分析师。主要参考书籍《系统分析师》(2010),辅助参考书籍《网络规划设计师》,其中后者用于补充前者所没有的知识点,如软件著作权、新技术等。部分内容大学课程中学过,如《计算机体系结构》、《数据库》、《操作系统》等。整个笔记共分两部分:第一部分为知识点总结,第二部分为笔记及经验。

[toc]

系统分析师真题


综合知识

第1章 信息论

信息是系统有序程度的度量,表现为负熵
信息的特征:
(1)客观性。信息是客观事物在人脑中的反映,而反映的对象则有主观和客观的区别,因此,信息可分为主观信息(例如,决策、指令和计划等)和客观信息(例如,国际形势、经济发展和一年四季等)。主观信息必然要转化成客观信息,例如,决策和计划等主观信息要转化成实际行动。因此,信息具有客观性。
(2)普遍性。物质决定精神,物质的普遍性决定了信息的普遍存在。
(3)无限性。客观世界是无限的,反映客观世界的信息自然也是无限的。无限性可分为两个层次,一是无限的事物产生无限的信息,即信息的总量是无限的:二是每个具体事物或有限个事物的集合所能产生的信息也可以是无限的。
(4)动态性。信息是随着时间的变化而变化的。
(5)相对性。不同的认识主体从同一事物中获取的信息及信息量可能是不同的。
(6)依附性。信息的依附性可以从两个方面来理解,一方面,信息是客观世界的反映,任何信息必然由客观事物所产生,不存在无源的信息:另一方面,任何信息都要依附于一定的载体而存在,需要有物质的承担者,信息不能完全脱离物质而独立存在。
(7)变换性。信息通过处理可以实现变换或转换,使其形式和内容发生变化,以适应特定的需要。
(8)传递性。信息在时间上的传递就是存储,在空间上的传递就是转移或扩散。
(9)层次性。客观世界是分层次的,反映它的信息也是分层次的。
(10)系统性。信息可以表示为一种集合,不同类别的信息可以形成不同的整体。
因此,可以形成与现实世界相对应的信息系统。
(11)转化性。信息的产生不能没有物质,信息的传递不能没有能量,但有效地使用信息,可以将信息转化为物质或能量。

信息系统的生命周期:系统规划、系统分析、系统设计、系统实现、系统运行与评价。

信息系统建设原则:

  1. 高层管理人员介入原则
  2. 用户参与开发原则
  3. 自顶向下规划原则
  4. 工程化原则

第2章 经济管理与应用数学

查找算法

  1. 顺序查找 O(n)
  2. 折半查找 O($log_2 n$)
  3. 分块查找
  4. 哈希查找 O(1)

    排序算法

  5. 插入排序 $O(n^2)$
  6. 简单选择排序 $O(n^2)$
  7. 冒泡排序 $O(n^2)$
  8. 快速排序 $O(nlog_2 n)$
  9. 希尔排序
  10. 堆排序 $O(nlog_2 n)$
  11. 归并排序 $O(nlog_2 n)$
  12. 外排序

    PERT图(Program Evaluation and Review Technique)

    • 关键路径 (Critical Path) 完成工程的最少时间是从开始顶点到结束顶点的最长路径长度,为关键路径,关键路径上的活动为关键活动
    • 任务依赖关系
    • 松弛时间

三点估算法: \(t_i = (a_i + 4 m_i + b_i) / 6\) 其中$a_i$表示乐观时间,$b_i$表示悲观时间,$m_i$表示最可能时间。 \(\sigma^2 = (b_i - a_i)^2 / 36\)

Gantt图(甘特图)

第3章 操作系统

3.1 操作系统的类型

微内核技术

的主要优点如下:
1. 统一的接口,在用户态和核心态之间无需进程识别。 1. 可伸缩性好,能适应硬件更新和应用变化。 1. 可移植性好,所有与具体机器特征相关的代码,全部隔离在微内核中,如果操作系统要移植到不同的硬件平台上,只需修改微内核中极少代码即可。 1. 实时性好,微内核可以方便地支持实时处理。 1. 安全可靠性高,微内核将安全性作为系统内部特性来进行设计,对外仅使用少量应用编程接口。 1. 支持分布式系统,支持多处理器的体系结构和高度并行的应用程序。

3.2 进程管理

进程

是一个具有独立功能的程序关于数据集合的一次可以并发执行的运行活动,是系统进行资源分配和调度的基本单位。相对于程序,进程是动态的概念,而程序是静态的概念,是指令的集合。进程具有动态性和并发性,需要一定的资源(例如,CPU时间、内存、文件和1/0设备等)来完成其任务,这些资源在创建进程或执行时被分配。在大多数操作系统中,进程是进行资源分配和调度的基本单位。
一个进程是通过其物理实体被感知的,进程的物理实体又称为进程的静态描述,通常由三部分组成,分别是程序、数据集合和进程控制块(Process Control Block,PCB)。
程序描述了进程所要完成的功能,数据集合描述了程序运行所需要的数据部分和工作区, PCB包括进程的描述信息、控制信息和资源信息,是进程动态特性的集中反映。程序和数据集合是进程存在的物质基础,是进程的实体;PCB是进程存在的标志,进程与PCB 是一对一的关系,操作系统利用PCB对并发执行的进程进行控制和管理。

3.2.2 信号量与PV操作

m个进程n个资源,则 $$ PV \in [-m + n, n] $$

3.2.3 死锁问题

产生死锁的4个必要条件:

  1. 互斥
  2. 不剥夺
  3. 请求与保持
  4. 环路 对死锁的处理,常用的方法有 死锁的预防、避免和检测与解除等方法。

    3.2.4 线程管理

线程

是进程的活动成分,是处理器分配资源的最小单位,它可以共享进程的资源与地址空间,通过线程的活动,进程可以提供多种服务(对系统进程而言)或实行子任务并行(对用户进程而言)。每个进程创建时只有一个线程,根据需要在运行过程中创建更多的线程(前者也可称“主线程”)。显然,只有主线程的进程才是传统意义下的进程。

  1. 线程的实现方式
    • 内核线程
    • 用户线程
    • 轻权进程:内核支持的用户线程,每个轻权进程由一个单独的内核线程来支持
  2. 与进程的比较
    在引入线程的操作系统中,通常一个进程有若干个线程,至少也需要有一个线程。
    进程和线程的区训主要体现在以下5个方面:
  3. 调度。在传统的操作系统中,拥有资源的基本单位和独立调度、分配的基本单位都是进程。而在引入线程的操作系统中,则将线程作为调度和分配的基本单位,将进程作为资源拥有的基本单位。
  4. 并发性。在引入线程的操作系统中,不仅进程之间可以并发执行,而且同一个进程的多个线程之间也可并发执行,从而使操作系统具有更好的并发性,能够有效地使用多个资源和提高系统吞吐量。
  5. 拥有资源。一般来说,线程除了拥有一点必不可少的资源外,它自己不拥有系统资源,但它可以访问其隶属进程的资源。也就是说,一个进程所拥有的资源可供它的所有线程共享。
  6. 系统开销。在进程切换时,涉及整个当前进程CU环境的保存和新被调度运行进程的CPU环境的设置、裸机地址空间的切换:而线程切换只需保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。由此可见,进程切换的开销远大于线程切换的开销。此外,由于同一进程中的多个线程具有相同的地址空间,这使它们之间的同步和通信变得比较容易。在有的系统中,线程的切换、同步和通信都无需操作系统内核的干预。
  7. 通信方面。进程间通信需要进程同步和互斥手段的辅助,以保证数据一致性, 而线程间可以直接读写进程数据段(例如,全局变量等)来进行通信。

3.3 内存管理

第4章 数据通信与计算机网络

4.1 数据通信基础知识

香农公式: \(C = W log_2(1 + \frac{S}{N} )\) 其中速率$C$,带宽$W$ Hz,信噪比 $dB = 10 * log_{10}{\frac{S}{N}}$

4.2 网络体系结构与协议

第5章 数据库系统

5.1 数据库模式

数据库系统由外模式、概念模式和内模式三级构成。

数据库系统结构层次图

5.2 数据模型

数据模型一般有两大类:概念数据模型(实体联系模型,E-R模型)和基本数据模型(结构数据模型)。E-R模型有层次模型、网状模型、关系模型和面向对象模型等。基本数据模型由数据结构、数据操作、完整性约束三部分组成。

5.2.2 关系模型

关系代数的基本运算主要有并、交、差、笛卡尔积、选择、投影、连接和除法运算。

数据库的并发操作会带来一些数据不一致问题,如丢失修改、读脏数据、不可重复读,(写写、写读、读写)

5.4.2 数据库性能优化

在数据库的概念设计过程中,先设计各子系统的局部E-R图

,其设计过程是,首先, 确定局部视图的范围;然后,识别实体及其标识,确定实体之间的联系;最后,分配实体及联系的属性。各子系统的局部E-R图设计好后,下一步就是要将所有的分ER图综合成一个系统的总体E-R图,一般称为视图的集成。

在初步的ER图中,可能存在一些冗余的数据和实体间冗余的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难,应当予以消除。消除冗余的主要方法为分析方法,即以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余。

数据一致性实现方式:

  1. 逻辑设计
也称为逻辑结构设计,其任务是将概念模型转化为某个特定的DBMS上的逻辑模型

。设计逻辑结构时,首先为概念模型选定一个合适的逻辑模型(例如,关系模型、网状模型或层次模型),然后将其转化为由特定DBMS支持的逻辑模型,最后对逻辑模型进行优化。

  1. 物理设计
    物理设计也称为物理结构设计,其任务是对给定的逻辑模型选取一个最适合应用环境的物理结构,所谓数据库的物理结构,主要是指数据库在物理设备上的存储结构和存取方法。

    5.5.2 实体联系模型(E-R模型)

    E-R模型也称为E-R图。包括:实体、属性、实体之间的联系

    5.6 分布式数据库系统

    分布式数据库是由一组数据组成的,这组数据分布在计算机网终的不同计算机上, 网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时, 每个节点也能通过网络通信子系统执行全局应用。
    查询处理和优化技术要复杂得多。具体方法有全局查询树的变换、副本的选择与多副本的更新策略、查询树的分解、半连接与直接连接等。

    5.6.2 数据分片

    • 水平分片
    • 垂直分片
    • 导出分片
    • 混合分片

      5.7 数据仓库技术

      数据处理大致可以分为两大类:

    • 联机事务处理(On-Line Transaction Processing, OLTP)
      传统数据库的主要应用,支持基本的、日常的事务处理;
    • 联机分析处理(On-Line Analytical Processing, OLAP)
      数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的结果。
基本多维分析操作有钻取、切片和切块、旋转等。

5.7.2 数据仓库概述

数据仓库的真正关键是数据的存储和管理。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。要决定采用什么产品和技术来建立数据仓库的核心,则需要从数据仓库的技术特点着手分析。针对现有各业务系统的数据,进行抽取、清理,并有效集成,按照主题进行组织,整个过程可以简称为抽取、转换和加载(Extraction-Transformation-Loading,ETL)过程

5.8 数据挖掘技术(论,架构)

5.8.1 数据挖掘概述

DataMining

第6章 系统配置与性能评价

6.1 计算机层次体系结构

计算机系统是一个硬件和软件的综合体,可以把它看作是按功能划分的多级层次结构。这种结构的划分,有利于正确理解计算机系统的工作过程,明确软件、硬件在系统中的地位和作用。

当流水线中各个流水段的执行时间不完全相等时,吞吐率由执行时间最长的流水段决定。

6.6 多处理机系统

主要目的是实现作业级和任务级代码的并行性。

第7章 企业信息化战略与实施

7.1 企业信息化概述

企业信息化方法:
  1. 业务流程重组方法(BPR)。
    在信息技术迅猛发展的时代,企业必须重新审视生产经营过程,利用信息技术,对企业的组织结构和工作方法进行“彻底的、根本性的”重新设计,以适应当今市场发展和信息社会的需求。现在,业务流程重组已经成为企业信息化的重要方法。
    • 根本性、彻底性、显著性和流程是BPR强调的4个核心内容。
  2. 核心业务应用方法。
    任何一个企业,要想在市场竞争的环境中生存并发展,都必须有自己的核心业务,否则,必然会被市场所淘汰。围绕核心业务应用信息技术是很多企业信息化成功的秘诀。
  3. 信息系统建设方法。
    对大多数企业来说,企业信息化的重点和关键是建设好信息系统。因此,信息系统建设成了最具普遍意义的企业信息化方法。
  4. 主题数据库方法。
    主题数据库就是面向企业业务主题的数据库,也就是面向企业的核心业务的数据库。
  5. 资源管理方法。
    管理好企业的资源是企业管理的永恒主题。信息技术的应用为企业资源管理提供了强大的支持。

7.2 企业信息化规划 (论)

  1. 企业战略规划是用机会和威胁评价现在和未来的环境,用优势和劣势评价企业现状,进而选择和确定企业的总体和长远目标,制定和抉择实现目标的行动方案。
  2. 信息系统战略规划关注的是如何通过信息系统来支撑业务流程的运作,进而实现企业的关键业务目标,其重点在于对信息系统远景、组成架构、各部分逻辑关系进行规划。
  3. 信息技术战略规划通常简称为T战略规划,是在信息系统规划的基础上,对支撑信息系统运行的硬件、软件、支撑环境等进行具体的规划,它更关心技术层面的问题。
    IT战略规划主要包括以下步骤:
    • 业务分析,主要是理解业务部门的现在与未来;
    • 检查当前的IT架构和信息系统,重点是评估其支持业务部门的程度;
    • 识别机会,重点是定义通过信息系统改进业务的机会;
    • 选择方案,主要是寻找和确定一致的机会和方案。
      这些步骤作为一个连续统一体,实际上就是IT战略规划的过程。
  4. 信息资源规划是在以上规划的基础上,为开展具体的信息化建设项目而进行的数据需求分析、信息资源标准建立、信息资源整合工作。
    • 企业战略和信息化战略集成方法 业务与IT整合(BITA)、企业IT架构(EITA)

      7.3 信息系统开发方法 (论)

      确定系统边界->

      7.3.1 结构化方法/生命周期法: 系统模块化

    • 结构化分析(SA):数据流程图(DFD)、数据字典(DD)
    • 结构化设计(SD):概要设计和详细设计,系统结构图
    • 结构化程序设计(SP)

      7.3.2 面向对象方法(OO): 封装继承多态

      面向对象(Obiect-Oriented,OO)方法是当前的主流开发方法,拥有很多不同的分支体系,主要包括OMT(Object Model Technology,对象建模技术)方法、CoadYourdon方法、OOSE (Object-Oriented Software Engineering,面向对象的软件工程)方法和Booch方法等,而OMT、OOSE和Booch已经统一成为统一建模语言(United Model Language,UML)。

    • 面向对象的分析(Object-Oriented Analysis, OOA)
    • 面向对象的设计(Object-Oriented Design, OOD)
    • 面向对象的程序设计(Object-Oriented Programming, OOP)

对象、类、继承、封装、多态、消息

7.3.3 面向服务方法(SO): 操作、服务、业务流程

SAr_DSS基本结构.png

7.8 电子政务

政府对政府(G2G)、政府对企业(G2B)、政府对公众(G2C)、政府对公务员(G2E)。

7.9 业务流程重组(Business Process Reengineering,BPR)

BPR是对企业的业务流程(process)进行根本性(fiundamental)的再思考和彻底性(radical)的再设计,从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量的显著性(dramatic)的成就。其“根本性”、“彻底性”、“显著性”和“流程”就是BPR强调的4个核心内容。

7.10 企业应用集成 (Enterprise Application Integration, EAI) (论)

将多个企业信息系统连接起来,实现无缝集成。可以包括表示集成/界面集成、数据集成、控制集成/API集成和业务流程集成等。

第8章 软件工程

8.2 软件开发方法

8.2.1 形式化方法

8.2.2 逆向工程

  1. 重构
  2. 设计恢复
  3. 再工程
  4. 正向工程

    8.3 软件开发模型 (论)

    • 软件开发生命周期(Software Development Life Cycle, SDLC)
      大体上可分为三种类型。第一种是以软件需求完全确定为前提的瀑布模型;第二种是在软件开发初始阶段只能提供基本需求时采用的迭代式或渐进式开发模型,例如,喷泉模型、螺旋模型、统一开发过程和敏捷方法等,第三种是以形式化开发方法为基础的变换模型。
  5. 瀑布模型 – 将软件开发的过程分为软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段,形如瀑布流水,最终得到软件产品。
  6. 演化模型
  7. 螺旋模型:瀑布模型与演化模型的结合
  8. 喷泉模型
  9. 变换模型
  10. 智能模型
  11. V模型 SAr_瀑布模型.png SAr_螺旋模型.png

    8.3.2 快速应用开发方法(Rapid Application Development, RAD)

强调极短的开发周期。

开发阶段: 业务建模、数据建模、过程建模、应用生成、测试与交互
RAD采用基于构件的开发方法,复用己有的程序结构(如果可能的话)或使用构件, 或者创建可复用的构件(如果需要的话)。在所有情况下,均可以使用CASE工具辅助进行软件构建。如果一个业务能够被模块化使得其中每一个主要功能均可以在不到三个月的时间内完成,那么,它就是RAD的一个候选者。每个主要功能可由一个单独的RAD 组来实现,最后再集成起来,形成一个整体。

8.3.3 统一过程(UP)

RUP(Rational Unified Process)中的软件过程在时间上被分解为4个顺序的阶段,分别是初始阶段基本产品定义、细化阶段(架构)、构建阶段和移交阶段。

8.3.4 敏捷方法

目前,主要的敏捷方法有极限编程(eXtreme Programming,XP)、自适应软件开发(Adaptive Software Development,ASD)、水晶方法(Crystal)、特性驱动开发(Feature Driven Development, FDD)、动态系统开发方法(Dynamic Systems Development Method, DSDM)、测试驱动开发(Test-Driven Development,TDD)、敏捷数据库技术(Agile Database Techniques,AD)和精益软件开发(Lean Software Development)等。

8.4 软件开发环境与工具

8.5 软件过程管理

8.5.1 软件能力成熟度模型(Capability Maturity Model, CMM)

CMM的5个成熟度等级分别为初始级、可重复级、已定义级、已管理级和优化级。

第9章 系统规划

9.1 系统规划概述

系统规划的主要步骤

  1. 对现有系统进行初步调查。根据企业战略和发展目标,从类似企业和本企业内部收集各种信息,站在管理层的高度观察企业的现状,分析现有系统的运行状况。
  2. 分析和确定系统目标。系统目标应包括服务的质量和范围、政策、组织和人员等,它不仅包括信息系统的目标,还要反映整个企业的目标。
  3. 分析子系统的组成和基本功能。自顶向下对系统进行划分,并且详细说明各个子系统应该实现的功能。
  4. 拟定系统的实施方案。可以对子系统的优先级进行设定,以便确定子系统的开发顺序。
  5. 进行系统的可行性(Feasibility)研究,编写可行性研究报告,召开可行性论证会。
  6. 制订系统建设方案。对可行性研究报告中提出的各项技术指标进行分析、比较,落实各项假设的前提条件,制订系统建设方案。

    9.4 可行性研究(论)

  7. 经济可行性
    也称为投资收益分析或成本效益分析,主要评估项目的建设成本、运行成本和项目建成后可能的经济收益。
  8. 技术可行性
    技术可行性也称为技术风险分析,研究的对象是信息系统需要实现的功能和性能, 以及技术能力约束。
    技术、资源、目标
  9. 法律可行性
    法律可行性也称为社会可行性,具有比较广泛的内容,它需要从政策、法律、道德、制度等社会因素来论证信息系统建设的现实性。
  10. 用户使用可行性
    用户使用可行性也称为执行可行性,是从信息系统用户的角度来评估系统的可行性,包括企业的行政管理和工作制度、使用人员的素质和培训要求等,可以细分为管理可行性和运行可行性。

    9.5 成本效益分析技术

    按照成本性态分类,可以分为固定成本、变动成本和混合成本

  11. 固定成本。固定成本是指其总额在一定期间和一定业务量范围内,不受业务量变动的影响而保持固定不变的成本。
  12. 变动成本。变动成本也称为可变成本,是指在一定时期和一定业务量范围内其总额随着业务量的变动而成正比例变动的成本。
  13. 混合成本。混合成本就是混合了固定成本和变动成本的性质的成本。

收益:一次性经济收益、非一次性经济收益

9.5.2 净现值(Net Present Value,NPV)分析

$NPV = \sum (CI - CO)_i / (1 + i)^t$

9.5.3 投资回收期与投资回报率

  1. 静态投资回收期
    如果投资在建设期m年内分期投入,t年的投资为$P_t$,t年的净现金收入为$(CI-CO)_t$, 则能够使下面公式成立的T即为静态投资回收期。 \(\sum_{t=0}^{m} P_t = \sum_{t=0}^T (CI - CO)_t\) 静态动态投资回收期的实用公式为:
    $T$ = 累计净现金流量开始出现正值的年份数-1+上年累计净现金流量|/当年净现金流量
  2. 动态投资回收期
    如果考虑资金的时间价值,则动态投资回收期$T_p$的计算公式,应满足 \(\sum_{t=0}^{T_p} (CI - CO)_t / (1 + i)^t = 0\) 计算动态投资回收期的实用公式为:
    $T_p$=累计折现值开始出现正值的年份数1+|上年累计折现值|/当年折现值
  3. 投资收益率(rate ofreturm on investment)
    又称为投资利润率,是指投资收益占投资成本的比率。投资收益率反映投资的收益能力。其计算公式为:
    投资收益率=投资收益/投资成本×100%

    9.6 系统方案

    可行性分析矩阵

第10章 系统分析

10.2 详细调查

深入了解企业管理工作中信息处理的全部具体情况和存在的具体问题,为提出新系统的逻辑模型提供可靠的依据。
详细调查的主要内容有现有系统的运行环境和状况、组织结构、业务流程、系统功能、数据资源与数据流程、资源情况、约束条件和薄弱环节等。

10.3 现有系统分析

在系统规划阶段,对现有系统进行了初步调查,为提出新系统建议方案及其在技术上是否具有可行性提供原始资料。在系统分析阶段,对现有系统进行了详细调查,为系统逻辑模型的建立提供资料。

10.5 系统功能分析

确定了系统的所有功能后,还需要分析各功能之间的关系和流程,一般使用功能流程图来描述。功能流程图可以检验是否识别出所有的功能,判定系统分析师是否理解了系统功能,也是以后进行系统设计的基础。

10.6 业务流程分析

10.6.1 业务流程分析概述

业务流程分析的方法

SRr_TFD.png

10.6.3 业务活动图示(Business Activity Mapping, BAM)

SRr_BAM.png

10.6.4 业务流程建模

企业业务流程包含三个要素,分别是实体、对象和活动。业务流程发生在实体之间, 它们可以是企业间的、功能间的,也可以是人与人之间的;业务流程的功能就是对对象进行操作,这些对象既可以是物理的(例如,订单等),也可以是逻辑的(例如,信息等); 业务流程涉及管理活动和业务操作活动。
目前,常见的方法有标杆瞄准(Bench marking)、IDEF(Integration DEFinition method,集成定义方法)、Petri网,DEMO(Dynamic Essential Modeling ofOrganization,组织动态本质建模法)和业务流程建模语言等。

  1. 标杆瞄准(Bench marking)
    通过分析和评价,确定出代表最佳实践的经营过程和工作过程,以便合理地确定本企业的业务流程。
  2. 集成定义方法(Integration DEFinition method,IDEF)
    IDEF是一系列建模、分析和仿真方法的统称,从IDEFO到IDEF14(包括IDEF1X 在内)共有16套方法,每套方法都是通过建模程序来获取某个特定类型的信息。它们分别是DEFO(功能建模)、IDEF1(信息建模、DEFlX(数据建模)、IDEF2(仿真建模设计)、IDEF3(过程描述获取)、DEF4(面向对象设计)、IDEFS(本体论描述获取)、IDEF6(设计原理获取)、DEF7(信息系统审计)、DEF8(用户界面建模、DEF9(场景驱动信息系统设计)、DEF10(实施架构建模)、IDEF11(信息制品建模)、IDEF12(组织建模)、IDEF13(三模式映射设计)和IDEF14(网络规划)。
    IDEFO可以用来对业务流程进行建模。
  3. DEMO – 定义了信息系统中行为角色之间的通信方式。
  4. Petri网 – 适用于多种系统的图形化、数学化建模工具。
  5. 业务流程建模语言
    主流的业务流程建模语言标准有业务流程执行语言(Business Process Execution Language,BPEL)、业务流程建模语言(Business Process Modeling Language,BPML)、业务流程建模标注(Business Process Modeling Notation, BPMN)、XPDL (XML Process Definition Language, XML流程定义语言)和UML五种。从语言的表现形式上来说,可以将它们划归为两大类:文本类和图元类。

    10.7 数据与数据流程分析

    数据的动态特性有三种:固定值属性、固定个体变动属性、随机变动属性

    • 固定值属性 – 其值一般不随时间而改变
    • 固定个体变动属性 – 对总体具有相对固定的个体集,对个体其值是变动的。如库存余额。
    • 随机变动属性 – 如月累计销售量。

      10.8 系统需求规格说明

      系统需求规格说明书也称为系统分析报告,或简称为系统说明书,它是系统分析阶段的技术文档,也是系统分析阶段的工作成果。

第11章 软件需求工程

11.1 软件需求概述

质量功能部署(Quality Function Deployment, QFD)

11.2 需求获取 (论)

11.2.1. 用户访谈

是最基本的一种需求获取手段,其形式包括结构化和非结构化两种。结构化是指事先准备好一系列问题,有针对地进行;而非结构化则是只列出一个粗略的想法, 根据访谈的具体情况发挥。最有效的访谈是结合这两种方法进行。用户访谈具有良好的灵活性,有较宽广的应用范围。但是,也存在着许多困难,例如,用户经常较忙,难以安排时间;面谈时信息量大,记录较为困难;沟通需要很多技巧,同时需要系统分析师具有足够的领域知识等。

11.2.2. 问卷调查

与用户访谈相比,问卷调查可以在短时间内,以低廉的代价从大量的回答中收集数据;问卷调查允许回答者匿名填写,大多数用户可能会提供真实信息;问卷调查的结果比较好整理和统计。问卷调查最大的不足就是缺乏灵活性。

11.2.3. 采样

采样是指从种群中系统地选出有代表性的样本集的过程,通过认真研究所选出的样本集,可以从整体上揭示种群的有用信息。通过采样技术,选择部分而不是选择种群的全部,不仅加快了数据收集的过程,而且提高了效率,从而降低了开发成本。另外,采样技术使用了数理统计原理,能减少数据收集的偏差。但是,由于采样技术基于统计学原理,样本规模的确定依赖于期望的可信度和己有的先验识,很大程度上取决于系统分析师的主观因素,对系统分析师个人的经验和能力依赖性很强,要求系统分析师具有较高的水平和丰富的经验。

11.2.4. 情节串联板

11.2.5 联合需求计划(Joint Requirement Planning, JRP) (论)

是一个通过高度组织的群体会议来分析企业内的问题并获取需求的过程,它是联合应用开发(Joint Application Development,JAD)的一部分。

11.2.6 需求记录技术

任务卡片、场景说明、用户故事、Volere白卡。

11.3 需求分析 (论)

11.3.1 需求分析的任务

需求分析的关键在于对问题域的研究与理解。

11.3.2 需求分析的方法

方法主要有SA方法、OOA方法和面向问题域的分析(Problem Domain Oriented Analysis, PDOA)方法。另外, 还有一些形式化方法,例如,VDM(Vienna Design Method)和Z等。需求分析的形式化方法由于实用性不强,一般用在学术研究中。

  1. PDOA面向问题域的分析方法:问题域,解系统
  2. SA结构化分析方法:功能的分解
  3. OOA面向对象分析方法:抽象,信息隐藏
    • 统一建模语言UML
    • 用例模型
    • 分析模型

      11.4 结构化分析方法(SA)

      使用E-R图表示数据模型,用DFD(Data Flow Diagram)图表示功能模型,用状态转换图STD(State Transform Diagram)图表示行为模型。

      11.4.1 数据流图(Data Flow Diagram,DFD)

      11.4.2 状态转换图(State Transform Diagram, STD)

      11.4.3 数据字典

      数据字典中一般有6类条目,分别是数据元素、数据结构、数据流、数据存储、加工逻辑和外部实体。

      11.5 面向对象的分析方法(OOA)

    • 使用用例图、类图、交互图

      11.5.1 统一建模语言

  4. UML的结构 UML的结构包括构造块、规则和公共机制三个部分。
    • (1)构造块。UML有三种基本的构造块,分别是事物(thing)、关系(relationship) 和图(diagram)。事物是UML 的重要组成部分,关系把事物紧密联系在一起,图是多个相互关联的事物的集合。
    • (2)公共机制。公共机制是指达到特定目标的公共UML方法,主要包括规格说明(详细说明)、修饰、公共分类(通用划分)和扩展机制4种。规格说明是事物语义的细节描述,它是模型真正的核心;UML为每个事物设置了一个简单的记号,还可以通过修饰来表达更多的信息;UML包括两组公共分类:类与对象(类表示概念,而对象表示具体的实体)、接口与实现(接口用来定义契约,而实现就是具体的内容):扩展机制包括约束(扩展了UML构造块的语义,允许增加新的规则或修改现有的规则)、构造型(扩展UML的词汇,用于定义新的构造块)和标记值(扩展了UML构造块的特性,允许创建新的特殊信息来扩展事物的规格说明)。
    • (3)规则。规则是构造块如何放在一起的规定,包括为构造块命名:给一个名字以特定含义的语境,即范围;怎样使用或看见名字,即可见性;事物如何正确、一致地相互联系,即完整性;运行或模拟动态模型的含义是什么,即执行。

      UML的视图
      UML对系统架构的定义是系统的组织结构,包括系统分解的组成部分,以及它们的关联性、交互机制和指导原则等提供系统设计的信息。具体来说,就是指以下5个系统视图:

    • (1)逻辑视图。逻辑视图也称为设计视图,它表示了设计模型中在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子集。
    • (2)进程视图。进程视图是可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例,描述了并发与同步结构。
    • (3)实现视图。实现视图对组成基于系统的物理代码的文件和构件进行建模。
    • (4)部署视图。部署视图把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构。
    • (5)用例视图。用例视图是最基本的需求分析模型。
  5. 事物 UML中的事物也称为建模元素,包括结构事物(Structural Things)、行为事物(Behavioral Things,动作事物)、分组事物(GroupingThings)和注释事物(Annotational Things,注解事物)。这些事物是UML模型中最基本的OO构造块。
    • (1)结构事物。结构事物在模型中属于最静态的部分,代表概念上或物理上的元素。UML有7种结构事物,分别是类、接口、协作、用例、活动类、构件和节点。

      类是描述具有相同属性、方法、关系和语义的对象的集合,一个类实现一个或多个接口;
      接口是指类或构件提供特定服务的一组操作的集合,接口描述了类或构件的对外的可见的动作;
      协作定义了交互的操作,是一些角色和其他事物一起工作,提供一些合作的动作,这些动作比事物的总和要大; 用例是描述一系列的动作,产生有价值的结果。在模型中用例通常用来组织行为事物。用例是通过协作来实现的: 活动类的对象有一个或多个进程或线程。活动类和类很相似,只是它的对象代表的事物的行为和其他事物是同时存在的; 构件是物理上或可替换的系统部分,它实现了一个接口集合; 节点是一个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存和具有处理能力。一个构件集合一般来说位于一个节点,但有可能从一个节点转到另一个节点。

    • (2)行为事物:行为事物是UML模型中的动态部分,代表时间和空间上的动作。UML有两种主要的行为事物。第一种是交互(内部活动),交互是由一组对象之间在特定上下文中,为达到特定目的而进行的一系列消息交换而组成的动作。交互中组成动作的对象的每个操作都要详细列出,包括消息、动作次序(消息产生的动作)、连接(对象之间的连接);第二种是状态机,状态机由一系列对象的状态组成。
    • (3)分组事物。分组事物是UML模型中组织的部分,可以把它们看成是个盒子, 模型可以在其中进行分解。UML只有一种分组事物,称为包。包是一种将有组织的元素分组的机制。与构件不同的是,包纯粹是一种概念上的事物,只存在于开发阶段,而构件可以存在于系统运行阶段。
    • (4)注释事物。注释事物是UML模型的解释部分。
  6. 关系 UML用关系把事物结合在一起,主要有下列4种关系。
    • (1)依赖(dependency)。依赖是两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。
    • (2)关联(association)。关联描述一组对象之间连接的结构关系。
    • (3)泛化(generalization)。泛化是一般化和特殊化的关系,描述特殊元素的对象可替换一般元素的对象。
    • (4)实现(realization)。实现是类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。
  7. 图 UML2.0包括14种图。
    • (1)类图(Class Diagram)。类图描述一组类、接口、协作和它们之间的关系。在OO系统的建模中,最常见的图就是类图。类图给出了系统的静态设计视图,活动类的类图给出了系统的静态进程视图。
    • (2)对象图(Object Diagram)。对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视图或静态进程视图,但它们是从真实案例或原型案例的角度建立的。
    • (3)构件图(Component Diagram)。构件图描述一个封装的类和它的接口、端口, 以及由内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。构件图是类图的变体。
    • (4)组合结构图(Composite Structure Diagram)。组合结构图描述结构化类(例如, 构件或类)的内部结构,包括结构化类与系统其余部分的交互点。组合结构图用于画出结构化类的内部内容,
    • (5)用例图(Use Case Diagram)。用例图描述一组用例、参与者及它们之间的关系。用例图给出系统的静态用例视图。这些图在对系统的行为进行组织和建模时是非常重要的。
    • (6)顺序图(Sequence Diagram,序列图)。顺序图是一种交互图(interaction diagram),交互图展现了一种交互,它由一组对象或参与者以及它们之间可能发送的消息构成。交互图专注于系统的动态视图。顺序图是强调消息的时间次序的交互图。
      顺序图的基本元素包括:对象、生命线和消息。
    • (7)通信图(Communication Diagram)。通信图也是一种交互图,它强调收发消息的对象或参与者的结构组织。顺序图和通信图表达了类似的基本概念,但它们所强调的概念不同,顺序图强调的是时序,通信图强调的是对象之间的组织结构(关系)。在UML 1.X版本中,通信图称为协作图(Collaboration Diagram)。
    • (8)定时图(Timing Diagram,计时图)。定时图也是一种交互图,它强调消息跨越不同对象或参与者的实际时间,而不仅仅只是关心消息的相对顺序。
    • (9)状态图(State Diagram)。状态图描述一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。它对于接口、类或协作的行为建模尤为重要, 而且它强调事件导致的对象行为,这非常有助于对反应式系统建模。
    • (10)活动图(Activity Diagram)。活动图将进程或其他计算结构展示为计算内部步步的控制流和数据流。活动图专注于系统的动态视图。它对系统的功能建模和业务流程建模特别重要,并强调对象间的控制流程,
    • (11)部署图(Deployment Diagram)。部署图描述对运行时的处理节点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个节点包含一个或多个部署图。
    • (12)制品图(Artifact Diagram)。制品图描述计算机中一个系统的物理结构。制品包括文件、数据库和类似的物理比特集合。制品图通常与部署图一起使用。制品也给出了它们实现的类和构件,
    • (13)包图(Package Diagram)。包图描述由模型本身分解而成的组织单元,以及它们之间的依赖关系。
    • (14)交互概览图(lnteraction Overview Diagram)。交互概览图是活动图和顺序图的混合物。
静态视图主要包括:用例图、类图、包图。 交互视图主要包括:序列图、协作图。

11.5.2 用例模型

在OOA方法中,构建用例模型一般需要经历4个阶段,分别是识别参与者、合并需求获得用例、细化用例描述和调整用例模型, 其中前三个阶段是必需的。

  1. 用例图的元素
    • (1)参与者。参与者是指存在于系统外部并与系统进行交互的任何事物,既可以是使用系统的用户,也可以是其他外部系统和设备等外部实体。
    • (2)用例。用例是在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。也就是说,用例表示系统所提供的服务,它定义了系统是如何被参与者所使用的,它描述的是参与者为了使用系统所提供的某一完整功能而与系统之间发生的一段对话。
    • (3)通信关联。通信关联表示的是参与者和用例之间的关系,或用例与用例之间的关系。箭头表示在这一关系中哪一方是对话的主动发起者,箭头所指方是对话的被动接受者,箭尾所指方是对话的主动发起者。如果不想强调对话中的主动与被动关系,可以使用不带箭头的关联实线。在用例模型中,信息流不是由通信关联来表示的,该信息流是默认存在的,并且是双向的,它与箭头所指的方向没有关系。
  2. 细化用例描述 用例规约(use case specification)
  3. 调整用例模型 用例之间的关系主要有包含、扩展和泛化。
    • (1)包含关系。当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例。
    • (2)扩展关系。如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。
    • (3)泛化关系。当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。

      11.5.3 分析模型

      类的职责包括两个方面的内容,一个是类所维护的知识,即成员变量或属性;另一个是类能够执行的行为,即成员方法或责任。
      类之间的关系表示

    • 关联关系
    • 依赖关系
    • 泛化关系
    • 共享聚集/聚合关系 – 部分可能同时属于多个整体
    • 组合聚集/组合关系 – 部分只属于一个整体
    • 实现关系

      11.6 需求定义

      软件需求规格说明书(Software Requirement Specification, SRS)

      11.7 需求验证(论)

      因此,有必要对于SRS的正确性进行验证,以确保需求符合良好特征。需求验证也称为需求确认,其活动是为了确定以下几个方面的内容:
      (1) SRS正确地描述了预期的、满足项目干系人需求的系统行为和特征。
      (2) SRS中的软件需求是从系统需求、业务规格和其他来源中正确推导而来的。
      (3)需求是完整的和高质量的。
      (4)需求的表示在所有地方都是一致的。
      (5)需求为继续进行系统设计、实现和测试提供了足够的基础。

      11.7.1 需求评审

  4. 技术评审的类型
    根据IEEE的词汇表,技术评审可以分为以下三种类型:
    (1)评审。评审是指一次正式的会议,在会议上向用户或其他项目干系人介绍一个或一组工作产品,以征求对方的意见和批准。
    (2)检查。检查是一种正式的评估方法,将由非制作者本人的个人或小组详细检查工作产品,以验证是否有错误、是否违反开发标准、是否存在其他问题。
    (3)走查。走查是一个评审过程,由某个开发人员领导一个或多个开发团队成员对他(或她)的工作产品进行检查,由其他成员针对技术、风格、可能的错误、是否违反开发标准和其他问题提出意见。

    11.7.2 需求测试

    需求测试仅仅是基于文本需求进行“概念”上的测试。 它们可以发现SRS中的错误、二义性和遗漏,还可以进行模型分析,以及作为用户验收测试的基础。在正式的系统测试中,还可以将它们细化成测试用例。

    11.8 需求管理(论)

    在CMM中,需求管理是可重复级的一个关键过程域,其目标是为软件需求建立一个基线,供软件开发及其管理使用,使软件计划、产品和活动与软件需求保持一致。从软件需求工程的角度来看,需求管理包括在软件开发过程中维持需求一致性和精确性的所有活动,包括控制需求基线,保持项目计划与需求一致,控制单个需求和需求文档的版本情况,管理需求和联系链之间的联系,或管理单个需求和项目其他可交付物之间的依赖关系,跟踪基线中需求的状态。

    11.8.1 需求变更管理

    11.8.3 需求风险管理

    11.8.4 需求跟踪

    需求跟踪矩阵

第12章 软件架构(Software Architecture)设计

12.1 构件与软件复用(SoftWare Reuse) (论)

可复用性(可重用性)是指系统和(或)其组成部分能在其他系统中重复使用的程度。软件开发的全生命周期都有可复用的价值,包括项目的组织、软件需求、设计、文档、实现、测试方法和测试用例,都是可以被重复利用和借鉴的有效资源。可复用性体现在软件的各个层次,遍用的、可复用性高的软件模块往往已经由操作系统或开发工具提供,例如,通用库、标准构件和模板库等,它们并不需要程序员重新开发。
是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
构件(component) 也称为组件,是一个功能相对独立的具有可复用价值的软件单元。

12.1.1 主流构件标准

目前,主流的构件标准有对象管理集团(Object Management CGroup, OMG)的CORBA、Microsoft的构件对象模型(Component Object Model,COM)和分布式构件对象模型(Distributed Component Object Model, DCOM)和Sun的Java企业Bean (Enterprise JavaBean, EJB)。
目前,已有的构件分类方法大致可以归纳为三大类,关键字分类法、刻面(facet) 分类法和超文本组织方法。

12.1.2 构件获取与管理

遗留工程(Legacy Engineering)

12.3 软件架构建模

分为五种,分别是结构模型、框架模型、动态模型、过程模型和功能模型。

REST提出了如下一些设计概念和准则: 1. 网络上的所有事物都被抽象为资源。 2. 每个资源对应一个唯一的资源标识。 3. 通过通用的连接件接口对资源进行操作。 4. 对资源的各种操作不会改变资源标识。 5. 所有的操作都是无状态的。

12.6 软件架构评估

  1. 基于问卷调查的评估
  2. 基于场景的评估
    • ATAM
    • SAAM
  3. 基于度量的评估

    12.7 软件产品线(Software Product Line)

    软件产品线(Software ProductLine)是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足特定领域的特定需求。软件产品线是一个十分适合专业开发组织的软件开发方法,能有效地提高软件生产率和质量,缩短开发时间,降低总开发成本, 软件产品线主要由两部分组成,分别是核心资源和产品集合。

    补充点

    MVP(Model View Presenter)

    MVP与MVC相比,最在的差异在于层次之类的耦合度不一样。MVP将M与V彻底分离,所有交互均通过P传达,这样,有利于软件构件及架构的重用,也利于修改,有良好的可扩展性。

第13章 系统设计

13.1 系统设计概述

系统设计的主要内容包括概要设计和详细设计。概要设计又称为系统总体结构设计, 它是系统开发过程中很关键的一步,其主要任务是将系统的功能需求分配给软件模块, 确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。在概要设计中,将系统开发的总任务分解成许多个基本的、具体的任务,为每个具体任务选择话当的技术手段和处理方法的过程称为详细设计。

  1. 用户界面设计
    人机交互的“黄金三原则”。另外,在设计用户界面时,还需要保证界面的合理性和独特性, 有效进行组合,注重美观与协调:恰到好处地提供快捷方式,注意资源协调等。
    • 置于用户控制之下
    • 减轻用户的记忆负担
    • 保持界面一致性

      13.2 处理流程设计 (论)

      处理流程设计的任务是设计出系统所有模块以及它们之间的相互关系,并具体设计出每个模块内部的功能和处理过程,为开发人员提供详细的技术资料。
      一般来说,流程包括6个基本要素,分别是输入资源、活动、活动的相互作用(结构)、输出结果、用户和价值
      根据工作流管理联盟(WorkFlow Management Coalition,WFMC)的定义,工作流是一类能够完全或者部分自动执行的业务过程,根据一系列过程规则、文档、信息或任务,在不同的执行者之间传递和执行。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务,一个工作流包括一组活动(或任务)及它们的相互顺序关系,还包括流程和活动的启动和终止条件,以及对每个活动的描述。

    • 工作流参考模型(Workflow Reference Model, WRM)包含6个基本模块,分别是工作流执行服务、工作流引擎、流程定义工具、客户端应用、调用应用和管理监控工具。这6个模块被认为是WFMS最基本的组成部分,WRM同时也包括了这些模块之间的接口标准,包括接口一、接口二、接口三、接口四和接口五。
      处理流程的工具包括三类: 图形工具、表格工具和语言工具。其中常见的图形工具包括程序流程图、IPO图、盒图、问题分析图、判定树,表格工具包括判定表, 语言工具包括过程设计语言等。

      13.2.2 工作流管理系统(WorkFlow Management System,WFMS)

      工作流参考模型

    • (1)工作流执行服务。工作流执行服务是WFMS的核心模块,它的功能包括创建和管理流程定义,创建、管理和执行流程实例。
    • (2)工作流引擎。工作流引擎是为流程实例提供运行环境,并解释执行流程实例的软件模块,即负责流程处理的软件模块。
    • (3)流程定义工具。流程定义工具是管理流程定义的工具,它可以通过图形方式把复杂的流程定义显示出来并加以操作,流程定义工具与工作流执行服务交,一般该模块为设计人员提供图形化的用户界面。

      13.2.3 流程设计工具

    • 程序流程图(Program Flow Diagram,PFD)
    • 问题分析图(Problem Analysis Diagram,PAD)
    • 系统结构图(Structure Chart,SC)

      13.3 结构化设计(Structured Design,SD)

      在SD中,这种功能分解就是将系统划分为模块,模块是组成系统的基本单位,它的特点是可以自由组合、分解和变换,系统中任何一个处理功能都可以看成一个模块。

      13.3.1 模块结构

      模块的扇入和扇出要合理。一个模块的扇出是指该模块直接调用的下级模块的个数:扇出大表示模块的复杂度高,需要控制和协调过多的下级模块。扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块;扇出太小时可以把下级模块进一步分解成若于个子功能模块,或者合并到它的上级模块中去。一个模块的扇入是指直接调用该模块的上级模块的个数:扇入大表示模块的复用程度高。 模块耦合类型

模块内聚类型

13.3.2 系统结构图(Structure Chart, SC)

13.4 面向对象设计

其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。

在系统设计过程中,类可以分为三种类型:实体类、边界类和控制类。
  1. 实体类
    实体类映射需求中的每个实体,实体类保存需要存储在水久存储体中的信息,例如, 在线教育平台系统可以提取出学员类和课程类,它们都属于实体类。实体类通常都是永久性的,它们所具有的属性和关系是长期需要的,有时甚至在系统的整个生存期都需要。
  2. 控制类
    控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名词”或“名词+动词”转化来的名词。
  3. 边界类
    边界类用于封装在用例内、外流动的信息或数据流。边界类位于系统与外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口,以及与其他系统的接口。

13.4.2 对象持久化和数据库

对象关系映射:CMP、Hibernate、iBatis、JDO

13.4.3 面向对象设计的原则

常用的OOD设计原则包括开闭原则、里氏替换原则(父类)、依赖倒置原则(参数)、组合/聚合复用原则、接口隔离原则(功能分离)、最少知识原则(解耦合)

13.5 设计模式 (论)

根据目的和用途不同,设计模式可分为创建型(creational)模式、结构型(structural) 模式和行为型(behavioral)模式三种

第14章 系统实现与测试

14.1 系统实现概述

面向方面的程序设计(Aspect-Oriented Programming, AOP)

14.3 软件测试方法

软件测试方法可分为静态测试和动态测试,其中动态测试一般采用白盒测试和黑盒测试方法。

14.4 测试的类型

可分为单元测试、集成测试、配置项测试、系统测试、验收测试和回归测试等类别。

14.4.4 其它测试类型

  1. 配置项测试
  2. 确认测试
    主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户的参与程度,通常包括以下4种类型:
    • (1)内部确认测试。内部确认测试主要由软件开发组织内部按照SRS进行测试。
    • (2)Alpha测试和Beta测试。对于通用产品型的软件开发而言,Alpha测试是指由用户在开发环境下进行测试。通过Alpha测试以后的产品通常称为Alpha版:Beta测试是指由用户在实际使用环境下进行测试,通过Beta测试的产品通常称为Beta版。一般在通过Beta测试后,才能把产品发布或交付给用户。
    • (3)验收测试。验收测试是指针对SRS,在交付前以用户为主进行的测试。
  3. 回归测试

第15章 系统运行与维护

15.1 遗留系统(Legacy System)的处理策略

  1. 启动评价 – 理解系统
  2. 业务价值评价
  3. 外部环境评价 – 系统的外部技术环境是指硬件、支撑软件和企业IT基础设施的统一体。
  4. 应用软件评价 – 应用软件评价可以分为系统级和部件级。系统级评价把整个系统看作是不可分割的原子,评价时不考虑系统的任何部分;部件级评价关注系统的每个子系统,考虑每个子系统的特征,包括复杂性、数据、文档、外部依赖性、合法性、维护记录、大小和安全性等指标。
  5. 分析评价结果 – 评价活动将产生硬件、支撑软件、企业的基础设施和应用软件的特征值矩阵,这些特征值体现了遗留系统当前的技术因素,其加权平均值代表了系统的技术水平。

    15.1.2 演化策略 (论)

  6. 淘汰策略: 低水平低价值
  7. 继承策略: 低水平高价值 – 需兼容遗留系统的功能模型和数据模型
  8. 改造策略: 高水平高价值 – 改造包括系统功能的增强和数据模型的改造两个方面
  9. 集成策略: 高水平低价值 遗留系统策略

    15.2 系统转换与交接

    新旧系统转换:直接转换策略、并行转换策略、分段转换策略

    15.2.2 数据转换与迁移

    程序大致可以分为抽取、转换与装载三个过程。数据抽取、转换是根据新旧系统数据库的映射关系进行的,转换步骤一般还要包含数据清洗的过程,数据清洗主要是针对源数据库中,对出现二义性、重复、不完整、违反业务或逻辑规则等问题的数据进行相应的清洗操作。

嵌入式系统分析与设计

多任务调试算法

第18章 系统安全性分析与设计

18.1 系统安全

  1. 系统安全的分类 主要包括实体安全、信息安全、运行安全和人员安全等几个部分。
  2. 系统安全体系结构 可以将安全防范体系的层次划分为物理层安全、系统层安全、网络层安全、应用层安全和安全管理。

    18.2 数据安全与

    18.2.1 数据加密技术

  3. 加密
    • DES – 是一种迭代的分组密码,明文和密文都是64位,使用一个56位的密钥以及附加的8位奇偶校验位。攻击DES的主要技术是穷举法,由于DES的密钥长度较短,为了提高安全性,就出现了使用112位密钥对数据进行三次加密的算法(3DES),即用两个56位的密钥Kl和K2,发送方用K1加密,K2解密,再使用K1加密;接收方则使用K1解密,K2加密,再使用K1解密,其效果相当于将密钥长度加倍。
    • IDEA是在DES的基础上发展起来的,类似于3DES。IDEA的明文和密文都是64 位,密钥长度为128位。
  4. 加密
    • RSA – RSA算法的密钥长度为512位。

      18.2.2 认证(authentication)技术

    • (1)消息摘要算法(Message Digest algorithm5,MD5)
    • (2)安全散列算法。安全散列算法(Secure Hash Algorithm, SHA)能计算出一个数字信息所对应的长度固定的字符串(消息摘要,它对长度不超过264位的消息产生160 位的消息摘要。
  5. 数字证书 通常包括版本号、序列号(CA下发的每个证书的序列号都是唯一的)、签名算法标识符、发行者名称、有效期、主体名称、主体的公钥信息、发行者唯一识别符、主体唯一识别符、扩充域、发行者签名(就是CA用自己的私钥对上述数据进行数字签名的结果,也可以理解为是CA中心对用户证书的签名)等信息。
    • 密钥管理基础设施(Key Management Infrastructure,KMI)
    • 公钥基础设施(Public Key Infrastructure,PKI)

      18.3

      18.3.1 防火墙

一般可以分为包过滤型防火墙、电路级网关型防火墙、应用网关型防火墙、代理服务型防火墙、状态检测型防火墙和自适应代理型防火墙。

安全协议

主要包括IPSec、SSL、PGP和安全套接字层上的超文本传输协议(Hypertext Transfer Protocol over Secure Socket Layer, HTTPS)等。

容灾与恢复

(论)

18.6.3 业务持续性规划(Business Continuity Planning, BCP)

18.7 安全管理措施

第19章 系统可靠性分析与设计 (论)

19.1 系统可靠性概述

系统可靠性指标

第20章 项目管理 (论)

20.1 项目开发计划

20.2 范围管理

20.3 进度管理

  1. 前导图法(Precedence Diagramming Method,PDM)
    也称为单代号网络图法(Active on the Node, AON),它用方格或矩形(节点)表示活动,用箭线表示依赖关系。在PDM 中,每项活动都有唯一的活动号,注明了预计工期。每个节点的活动有最早开始时间(Early Start,ES)、最迟开始时间(LateStart,LS)、最早结束时间(Early Finish,EF) 和最迟结束时间(Late Finish, LF)。
  2. 箭线图法(Arow Diagramming Method,ADM)
    也称为双代号网络图法(ActiveOn the Arow,AOA),它用节点表示事件,用箭线表示活动,并在节点处将其连接起来, 以表示依赖关系。在ADM中,给每个事件而不是每项活动指定一个唯一的号码。活动的开始(箭尾)事件叫做该活动的紧前事件(Precede Event),活动的结束(箭头)事件叫做该活动的紧后事件(Successor Event)。

    20.3.3 活动历时估算

    德尔菲(Delphi)法:$E_i = \frac{a_i + 4 m_i + b_i}{6}$

    20.4 成本管理

    20.5.3 变更控制

    20.6 质量管理 (论)

    20.6.1 软件质量模型

    SAr_SoftwarePolicyModel SAr_PolicyModel

    20.8 风险管理 (论)

    项目风险管理的基本过程包括风险管理计划编制、风险识别、风险定性分析、风险定量分析、风险应对计划编制和风险监控。

知识产权与法律法规

著作权法

多媒体基础知识

压缩编码技术

补充点

域名查询


案例分析

MDA(Model Driven Archtecture)

可移植性

在MDA中,先会建立平台无关模型(PIM),然后转换为平台相关模型(PSM),1个PIM可转换成多个PSM,所以要把一个软件移植到另一个平台时,只需要将平台无关模型转换成另一个平台的相关模型即可。所以可移植性很强。

平台互操作性

在MDA中,整个开发过程都是模型驱动的,所以标准化程度很高,这样为平台的互操作带来了非常大的帮助。

文档和代码的一致性

在MDA中,代码是由模型生成的,所以具有天然的一致性。这一点其它方法无法比拟。

问题分析

问题分析阶段的四项主要任务

包括:
1)研究问题领域
2)分析问题和机会
3)制定系统改进目标
4)修改项目计划

系统约束条件

可以分为四类 1.进度
2.成本
3.功能/技术约束
4.质量/政策标准约束

武器装备产品

企业要承担武器装备产品生产任务,需获得军工四证,包括:

  1. 武器装备科研生产单位保密资质认证;
  2. 武器装备科研生产许可证认证;
  3. 装备承制单位资格审查(装备承制单位资格名录认证 和 武器装备质量管理体系认证);

    安全关键系统

    是指系统功能一旦失效将引起生命、财产等重大损失以及环境可能遭到严重破坏的系统。如战斗机的航空电子系统,火控雷达系统等。

微服务

一个微服务中应该包含的内容有:资源、对资源的操作、API集合。 微服务的优势:

  1. 解决了复杂性问题。它把庞大的单一模块应用分解为一系列的服务,同时保持总体功能不变。
  2. 让每个服务能够独立开发,开发者能够自由选择可行的技术,让服务来决定API 约定。
  3. 每个微服务都能独立配置,开发者不必协调对于本地服务配置上的变化,这种变化一旦测试完成就被配置了。
  4. 让每个服务都可以独立调整,你可以给每个服务配置正好满足容量和可用性限制的实例数。

微服务架构带来的挑战:

  1. 并非所有的系统都能转成微服务。例如一些数据库层的底层操作是不推荐服务化的。
  2. 部署较以往架构更加复杂:系统由众多微服务搭建,每个微服务需要单独部署,从而增加部署的复杂度,容器技术能够解决这一问题。
  3. 性能问题:由于微服务注重独立性,互相通信时只能通过标准接口,可能产生延迟或调用出错。例如一个服务需要访问另一个服务的数据,只能通过服务间接口来进行数据传输,如果是频繁访问,则可能带来较大的延迟。
  4. 数据一致性问题:作为分布式部署的微服务,在保持数据一致性方面需要比传统架构更加困难。

活动图与流程图的区别

活动图和流程图的主要区别有以下三点: (1)活动图是面向对象的,而流程图是面向过程的。 (2)活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。 (3)活动图能够表示并发活动的情形,而流程图不能。


补充

Crc循环冗余校验

寄存器 (2017.15) 数据库分解无损性和函数依赖性 (2017.42) 遗产系统 (2016.36)

在CPU中至少要有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)。这些寄存器用来暂存一个计算机字,其数目可以根据需要进行扩充。

  1. 数据寄存器
    数据寄存器(Data Register,DR)又称数据缓冲寄存器,其主要功能是作为CPU和主存、外设之间信息传输的中转站,用以弥补CPU和主存、外设之间操作速度上的差异。

数据寄存器用来暂时存放由主存储器读出的一条指令或一个数据字;反之,当向主存存入一条指令或一个数据字时,也将它们暂时存放在数据寄存器中。

数据寄存器的作用是:
1. 作为CPU和主存、外围设备之间信息传送的中转站;
1. 弥补CPU和主存、外围设备之间在操作速度上的差异;
1. 在单累加器结构的运算器中,数据寄存器还可兼作操作数寄存器。

  1. 指令寄存器
    指令寄存器(Instruction Register,IR)用来保存当前正在执行的一条指令。
    当执行一条指令时,首先把该指令从主存读取到数据寄存器中,然后再传送至指令寄存器。

指令包括操作码和地址码两个字段,为了执行指令,必须对操作码进行测试,识别出所要求的操作,指令译码器(Instruction Decoder,ID)就是完成这项工作的。指令译码器对指令寄存器的操作码部分进行译码,以产生指令所要求操作的控制电位,并将其送到微操作控制线路上,在时序部件定时信号的作用下,产生具体的操作控制信号。

指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码,即可向操作控制器发出具体操作的特定信号。

  1. 程序计数器
    程序计数器(Program Counter,PC)用来指出下一条指令在主存储器中的地址。

在程序执行之前,首先必须将程序的首地址,即程序第一条指令所在主存单元的地址送入PC,因此PC的内容即是从主存提取的第一条指令的地址。

当执行指令时,CPU能自动递增PC的内容,使其始终保存将要执行的下一条指令的主存地址,为取下一条指令做好准备。若为单字长指令,则(PC)+1àPC,若为双字长指令,则(PC)+2àPC,以此类推。

但是,当遇到转移指令时,下一条指令的地址将由转移指令的地址码字段来指定,而不是像通常的那样通过顺序递增PC的内容来取得。

因此,程序计数器的结构应当是具有寄存信息和计数两种功能的结构。

  1. 地址寄存器

地址寄存器(Address Register,AR)用来保存CPU当前所访问的主存单元的地址。

由于在主存和CPU之间存在操作速度上的差异,所以必须使用地址寄存器来暂时保存主存的地址信息,直到主存的存取操作完成为止。

当CPU和主存进行信息交换,即CPU向主存存入数据/指令或者从主存读出数据/指令时,都要使用地址寄存器和数据寄存器。

如果我们把外围设备与主存单元进行统一编址,那么,当CPU和外围设备交换信息时,我们同样要使用地址寄存器和数据寄存器。

  1. 累加寄存器
    累加寄存器通常简称累加器(Accumulator,AC),是一个通用寄存器。

累加器的功能是:当运算器的算术逻辑单元ALU执行算术或逻辑运算时,为ALU提供一个工作区,可以为ALU暂时保存一个操作数或运算结果。

显然,运算器中至少要有一个累加寄存器。

  1. 程序状态字寄存器
    程序状态字(Program Status Word,PSW)用来表征当前运算的状态及程序的工作方式。

程序状态字寄存器用来保存由算术/逻辑指令运行或测试的结果所建立起来的各种条件码内容,如运算结果进/借位标志(C)、运算结果溢出标志(O)、运算结果为零标志(Z)、运算结果为负标志(N)、运算结果符号标志(S)等,这些标志位通常用1位触发器来保存。

除此之外,程序状态字寄存器还用来保存中断和系统工作状态等信息,以便CPU和系统及时了解机器运行状态和程序运行状态。

因此,程序状态字寄存器是一个保存各种状态条件标志的寄存器。


论文主题

论文结构
  1. 摘要 (400)
  1. 项目介绍和主题介绍 (500-600)
  1. 具体方法 (1300-1800)
  1. 总结:经验、感悟 (300-500)