记录督促自己学习历程5

第十章

第十章就要到了第二部分,第二部分引言叫可依赖性和信息安全性,当前所面临的软件工程最为严重的挑战是确保能信任这些系统,必须保证在需要用时是可以用的,并且能够按照预期的那样运行,必须是 安全的,计算机或者数据不会受到软件威胁,意味着系统的可以来下和信息安全性问题比系统的功能希捷更为重要。
关于第十章的话主要涵盖社会技术系统,很多信息安全性和可依赖型失败来源是人和机构。第十章叫做社会技术系统,主要是介绍社会技术系统的概念,另外需要从系统角度考虑信息安全性和可靠性。还介绍系统整体特性的概念,比如,可靠性、性能、安全性和信息安全性,并且需要了解,软件可靠性和信息安全性不能孤立考虑的原因以及如何受到系统因素的影响。

在计算机系统中,软件硬件相互依赖,这就是系统的基本特性就是系统,系统的一些特性 只有在各部分集成并在一起运行时才能展现出来,所以软件工程不是一个孤立的活动,而是一个一般系统工程过程中的固有组成部分,下面举例一个气象站的说明,需要关注社会技术系统栈包括:1设备层、操作系统层、应用层、业务过程层、机构层和社会层。原则上大多数交互时在相邻的层进行的,每一层对上一层隐藏下一层的细节,实际并不总是这样,有时也存在层次之间的意外交互,需要注意的是:顾全整个系统,而不是简单地孤立的软件角度来看,这对于考虑软件的信息安全性和可靠性是非常必要的。所以当设计一个对信息安全性和可靠性有要求的软件时,必须从系统的全局观察,真正的问题往往是系统的问题,而不是软件失败,需要检查软件和直接环境的交互方式来确保1软件失败尽可能包含在系统栈的封闭层中,不会对相邻层的操作产生影响,软件失败不应该导致系统失败,2理解系统栈的非软件层错误和失败是如何影响软件的同时考虑怎样将监测点置入软件中,从而协助检测失败,以及如何提供对失败恢复的支持。下面举了两个例子很有代表性,能帮助理解,我已经做了重点记号。

系统在一定程度上,系统抄书了对它各个部分的堆砌,这就是所谓的复杂系统,我是这么理解的。

对于抽象系统,有一个定义:系统是一组相互关联、不同种类、为实现目标协同工作的组件集合,这个一般性的定义适合绝大部分系统,所有复杂系统都有一个特征,系统组件的属性和行为会不可避免的交织在一起,另外,复杂系统通常具有层次结构并且包含其他系统,被包含的系统称为子系统,包含软件的系统可以分文两类,1基于计算机的纯技术凶,2社会技术系统,关于社会技术系统的定义不是特别能够理解目前,所以着重要看一下这个内容并做下重点记号,保证下一次看书能看到,社会技术系统包括一个或多个技术系统,但关键是,系统本身还包括了解系统目的人员,社会技术系统把操作流程和人员定义在系统内的一部分,受制于机构的政策和规则,而且受到外部约束的影响,这些外部因素例如国家法律和调节政策。下面举了一个社会技术出版系统。但是,就在我完成这个笔记的时候,我依然对于社会技术系统本身的概念有一定的模糊。

影响开发社会技术系统的系统环境机构因素包括,1过程变更2工作变更3机构变更,另外社会技术系统有三个十分重要的特性1系统整体特性,信息安全和可靠性属于整体特性,2系统的非确定性,3系统支持机构目标的程度和范围不仅仅依赖于系统本身,还依赖于这些目标的稳定性,机构目标之间的关系和冲突,以及机构中人员是如何解释这些目标的。

系统中组件之间的复杂关系意味着系统不只是它的各部分的简单的综合,它还产生一些系统的整体特性,这些总体特性不能归于任何一个专门的组件部分,只有从系统整体上看时这些特性才浮现出来。总体特性有两种类型1功能特性2非功能特性,例如可靠性、性能、安全性和信息安全。

值得注意的是,我目前关于上一章的非功能性还不是特别熟悉,这里又提到一个概念,需要重复记忆,打一个着重符号。这个地方很关键,不能有概念搞混淆了。

在一个社会技术系统中,要从1硬件可靠性2软件可靠性3操作员可靠性来考虑可靠性。
确定性系统是一种完全可预测的系统,如果忽略时序问题,一个在完全可靠硬件上运行的软件系统,对于一串输入序列,总会产生相同的输出序列,不可能存在完全可靠的硬件,但是硬件通常足够可靠,可以认为它是确定的。这里需要注意是,我不明白这里讲的时序是什么意思,打一个问号,我理解为时间顺序,这个和硬件内存条所描述的时序的不是一个东西,需要注意一下。
在另一方面。人员是不确定的,社会技术系统是非确定的,一方面因为它包含人的因素,另一方面在这些系统硬件软件和数据变更频率太高。

