进程资源图理解与化简

一 了解进程资源图

二 化简资源分配图


方法步骤
  • 第一步:先看系统还剩下多少资源没分配,再看有哪些进程是不阻塞(“不阻塞”即:系统有足够的空闲资源分配给它)的
  • 第二步:把不阻塞的进程的所有边都去掉,形成一个孤立的点,再把系统分配给这个进程的资源回收回来
  • 第三步:看剩下的进程有哪些是不阻塞的,然后又把它们逐个变成孤立的点。
  • 第四步:最后,所有的资源和进程都变成孤立的点。这样的图就叫做“可完全简化”。

如果一个图可完全简化,则不会产生死锁;如果一个图不可完全简化(即:图中还有“边”存在),则会产生死锁。这就是“死锁定理”。 

实例

解析:

R1有两个资源,一个分配给了P1,一个分配给了P3,此时P2申请R1的资源,因为R1此时没有可用资源,P2堵塞。

R2有三个资源,已经给P1,P2,P3,各自分配了一个资源,而P1此时又再次申请资源R2,P1堵塞

R3有两个资源,已经分配给P2一个,P2申请一个资源,分配给它,所以P3是非阻塞结点

化简的话,看从没有阻塞的结点开始,删去P3周围所有的边,使其成为一个孤立的点,然后看剩下的资源按上述步骤再次进行分配,若到最后只剩下一群孤立的点,则说明该资源图是可以化简的。

参考链接


进程资源图理解与化简

决策表

  • 概念

因果图、决策表是一种充分考虑系统之间的输入组合、约束以及输出因果关系的用例设计方法。

  • 适用范围

适合:决策表特别适合于针对不同逻辑条件的组合,测试对象需要执行不同操作的场景。

不适合:

  1. 输入和输出不明确,或输入与输出的因果关系不明确的情况
  2. 被分析的特点和功能点过于复杂,输入项目很多的情况下。输入项过多,会造成决策表非常庞大,没有工具辅助的情况下,难以操作。
  3. 系统输入之间相互约束少,不需要做大范围的组合测试时,不宜用本工程方法,不然会产生大量用例冗余。
  4. 系统输入之间存在顺序先后的可变性。
    例如,两个输入之间可以交换顺序,且交换顺序后,他们的输出是不一样的。
    判定表的输入是无法排序的。
  • 决策表的组成

条件桩: 列出系统的所有输入,通常认为列出的输入次序无关紧要

动作桩: 列出系统所有可能执行的操作,这些执行操作没有顺序约束

条件项: 列出输入项的各种取值

动作项: 列出输入项的各种取值情况下应该采取的动作

  • 决策表的步骤
  1. 列出所有的条件桩和动作桩
  2. 确定规则的数目
  3. 填入条件项和动作项得到初始的决策表
  4. 简化相似的规则,得到优化的决策表
  5. 每列规则,设计一个测试用例

【示例

  需求:

公司有如下规定:

  • 中国去欧美的航线所有座位都有食物供应。每个座位都可以播放电影
  • 中国去非欧美的国外航线都有食物供应,只有商务仓可以播放电影
  • 中国国内的航班的商务仓有食物供应,但是不可以播放电影
  • 中国国内的航班的经济仓除非飞行时间大于2小时就有食物供应,但是不可以播放电影

1. 列出所有的条件桩和动作桩

等价类:

    A1={航线为国外欧美航线}

    A2={航线为国外非欧美航线}

    A3={航线为国内航线}

    P1={舱位为经济舱}

    P2={舱位为商务舱}

    T1={飞行时间大于2小时}

    T2={飞行时间不大于2小时}

条件桩

    C1:航线为{A1,A2,A3}之一

    C2:舱位为{P1,P2}之一

    C3:飞行时间为{T1,T2}之一

动作桩

    A1:食物供应

    A2:电影播放

2. 确定规则的数目

3x2x2=12

3. 填入条件项和动作项得到初始的决策表

  规则 1 2 3 4 5 6 7 8 9 10 11 12
条件桩 C1航线 A1 A1 A1 A1 A2 A2 A2 A2 A3 A3 A3 A3
C2类型 P1 P1 P2 P2 P1 P1 P2 P2 P1 P1 P2 P2
C3时间 T1 T2 T1 T2 T1 T2 T1 T2 T1 T2 T1 T2
动作桩 A1食物  
A2电影            

4. 简化相似的规则,得到优化的决策表

  1 2 3 4 5
条件桩 C1航线 A1 A2 A2 A3 A3
C2类型 - P1 P2 P1 P2
C3时间 - - - T1 -
动作桩 A1食物
A2电影      

5. 每列规则,设计一个测试用例

用例编号 输入 预期输出
1 中国-欧美航线/所有座位/全时 提供食物/播放电影
2 非中国-欧美国外航线/经济舱/全时 提供食物
3 非中国-欧美国外航线/商务舱/全时 提供食物/播放电影
4 国内航线/经济舱/大于2小时 提供食物
5 国内航线/商务舱/全时  

参考链接


决策表

系统架构设计师——历年论文题目2009年-2020年

年份 论文题目
2020年下 论数据分片技术及其应用
论云原生架构及其应用
论软件测试中缺陷管理及其应用
论企业集成架构设计及应用
2019年下 论软件设计方法
论软件架构评估
论数据湖
论负载均衡算法应用
2018年下 论软件开发过程 RUP 及其应用
论软件体系结构的演化
论面向服务架构设计及其应用
论 NoSQL数据库技术及其应用
2017年下 论软件系统建模方法及其应用
论软件架构风格
论无服务器架构及其应用
论软件质量保证及其应用
2016年下 论软件系统架构评估
论软件设计模式及其应用
论数据访问层设计技术及其应用
论微服务架构及其应用
2015年下 论应用服务器基础软件
论软件系统架构风格
论面向服务的架构及其应用
论企业集成平台的技术与应用
2014年下 论软件需求管理
论非功能性需求对企业应用架构设计的影响
论软件的可靠性设计
论网络安全体系设计
2013年下 论软件架构建模技术与应用
论企业应用系统的分层架构风格
论软件可靠性设计技术的应用
论分布式存储系统架构设计
2012年下 论企业信息化规划的实施与应用
论决策支持系统的开发与应用
论企业应用系统的数据持久层架构设计
论基于架构的软件设计方法及应用
2011年下 论模型驱动架构在系统开发中的应用
论企业集成平台的架构设计
论企业架构管理与应用
论软件需求获取技术及应用
2010年下 论软件的静态演化和动态演化及其应用
论数据挖掘技术的应用
论大规模分布式系统缓存设计策略
论软件可靠性评价
2009年下 论基于 DSSA 的软件架构设计与应用
论信息系统建模方法
论基于 REST 服务的 Web 应用系统设计
论软件可靠性设计与应用

2015年下
论软件系统架构风格 系统架构风格(System Architecture Style)是描述某一特定应用领域中系统组织方式的惯用模式.架构风格定义了一个词汇表和一组约束,词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的口软件系统架构风格反映了领域中众多软件系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。软件系统架构风格的共有部分可以使得不同系统共享同一个实现代码,系统能够按照常用的、规范化的方式来组织,便于不同设计者很容易地理解系统架构。请以“软件系统架构风格”论题,依次从以下三个方面进行论述:
1.概要叙述你参与分析和开发的软件系统开发项目以及你所担任的主要工作。
2.分析软件系统开发中常用的软件系统架构风格有哪些?详细阐述每种风格的具体含义。
3.详细说明在你所参与的软件系统开发项目中,采用了哪种软件系统架构风格,具体实施效果如何。

2016年下
试题一 论软件系统架构评估
对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难。对一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,在系统被构建之前分析现有系统架构对于系统质量的影响,提出系统架构的改进方案。架构评估是软件开发过程中的重要环节。
请围绕“论软件系统架构评估”论题,依次从以下三个方面进行论述。
1.概要叙述你所参与架构评估的软件系统,以及在评估过程中所担任的主要工作。
2.分析软件系统架构评估中所普遍关注的质量属性有哪些?详细阐述每种质量属性的具体含义。
3.详细说明你所参与的软件系统架构评估中,采用了哪种评估方法,具体实旅过程和效果如何。

2015年下
企业集成平台是一个支持复杂信息环境下信息系统开发、集成和协同运行的软件支撑环境。它基于各种企业经营业务的信息特征,在异构分布环境(操作系统、网络、数据库)下为应用提供一致的信息访问和交互手段,对其上运行的应用进行管理,为应用提供服务,并支持企业信息环境下各特定领域的应用系统的集成。企业集成平台的核心是企业集成架构,包括信息、过程、应用集成的架构。
请以“企业集成平台的技术与应用”为题,依次从以下三个方面进行论述:
1.概要叙述你参与管理和开发的企业集成平台相关的软件项目以及你在其中所担任的主要工作。
2.简要说明企业集成平台的基本功能及企业集成的关键技术,并结合项目实际情况,阐述该项目所选择的关键技术及其原因。
3.结合你具体参与管理和开发的实际项目,举例说明所采用的企业集成架构设计技术的具体实施方式及过程,并详细分析其实现效果。

参考链接


系统架构设计师——历年论文题目2009年-2020年

元组演算

定义:在元组关系演算系统中,称{t|Q(t)}为元组演算表达式,其中t是元组变量,Q(t)是元组关系演算公式;它由原子公式和运算符组成。

我们接下来看看原子公式的三类:

1、R(t)R是关系名,t是元组变量,R(t)是元组变量,R(t)表示tR中的元组,一般用{t|R(t)}来表示

2、t[i]Θu[j]: tu是元组变量,Θ是算术比较运算符。t[i]Θu[j]表示命题“元组t的第i个分量与元组u的第j个分量满足比较关系Θ

3、t[i]Θc或者cΘt[i]这里的c是常量,该公式表示“t的第i个分量与常数c满足比较关系Θ”举个很简单的例子:t[4]=3表示t的第4个分量等于3

继续阅读元组演算