通常,开发复杂社会技术系统是来解决一些“极复杂问题”,指这类问题很复杂,具有非常多的关联实体,并且无法给出问题的确切描述,不同信息持有者会从不同的角度来看待这个问题,没有人对此有全面的认识,只有当解决办法有了之后,这里问题的本质才暴露出来。定义系统成功的标准很难,对于是否成功的判断一般不是参照采购和开发系统的最初理由的,而是看是否在部署时是有效,由于业务环节变化很快,业务目标也会在系统开发过程中发生重大变化,信息安全性和可靠性的属性本质有时使得确定系统是否成功变得更加困难。

系统工程包括采购、描述、设计、实现、有效性验证、部署、运行和维护社会技术系统系列活动,系统工程师不进要关心系统的软件,还要注意硬件以及系统与用户和周围环境的交互,这里又提到社会技术性系统,我在查阅了一些网路课件后了解,社会技术性系统基本上是添加了参与人员的一种计算机系统。系统工程的最初阶段是系统采购,这里面影响采购的要素主要是1机构中其他系统的情况2遵守外部规则的需要3外部竞争4业务重组5可用的预算,社会技术系统中的软件和硬件通常由另外一些机构开发,而非采购系统的机构本身开发,这里涉及到之前章节谈到了购买现成系统。采购定制系统的决定意味着要为了解和明确信息安全性和可靠性需求花费很大的精力。
系统开发过程的目标是开发或获得系统的所有组件并将其集成在一起从而形成最终的系统,在系统工程中使用计划驱动过程的原因是系统的不同部分在同时开发,系统开发中有几个基本活动1需求开发2系统设计3子系统过程4系统集成5系统测试6系统部署,这里又出现了螺旋图,对于螺旋图我目前还不是很理解,需要加深印象。螺旋过程反应了需求影响设计决策,反过来设计也会作用于需求,不同的子系统通常是并行开发的。
这里又一句话:随着越来越多的子系统是由集成COTS硬件和软件组件来构成,实现和集成之间的区别越来越模糊,这里的COTS 需要记忆一下概念,“COTS即Commercial Off-The-Shelf 翻译为“商用现成品或技术”或者“商用货架产品”,指可以采购到的具有开放式标准定义的接口的软件或硬件产品,可以节省成本和时间。”

系统运行,我们要讲运行过程设计得灵活且可调整,新系统和现有系统共同工作可能会存在问题,主要有1人为错误,认为错误应该以系统的方法,通过改进系统规避风险,这里举例非常形象,注意着重符号!2系统进化,大型和复杂的系统都会有一个非常长的生存期,必须改进原先系统需求中的错误进而满足出现的新需求,系统为使用环境变化而做出的进化是系统运行过程的一环,系统进化包括重新进入开发流程做出改变,系统软硬件的扩展以及运行过程。

下面有一个重点,这里提到软件进化和系统进化,之前我差点搞混淆这两个概念,这里需要着重记忆和区分,切记!,系统进化是很昂贵的主要是1必须从业务和技术的角度对提议的变更做仔细的分析,2因为子系统都不是孤立存在的,对一个子系统的变更可能造成其他子系统的性能或行为的负面影响,3最初设计决策的理由市场未被记录,4挡系统运行相当长时间后,其结构被修改得复杂而凌乱。
从可靠性和信息安全性的角度来说,系统的变更通常会导致问题和缺陷。另外每一章节的要点和课后习题是精华,但是也是最难的,需要重复看!!

十一章

这一章主要是讲了软件的可依赖性和信息安全性,但是这里我有一个问题,就是可靠性和可依赖性有什么区别,这个看后面学习能不能解答。留作问题,打个记号。另外,还需要理解为什么一个软件系统中可以俩下和信息安全性通常比功能性更重要,了解可依赖性的四个方面分别是可用性、可靠性、安全性和信息安全性,了解信息安全性和可依赖性问题时用到的专门术语,理解想要得到一个保密可靠的软甲你需要在软件开发阶段避免错误,在系统使用中检测和排除错误,还要限制由于系统失败造成的损失。

因为软件密集型系统对于政府公司和个人都很重要,所以光法能使用的软件必须是可信赖的,需要其可用并没有副作用,可依赖性,这里给出了答案,可依赖性是保罗了可用性和可靠性以及安全性和信息安全性,交织在一起,意思就是可依赖性是包含可靠性的,随着学习的深入,很多问题可以在之后的学习之后得到解决同时可以提高自信心,可依赖性比功能更重要主要是因为1系统失败影响到的人数众多,2如果系统是不可靠的不安全的或者是不保密的,那用户会拒绝使用它,3系统失败的代价可能是巨大的,4靠不住的系统导致信息六十,当设计一个可依赖性系统的时候需要考虑1硬件失败,2软件失败3操作失败,这些失败可能是相互关联的,硬件组件的失败可能需要 系统操作是不得不处理不可预料的情况,因而增加了额外的负担,对于可靠的软件募集恶性系统的设计者来说尤其重要的是要有系统观,不能只注意系统的某个局部。

计算机系统的可依赖性是衡量其可信赖度的性能指标,可信赖度表现为用户 对系统的信任程度,可信赖和有用不是一回事,可依赖性包含一些性质1可维修性2可维护性3生存能力4容错,需要注意是容错主要说系统不断迭代,而维修指的是处理系统失败,为开发一个可靠软件,需要做到1避免在软件描述和开发过程中引入意外的错误,2设计检验和有效性验证过程,使之能够有效地发现影响系统可靠性的参与错误,3设计保护机制防范能够损坏系统的可用性和信息安全性的外部攻击4正确地配置部署的系统和它的支持软件,以提供良好的运行环境。

容错的需求意味着可靠的系统必须包含冗余代码用以监视系统本身,探测错误状态,并且在失败发生之前从错误中恢复,但是因为额外的设计、实现和有效性验证成本,加强系统可依赖性会大大增加开发成本。

系统的可用性和可靠性是两个关系紧密的可依赖性指标,这两个属性都可以用概率来表达,系统可用性是系统在请求发生时响应并提供这些服务给客户的可能性,可靠性和可用性是紧密联系的但是有时候一个比另外一个更重要,这里举例的例子很形象,可以做着重关注一下,画一个重点符号。
可靠性是系统在一特定时间特定环境中为一专门目的而做的无失败操作的可能性,可用性是系统在一个时刻是可操作性的和能执行请求服务的可能性,另外可靠性的度量因具体系统来分析,可靠性的严格定义是与系统描述的实现相关的,如果系统的行为是与描述中定义的严格一致,则认为系统行为是可靠的,这个很重要,定义特别重要!!!
可用性和可靠性是有联系的,因为系统失败可能导致系统的损坏,系统的可靠性和可用性很大程度上是由系统失败引起的,这些失败具体的错误的后果或恰相关项目系统的失败。下面举例的映射图示需要重点看一下,下次一定得看。
软件的缺陷不总是导致系统错误,并且系统错误不会必然导致系统失败,主要是因为1不是程序中所有的代码都会被执行,包含缺陷的代码可能因软件的使用方式等原因永远不会被执行2错误是短暂的,一个状态变量可能由于缺陷代码的执行产生一个不正确的值然而在这个变量被访问并导致系统直白之前,其他的系统输入可能已经被处理,而此事件会重置这个状态变量为一个有效值3系统可能拥有缺陷探测和保护机制,系统可靠性改善有三个方法1缺陷避免2缺陷检测和删除3容错。

安全运行对于安全要求极高的系统是至关重要的,也就是说系统永远不可能伤害人或者损害系统环境,安全要求极高的系统中的硬件控制相对于软件控制来说较为容易实现和分析,主要分为两类1首要的安全要求极高的软件,这种软件是嵌入在系统控制器中的软件,该类软件错误地执行会导致硬件误操作2次要的安全要求极高的软件此类软件可以间接引起人员伤害,此类软件的例子是计算机辅助过程设计系统。系统可依赖性和系统安全性是相关的,但是可依赖的系统也许是不安全的,为什么可依赖性软件系统不一定是安全系统主要因为1我们不能百分百确信软件系统是无缺陷的和能容错的,违背发现的缺陷可能潜伏很长一段时间,软件失败也许会发生在多年的可信赖运行之后,2需求描述是不完备的,因为它可能没有描述在一些关键时刻的必要系统行为。3硬件误动作会引起系统无法与揣测的行为,使软件所处的环境无法预测,4系统操作员会产生单独看起来是正确的输入 ,但是在某些情形下它是可能导致系统误操作的。
确保安全性的关键在于要么意外不会发生要么不严重,通过几种手段达到1危险避免2危险检测和去除3限制损失。软件控制系统能提供复杂的安全互锁机制,这是相比于硬件控制,最重要的一点是理解系统安全的程度,系统不可能百分百安全。

信息安全性是一个反映系统保护自己免受外部意外或者故意攻击的能力的一个系统属性,这些问题主要是因为病毒,系统未经许可使用,系统数据维京许可更改,如果是保密系统最好不要连接互联网,这个让我想到公司内网,可依赖性方面有一个跟信息安全性相关的专门术语,这个罗列了出来,需要专门去记忆!!!!!

对于任何一个联网系统,有三个主要类型的信息安全性威胁1对系统的保密性以及它的数据的威胁2对系统和数据的完整性的威胁3对系统的有用性和系统数据的可用性的威胁,这些威胁是相互依赖的,大多数社会技术系统的脆弱性就是由人的失败而不是技术原因造成的,增强系统的信息安全性主要是1脆弱性避免2攻击检测和压制3暴露限制和恢复。
这一章我认为最重要是那几个术语!一定要重复记忆,目前还没有记全。每一章末尾要点和问题是精华!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值