第一章 绪论
架构的定义
系统架构(System Architecture)是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范以及指导这些内容设计与演化的原理,它是刻画系统整体抽象结构的一种手段
基于软件架构的开发方法,通常可分为三种:
以软件需求完全确认为前提的瀑布模型
在软件开发初期只能提供基本需求为前提的渐进式开发模型(如螺旋模型等)
以形式化开发方法为基础的变换模型
软件架构风格,主要分为五类:
数据流风格、调用/返回风格、独立组件风格、虚拟机风格和仓库风格
软件架构是软件生命周期中的重要产物,它影响软件开发的各个阶段。
需求阶段:把软件架构有的概念引入需求分析阶段,有助于保证需求规约和系统设计之间的可追踪性和一致性。
设计阶段;设计阶段是软件架构研究关注最早、最多的阶段,这一阶段的软件架构主要包括软件架构的描述、软件架构模型的设计与分析以及对软件架构设计经验的总结与复用等。
实现阶段:将设计阶段设计的算法及数据类型用程序设计语言进行表示,满足设计、架构和需求分析的要求,从而得到满足设计需求的目标系统。维护阶段:为了保证软件具有良好的维护性,在软件架构中针对维护性目标进行分析时,需要对一些有关维护性的属性(如可扩展性、可替换性)进行规定,当架构经过一定的开发过程实现和形成软件系统时,这些属性也相应地反映了软件的维护性。
架构师应备的专业素质:技术、设计、编码、决策、组织
第二章 计算机基础
基础知识点
冯·诺依曼计算机硬件结构:运算器、控制器、存储器、输入设备、输出设备,但在现实的硬件中,控制单元和运算单元被集成为一体,封装称为CPU
专用处理器
GPU(Graphics Processing Unit):图形处理器
DSP(Digital Signal Processor):信号处理器
FPGA(Field Programmable Gate Array):现场可编程逻辑门阵列
GPU常有数百个或数千个内核,可进行大量计算;DSP专用于实时的数字信号处理,常采用哈佛结构
指令集系统
CISC(Complex Instruction Set Computers),复杂指令集,兼容性强,指令繁多,长度可变,由微程序实现
RISC(Reduced Instruction Set Computers),精简指令集,指令少,使用频率接近,主要依靠硬件实现
存储器
分为片上缓存、片外缓存、主存(内存)、外存,其访问速度依次降低,而容量依次提高
计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾
RID5计算方式: 总容量 = 单个最小容量 * (N-1),N为存储片个数
操作系统
3个重要作用:
1.管理计算机中运行的程序和分配各种软硬件资源,主要包括处理器管理、存储管理、文件管理、I/O设备管理
2.为用户提供友善的人机界面
3.为应用程序的开发和运行提供一个高效率的平台
除此之外,还有辅导用户操作、处理软硬件错误、监控系统型能、保护系统安全等
特性:并发性、共享性、虚拟性、不确定性
嵌入式操作系统特性:微型化、可定制、实时性、可靠性、易移植性
微型化:从性能和成本角度考虑,希望占用的资源和系统代码量少,如内存少、字长短、运行速度有限、能源少(用微小型电池)。
可定制:从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用需要。
实时性:嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高。
可靠性:系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施。
易移植性:为了提高系统的易移植性,通常采用硬件抽象层(HardwareAbstractionLevel,HAL)和板级支撑包(BoardSupportPackage,BSP)的底层设计技术。
构件开发过程:设计构件组装、建立构件库、构建应用软件、测试与发布
嵌入式系统
根据嵌入式系统的应用背景及其在应用中所起作用,嵌入式系统应具备以下特性。
(1)专用性强。嵌入式系统面向特定应用需求,能够把通用CPU 中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统的小型化。
(2)技术融合。嵌入式系统将先进的计算机技术、通信技术、半导体技术和电子技术与各个行业的具体应用相结合,是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
(3)软硬一体软件为主。软件是嵌入式系统的主体,有IP核。嵌入式系统的硬件和软件都可以高效地设计,量体裁衣,去除几余,可以在同样的硅片面积上实现更高的性能。
(4)比通用计算机资源少。由于嵌入式系统通常只完成少数几个任务。设计时考虑到其经济性,不能使用通用CPU,这就意味着管理的资源少,成本低,结构更简单。
(5)程序代码固化在非易失存储器中。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存在磁盘中。
(6)需专门开发工具和环境。嵌入式系统本身不具备开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。
(7)体积小、价格低、工艺先进、性能价格比高、系统配置要求低、实时性强。
(8)对安全性和可靠性的要求高。
嵌入式系统的最大特点就是系统的运行和开发是在不同环境中进行的,通常降运行环境称为"目标机"环境,称开发环境为"宿主机"环境
嵌入式软件的主要特点:可裁剪性、可配置性、强实时性、安全性、可靠性、高确定性
(1)可剪裁性。嵌入式软件能够根据系统功能需求,通过工具进行适应性功能的加或减,删除掉系统不需要的软件模块,使得系统更加紧凑。可剪裁性通常采用的设计方法包括静态编译、动态库和控制函数流程实现功能控制等。
(2)可配置性。嵌入式软件需要具备根据系统运行功能或性能需要而被配置的能力,使得嵌入式软件能够根据系统的不同状态、不同容量和不同流程,对软件工作状况进行能力的扩展、变更和增量服务。可配置通常采用的设计方法包括数据驱动、静态编译和配置表等。
(3)强实时性。嵌入式系统中的大多数都属于强实时性系统,要求任务必须在规定的时限(Deadline)内处理完成,因此,嵌入式软件采用的算法优劣是影响实时性的主要原因。强实时性通常采用的设计方法包括表驱动、配置、静/动态结合、汇编语言等。
(4)安全性(Safety)。安全性是指系统在规定的条件下和规定的时间内不发生事故的能力。安全性是判断、评价系统性能的一个重要指标,可直接反映系统失效后所带来损失大小。通常,在嵌入式系统中根据软件危害程度可将软件分成不同安全等级,例如,机载领域DO-178适航标准将软件分为A~E5个安全等级。提高安全性通常采用的设计方法包括编码标准、安全保障机制、FMECA(故障模式、影响及危害性分析)。
(5)可靠性。可靠性是指系统在规定的条件下和规定的时间周期内程序执行所要求的功能的能力。可靠性也是判断、评价系统性能的一个重要指标。软件可靠性与硬件可靠性的衡量指标是完全不同的,软件是不可能随着时间发生变化。在安全攸关系统中,其系统的可靠性指标通常要达到10*~10”。提高安全性通常采用的设计方法包括容错技术、余度技术和鲁棒性设
计等。
(6)高确定性。嵌入式系统运行的时间、状态和行为是预先设计规划好的,其行为不能随时间、状态的变迁而变化。也就是说,在嵌入式系统中,任务、资源、状态、错误和时限等都是预先由设计师规划好的,在系统运行期间,不能发生资源枯竭和未预计的状态出现等情况,尤其是在系统失效后不能由于未预计到的错误而引发灾难。确保软件确定性通常采用的设计方法包括静态分配资源、越界检查、状态机、静态任务调度等。
安全攸关软件
定义:一个系统中,可能导致不可接受的风险的软件
机载软件D0-178
第三章 信息系统基础知识
信息系统概述
信息系统发展阶段
信息系统的发展6个阶段:
1.初始阶段 2.传播阶段 3.控制阶段 4.集成阶段 5.数据管理阶段 6.成熟阶段
信息系统的分类
信息系统的分类:
1.业务(数据)处理系统(Transction/DATA Processing System,TPS/DPS)
2.管理信息系统(Management Information System,MIS)
3.决策支持系统(Decision Support System,DSS)
4.专家系统(Expert System)
5.办公自动化系统(Office Automation System,OAS)
综合性信息系统:一个企业内,以上5种类型的系统可能同时存在,国内企业现在使用的信息化系统主要有ERP系统(企业资源管理)、WMS系统(仓储管理)、MES系统(也称之为SFC,即制造过程管理系统)和PDM系统(产品数据管理系统)
ERP系统:主要管理公司的各种资源,负责处理进销存、供应链、生产计划MPS、MRP计算、生产订单、管理会计,是财务数据的强力支撑
WMS系统:主要包括库房货位管理,主要有收发料,通过扫码进出库,对库存进行库位、先进先出与盘点;栈板出货管控、库龄管理等内容,主要是立体仓库或大批量仓库数据需求
MES系统:负责生产过程和生产过程中防呆、自动化设备集成,是各个客户审核的重点,是生产流程管控,也有企业称之为SFC,其实大同小异,但是它是生产过程、生产工艺、生产设备、自动化生产直接的核心
PDM系统:管理研发阶段的物料、BOM、工程变更数据,负责产品数据为主。PDM系统是产品研发全过程管理,主要涉及协同研发等能力
信息系统的生命周期
一般分为4个阶段:产生阶段、开发阶段、运行阶段和消亡阶段
产生阶段2个过程:
1.概念的产生,根据企业经营管理的需要,提出建设信息系统的初步想法
2.需求分析过程,对企业信息系统的需求进行深入地调研和分析,并形成需求分析报告
开发阶段5个阶段:1.总体规划 2.系统分析 3.系统设计 4.系统实施 5.系统验收
运行阶段的4种维护类型:排错性维护、适应性维护、完善性维护和预防性维护,在系统运行初期,排错性维护和适应性维护较多,而到后来,完善性维护和预防性维护会比较多
信息系统建设原则
1.高层管理人员介入原则
2.用户参与开发原则
3.自顶向下规划原则
4.工程化原则:根据"软件工程"这门工程学科,把工程化方法引入到系统开发之中
5.其他原则:
1.创新性原则:用来体现信息系统的先进性
2.整体性原则:用来体现信息系统的完整性
3.发展性原则:用来体现信息系统的超前性
4.经济性原则:用来体现信息系统的实用性
信息系统开发方法
结构化方法:将系统的生命周期划分为系统调查、系统分析、系统设计、系统实施、系统维护等阶段。结构化生命周期法的主要特点如下:1.开发目标清晰化 2.工作阶段程式化 3.开发文档规范化 4.设计方法结构化
原型法:根据用户需求,利用开发工具快速建立一个模型展示给用户,在此基础上开发一个最初版本,并把它提交给用户试用、评价,根据用户题出的意见进行修改和补充,通过这样多次凡复,直到生成用户满意的方案为止。原型法开发过程包括系统需求分析、系统初步设计、系统调试、系统检测等阶段
面向对象方法:利用面向对象的信息建模概念,如实体、关系、属性等,同时运用封装、继承、多态等机制来构造模拟现实系统的方法
面向服务的方法:是一种系统开发思想,将接口的定义与实现进行解耦,使信息系统快速响应需求与环境的变化,提高系统可复用性、信息资源共享和系统之间的互操作性
业务处理系统(TPS)
业务处理系统(Trasaction Processing System,TPS)又可称为电子数据处理系统(Electronic Data Processing System,EDP),企业在经营活动中产生各种数据,通过TPS进行统计、分类等处理,按组织体系有机地姐和起来反映和支持整个经营管理活动,TPS是服务于组织管理层次中最底层、最基础的信息系统,如账务处理系统、物料进出库管理系统。各个子系统有自己专有的软、硬件和专用的数据文件,它们之间一般不交流、不共享某些专用数据库文件
目的:帮助作业层人员减轻处理原始数据负担,提高具体事务的处理效率。
功能:对日常事务产生的数据进行输入、处理和输出
TPS的数据处理周期由5个阶段构成:数据输入、数据处理、数据库的维护、文件报表的生成和查询
数据输入:一般有人工、自动及二者结合,常见的自动化输入装置如POS机、ATM、扫描仪、触摸屏
数据处理:
批处理(Batch Processing),优点:节省频繁修改数据库的开支 缺点:无法实时查询
联机事务处理(OnLine Transaction Processing,OLTP),对事务立即处理,并将处理结构提供给终端用户,主要依赖于网络来实现终端、工作站和服务器之间的通信。优点:立刻响应用户请求并处理,保证实时查询,缺点:成本高,需要对数据进行授权和安全保护。在某些情况下,以费用换取速度、效率和更优质的服务是值得的,如股票交易、12306网站
管理信息系统(MIS)
管理信息系统(ManageInformationSystem,MIS)是由业务处理系统发展而成的,是在TPS基础上引进大量管理方法对企业整体信息进行处理,并利用信息进行预测、控制、计划、辅助企业全面管理的信息系统。从MIS应用的历史和现状来看,MIS是一个高度集成化的人机信息系统,它是企业信息系统中职能明确、体系结构较为稳定、处理技术成熟、应用也最为成功的分支。管理信息系统中包含各种模型和方法,数据共享能力更大,能够提供分析、计划和辅助决策功能的系统,并具有改进企业组织的效能。
决策支持系统(DSS)
决策支持系统(Decision Support System,DSS)的定义始终存在着不同的观点,但基本一致认为其定义必须建立在对象所具有的特征之上,以下列举几个比较典型的定义:
定义一:DSS是一个由语言系统、知识系统和问题处理系统3各互相关联的部分组成的,基于计算机的系统
DSS应具有的特征是:
(1)数据和模型是DSS的主要资源
(2)DSS用来支援用户作决策而不是代替用户作决策
(3)DSS主要用于解决半结构化及非结构化问题
(4)DSS的作用在于提高决策的有效性而不是提高决策的效率
定义二:DSS应当是一个交互式的、灵活的、适应性强的基于计算机的信息系统,能够为解决非结构化管理问题提供支持,以改善决策的质量。DSS使用数据,提供容易使用的用户界面,并可以体现决策者的意图。DSS可以提供即使创建的模型,支持整个决策过程中的活动,并可能包括知识成分
DSS应具有的特征是:
(1)主要针对上层管理人员经常面临的结构化程度不高、说明不够充分的问题
(2)界面友好、容易被非计算机人员所接受
(3)将模型、分析技术与传统的数据存取与检索技术结合起来
(4)具有对环境及决策方法改变的灵活性与适应性
(5)支持但不是代替高层决策者进行决策
(6)充分利用先进信息技术快速传递和处理信息
专家系统(ES)
基于知识的专家系统简称为专家系统(Expert System,ES)是人工智能的一个重要分支专家系统的能力来自于它所拥有的专家知识,知识的表示及推理的方法则提供了应用的机理。因此这种基于知识的系统设计是以知识库和推理机为中心而展开的。
人工智能的特点:
(1)从过去的事件或情形中汲取经验,并将从经验中得到的知识应用于新的环境和场景。
然而汲取经验并应用知识不是计算机系统的本性,它需要精心为其设计的软件提供支持。
(2)具有在缺乏重要信息时解决问题的能力。
(3)具有处理和操纵各种符号、理解形象化图片(图像)的能力。
(4)想象力和创造力。
(5)善于启发。
专家系统属于人工智能,但不同于传统系统以及其他类型的人工智能系统,主要表现在以下5个方面:
(1)解决的是半结构化或非结构化问题
(2)传统应用程序通过建立数学模型来模拟问题领域,而专家系统模拟的是人类专家在问题领域的推理
(3)传统应用程序由数据和程序2要素组成,专家系统由数描述问题状态的综合数据库、存放启发式经验知识的知识库和对知识库的知识进行推理的推理机,3要素分别对应数据集、知识库级和控制级
(4)专家系统处理的问题属于现实世界中必须具备人类专家的大量专门知识才能解决的问题,它必须可靠地工作,并在合理的时间内对求解的问题给出可用的解答。所以它面对的往往是实际的问题,而不是纯学术的问题。
(5)从求解手段来看,专家系统的高性能是通过将问题领域局限在相对狭窄的特定领域内,它更强调该领域中人类专家的专门知识的应用。专家系统所拥有的这种启发式知识的数量和质量,将决定专家系统的性能和效率。从这个方面讲,专家系统的问题求解的通用性是较差的。
专家系统的特点:
1.超越时间限制
人类专家的工作时间有限,但专家系统是恒久的,一旦开发完成,可随时使用,并可24小时持续运作。
2.操作成本低廉
人类专家稀少且昂贵,虽然专家系统在起步发展时必须花一笔不小的经费,但日常操作的成本比起人类专家便宜许多。因此在专家不在或经济上请专家不合算的情况下,利用专家系统仍能处理与专家水平相等的工作。
3.易于传递与复制
专家与专家知识是稀有的资源,在知识密集的工作环境下,新进人员需要做相当多的训练而关键人物的知识随着人事变动不能储存,在传递起来亦耗时费力但专家系统则不然,它能轻易地将知识传递或复制。
4.处理手段一致
人类专家判断决策的结果常会因时或因人而异,而专家系统对于所处理的问题则具有一致性的输出。
5.善于克服难题
由于专家系统具有既定的知识库与严谨的推理程序,因此往往比人类专家还能胜任一些执行起来较费时、复杂度较高的工作,如需要庞大计算量的问题。另外,若工作的内容重复性很高,专家系统比人类专家能有更佳的表现。
6.适用特定领域
由于建构搜集知识库以及推理规则有一定的困难,因此专家系统通常只使用小范围的特定知识领域。而当问题的知识牵涉较广,或是没有一定的处理程序时,就必须靠人类专家的智慧来处理。
专家系统的组成:知识库、综合数据库、推理机、知识获取、解释程序、人-机接口
1.知识库:存放系统秋节实际问题的领域知识。一般分为两类:1.事实性知识 2.启发性知识
2.综合数据库:存放推理过程产生的各种数据,如初始状态、中间结果、求解过程、用户对系统提问的回答等
3.推理机:也被称为控制结构或规则解释器,通常包括推理机制和控制策略,是一组用来控制系统的运行、执行各种任务、根据知识库进行各种搜索和推理的程序模块,常用的推理方式有正向推理、反向推理和双向推理
4.知识获取:主要有两方面的功能:一是知识的编辑和求精;二是知识自主学习
5.解释程序:负责解答用户提出的各种问题
6.人-机接口:包括两部分,一部分是专家系统与用户的接口;另一部分是专家系统与领域专家和知识工程师的接口
办公自动化系统(OAS)
办公自动化是以先进的科学技术为基础,利用有关办公自动化设备协助办公人员管理各项办公信息,以提高办公效率和质量
OAS功能:1.事务处理 2.信息管理 3.辅助决策
OAS组成:1.计算机 2.办公设备 3.数据通信及网络 4.软件系统
企业资源规划(ERP)
企业资源规划(Enterprise Resource Planning,ERP)
企业资源三大流:物流、资金流和信息流
典型信息系统框架模型
电子政务
电子政务主要包括3个组成部分:
(1)政府部门内部的电子化和网络化办公。
(2)政府部门之间通过计算机网络进行的信息共享和实时通信。
(3)政府部门通过网络与居民之间进行的双向信息交流。
电子政务的主体主要有:政府、企(事)业单位及居民
电子政府的活动主要有:
1.政府与政府
2.政府对企(事)业
3.政府对居民
4.企业对政府
5.居民对政府
第四章 信息安全技术基础知识
信息安全基础知识
信息安全的概念
信息安全包括5个基本要素:机密性、完整性、可用性、可控性与可审查性。
(1)机密性:确保信息不暴露给未授权的实体或进程。
(2)完整性:只有得到允许的人才能修改数据,并且能够判别出数据是否已被篡改。
(3)可用性:得到授权的实体在需要时可访问数据,即攻击者不能占用所有的资源而阻碍授权者的工作。
(4)可控性:可以控制授权范围内的信息流向及行为方式。
(5)可审查性:对出现的信息安全问题提供调查的依据和手段。
信息安全的范围包括:设备安全、数据安全、内容安全和行为安全。
1)设备安全
信息系统设备的安全是信息系统安全的首要问题,是信息系统安全的物质基础,它包括3个方面。
(1)设备的稳定性:指设备在一定时间内不出故障的概率。
(2)设备的可靠性:指设备在一定时间内正常执行任务的概率。
(3)设备的可用性:指设备可以正常使用的概率。
2)数据安全
数据信息可能泄露,可能被篡改,数据安全即采取措施确保数据免受未授权的泄露、篡改和毁坏,包括以下3个方面。
(1)数据的秘密性:指数据不受未授权者知晓的属性。
(2)数据的完整性:指数据是正确的、真实的、未被篡改的、完整无缺的属性。
(3)数据的可用性:指数据可以随时正常使用的属性。
3)内容安全
内容安全是信息安全在政治、法律、道德层次上的要求,包括以下3个方面。
(1)信息内容在政治上是健康的。
(2)信息内容符合国家的法律法规。
(3)信息内容符合中华民族优良的道德规范。
4)行为安全
信息系统的服务功能是指最终通过行为提供给用户,确保信息系统的行为安全,才能最终确保系统的信息安全。行为安全的特性如下。
(1)行为的秘密性:指行为的过程和结果不能危害数据的秘密性
(2)行为的完整性:指行为的过程和结果不能危害数据的完整性,行为的过程和结果是预期的。
(3)行为的可控性:指当行为的过程偏离预期时,能够发现、控制和纠正。
信息存储安全
信息的存储安全包括信息使用的安全(如用户的标识与验证、用户存取权限控制、安全问题跟踪等)、系统安全监控、计算机病毒防治、数据的加密和防止非法的攻击等
网络安全
网络安全漏洞:1.物理安全性 2.软件安全漏洞 3.不兼容使用安全漏洞 4.选择合适的安全哲理
网络安全威胁
一般认为,目前网络存在的威胁主要表现在以下5个方面。
(1)非授权访问。没有预先经过同意就使用网络或计算机资源被看作非授权访问,如有意避开系统访问控制机制,对网络设备及资源进行非正常使用或擅自扩大权限,越权访问信息。它主要有以下几种形式:假冒、身份攻击、非法用户进入网络系统进行违法操作、合法用户以未授权方式进行操作等。
(2)信息泄露或丢失。信息泄露或丢失指敏感数据在有意或无意中被泄露出去或丢失,它通常包括信息在传输中丢失或泄露、信息在存储介质中丢失或泄露以及通过建立隐蔽隧道等方式窃取敏感信息等。如黑客利用电磁泄露或搭线窃听等方式可截获机密信息,或通过对信息流向、流量、通信频度和长度等参数的分析,推测出有用信息,如用户口令、账号等重要信息。
(3)破坏数据完整性。以非法手段窃得对数据的使用权,删除、修改、插入或重发某些重要信息,以取得有益于攻击者的响应:恶意添加,修改数据,以干扰用户的正常使用。
(4)拒绝服务攻击(DOS)。它不断对网络服务系统进行干扰,改变其正常的作业流程,执行无关程序使系统响应减慢甚至瘫痪,影响正常用户的使用,甚至使合法用户被排斥而不能进入计算机网络系统或不能得到相应的服务。
(5)利用网络传播病毒。通过网络传播计算机病毒的破坏性大大高于单机系统,而且用户很难防范。
3.安全措施的目标
安全措施的目标包括如下几个方面。
(1)访问控制。确保会话对方(人或计算机)有权做它所声称的事情。
(2)认证。确保会话对方的资源(人或计算机)与它声称的一致。
(3)完整性。确保接收到的信息与发送的一致。
(4)审计(不可抵赖性)。确保任何发生的交易在事后可以被证实,发信者和收信者都认为交换发生过。
(5)保密。确保敏感信息不被窃听。
信息加密加密技术
对称密钥加密算法:加密密钥核解密密钥是相同的,称为共享密钥算法或对称密钥算法
DES(Data Encryption Standard):通过明文块变换和排列
DES3:是DES的改进算法,做了更多次加密
IDEA(International Data Encryption Algorithm):使用128位的密钥把明文氛围64位的块,进行8次迭代加密
AES(Advanced Encryption Standard):AES支持128、192和256位3种密钥长度
非对称密钥加密算法:加密密钥和解密密钥是不同的,称为不共享密钥算法或非对称密钥算法
RSA(Rivest Shamir and Adleman):一种公钥加密算法,RAS算法的安全性基于大素数分解的困难性
拒绝服务攻击
拒绝服务攻击DoS(Denial ofService)是由人为或非人为发起的行动,使主机硬件、软件或者两者同时失去工作能力,使系统不可访问并因此拒绝合法的用户服务要求。拒绝服务攻击的主要企图是借助于网络系统或网络协议的缺陷和配置漏洞进行网络攻击,使网络拥塞、系统资源耗尽或者系统应用死锁,妨碍目标主机和网络系统对正常用户服务请求的及时响应,造成服务的性能受损甚至导致服务中断。
外部用户针对网络连接发动拒绝服务攻击主要有以下几种模式:(1)消耗资源。计算机和网络需要一定的条件才能运行,如网络带宽、内存、磁盘空间CPU时间。攻击者利用系统资源有限这一特征,或者是大量地申请系统资源,并长时间地占用:或者是不断地向服务程序发请求,使系统忙于处理自己的请求,而无暇为其他用户提供服务。攻击者可以针对以下几种资源发起拒绝服务攻击。
·针对网络连接的拒绝服务攻击;
消耗磁盘空间:
消耗CPU资源和内存资源。
(2)破坏或更改配置信息。计算机系统配置上的错误也可能造成拒绝服务攻击,尤其是服务程序的配置文件以及系统、用户的启动文件。这些文件一般只有该文件的属主才可以写入,如果权限设置有误,攻击者(包括已获得一般访问权的黑客与恶意的内部用户)可以修改配置文件,从而改变系统向外提供服务的方式。
(3)物理破坏或改变网络部件。这种拒绝服务针对的是物理安全,一般来说,通过物理破坏或改变网络部件以达到拒绝服务的目的。其攻击的目标有:计算机、路由器、网络配线室、网络主干段、电源、冷却设备、其他的网络关键设备。
(4)利用服务程序中的处理错误使服务失效。最近出现了一些专门针对 Windows系统的攻击方法,如LAND等等。被这些工具攻击之后,目标机的网络连接就会莫名其妙地断掉,不能访问任何网络资源或者出现莫名其妙的蓝屏,系统进入死锁状况。这些攻击方法主要利用服务程序中的处理错误,发送一些该程序不能正确处理的数据包,引起该服务进入死循环。
分布式拒绝服务攻击 DDoS
分布式拒绝服务DDoS攻击是对传统DoS攻击的发展,攻击者首先侵入并控制一些计算机,然后控制这些计算机同时向一个特定的目标发起拒绝服务攻击。传统的拒绝服务攻击有受网络资源的限制和隐蔽性差两大缺点,而分布式拒绝服务攻击却克服了传统拒绝服务攻击的这两个致命弱点。分布式拒绝服务攻击的隐蔽性更强。通过间接操纵网络上的计算机实施攻击,突破了传统攻击方式从本地攻击的局限性。被 DDoS 攻击时可能的现象有:
(1)被攻击主机上有大量等待的TCP连接。
(2)大量到达的数据分组(包括TCP分组和UDP分组)并不是网站服务连接的一部分,往往指向机器的任意端口。
(3)网络中充斥着大量无用的数据包,源地址为假。
(4)制造高流量的无用数据造成网络拥塞,使受害主机无法正常和外界通信。
(5)利用受害主机提供的服务和传输协议上的缺陷,反复发出服务请求,使受害主机无法及时处理所有正常请求。
(6)严重时会造成死机。
第五章 软件工程基础知识
软件工程
软件过程模型
瀑布模型:
特点是因果关系紧密相连,前一个阶段工作的输出结果,是后一个阶段工作的输入。
主要缺点有:
1.需求的完整性、正确性很难确定
2.瀑布模型是一个严格串行化的过程模型,很长时间才能得到一个看得见的软件系统
3.瀑布模型每个接断都需要一次性地解决该阶段的工作,不会出现遗漏和错误等情况,实际上这是不现实的
原型模型(Prototype Model):又称为快速原型。不适用大型软件
由于瀑布型模型的缺点,提出了原型模型。
原型模型主要有以下两个阶段:
1.原型开发阶段:根据用户提出对软件系统的定义,快速开发一个原型
2.目标软件开发阶段,对原型进行修改完善,确定软件系统的需求并达到一致的理解。
实际工作中,由于各种原因,大多数原型都废弃不用,仅仅把建立原型的过程当作帮助定义软件需求的一种手段。原型模型后续发生了一些演变,出现了抛弃型模型和演化型模型。抛弃型模型是将原型作为需求确认的手段,在需求确认结束后,原型就被抛弃不用,重新采用一个完整的瀑布模型进行开发。演化型模型是在需求确认结束后,不断补充和完善原型,直至形成一个完整的产品
螺旋模型(Spiral Model)
是在快速原型的基础上扩展而成,螺旋模型分为4个阶段:1.目标设定 2.风险分析 3.开发和有效性验证 4.评审。螺旋模型的开发过程是这4个部分的迭代过程,直到用户接受的范围内。螺旋模型适合大型软件开发,适用于面向规格说明、面向过程和面向对象的软件开发方法
敏捷模型:
出现原因:1.面向对象编程开始替代面向过程变成 2.市场要求公司更快的交付产品
主要特点:1.适应性(adaptive)而非预设性(predictive)
2.面向人(people-oriented)而非面向过程(Process-oriented)
核心思想:
1.敏捷方法是适应型,而非可预测型。与传统方法不同,敏捷方法拥抱变化,也可以说它的初衷就是适应变化的需求,利用变化来发展,甚至改变自己,最后完善自己。
2.敏捷方法是以人为本,而非以过程为本。传统方法以过程为本,强调充分发挥人的特性,不去限制它。并且软件开发在无过程控制和过于严格烦琐的过程控制中取得一种平衡,以保证软件的质量。
3.迭代增量式的开发过程。敏捷方法以原型开发思想为基础,采用选代增量式开发,发行版本小型化。它根据客户需求的优先级和开发风险,制订版本发行计划,每一发行版都是在前一成功发行版的基础上进行功能需求扩充,最后满足客户的所有功能需求。
敏捷方法介绍
1.极限编程(Extreme Programming, XP):近乎螺旋式开发,将开发过程分解称一个个相对较小的周期,通过交流、反馈,开发人员和客户可以非常清楚开发进度,并根据实际情况及时地调整开发过程
2.水晶系列(Crystal):提倡"机动性"
3.Scrum:迭代式增量软件开发过程,包括了一些列实践和预定义角色
4.特征驱动开发方法(Feature Driven Development,FDD):FDD三要素:人、过程和技术。定义了6种关键角色:项目经理、首席架构设计师、开发经理、主程序员(FDD独有的)、程序员和领域专家
统一过程模型(Rational Unified Process,RUP)
9个核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境
RUP特点:1.用例驱动 2.以体系结构为中心 3.迭代与增量开发,每次考虑一部分需求,进行分析、设计、实现、测试和部署等过程;逐渐完成整个项目
RUP采用4+1视图来描述软件系统的体系结构,1即用例视图 4即逻辑视图、实现试图、进程视图、部署视图
软件能力成熟度模型(Capability Maturity Model for Software,CMM):主要用于指导软件开发过程的改进和进行软件开发能力的评估
需求工程
软件需求包括3个层次:业务需求、用户需求和功能需求(也包括非功能需求)
需求工程的目标:确定客户需求,定义设想中系统的所有外部特征
需求工程的活动划分为以下几个阶段:
1.需求获取:通过与用户的交流来捕捉用户的需求
2.需求分析:建立概念模型,对需求抽象描述
3.形成需求规格(或称之为需求文档化) :生成需求模型的文档描述,作为候序软件开发的指南
4.需求确认与验证:以需求规格说明为输入,通过用户确认、复审会议、符号执行、模拟仿真或快速原型等途径与方法,确认和验证需求规格的完整性、正确性、一致性、可测试性和可行性,包含有效性检查、一致性检查、可行性检查和确认可验证性
5.需求管理:包括需求文档的追踪管理、变更控制、版本控制
需求获取方法:
1.用户面谈:最有效的方法
2.需求专题讨论会:短暂而紧凑
3.问卷调查:可用于确认假设和收集统计倾向数据,缺点是相关问题不能事先决定,最好是完成最初的面谈和分析后再进行
4.现场观察:通过观察用户实际执行业务的过程,直观地了解业务的执行过程,全面了解需求细节
5.原型化方法:通过开发系统原型以及与用户的多次迭代反馈,解决早期阶段需求不确定的问题,尤其是在人机界面等高度不确定的需求
6.头脑风暴法:在一些新业务拓展的软件项目中,由于业务流程存在高度的不确定性,一群人围绕该业务,发散思维,不断产生新的观点,从而确定具体的需求
需求变更
变更控制过程:1.问题分析和变更描述 2.变更分析和成本计算 3.变更实现
常见的需求变更策略:
(1)所有需求变更必须遵循变更控制过程。
(2)对于未获得批准的变更,不应该做设计和实现工作。
(3)变更应该由项目变更控制委员会决定实现哪些变更。
(4)项目风险承担者应该能够了解变更的内容。
(5)绝不能从项目配置库中删除或者修改变更请求的原始文档。
(6)每一个集成的需求变更必须能跟踪到一个经核准的变更请求,以保持水平可追踪性。
可以用工具来收集、存储和管理变更需求
需求跟踪
需求跟踪的目的是建立与维护"需求-设计-编程-测试"之间的一致性,确保工作成果符合用户需求
需求跟踪方式有两种:
1.正向跟踪:检查《产品需求规格说明书》中的每个需求是否都能在后继工作成果中找到对应点
2.逆向跟踪:检查设计文档、代码、测试用例等工作成果是否能在《产品需求规格说明书》中找到出处
系统分析与设计
SASD(Structured Analysis and Structured Design):结构化方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法,结构化方法提出了软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等,针对软件生存周期各个不同的阶段,它有结构化分析(SA)、结构化设计(SD)和结构化编程(SP)等方法
结构化分析
它一般利用图形表达用户需求,使用的手段主要有数据流图(Data Flow Diagram, DFD)、数据字典、结构化语言、判定表以及判定树等
数据流图(DFD)由4种基本元素(模型对象)组成:数据流、处理、加工、数据存储和外部项
1.数据流(Data Flow):用箭头描述数据的流向
2.处理(Process):表示对数据进行的加工和转换
3.数据存储:表示用数据库形式(或者文件形式)存储的数据
4.外部项:也称为了数据源或者数据终点
数据字典(Data Dictionary):是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。数据字典最重要的作用是作为分析阶段的工具供人查询
数据字典的主要组成:
1.数据项:数据流图中的数据项说明,通常包括{数据项名,含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系},若干个数据项可组成一个数据结构
2.数据结构:数据流图中数据块的数据结构说明,可以若干个数据项或若干个数据结构或若干个数据项和数据结构混合组成,通常包括{数据结构名,含义说明,组成:{数据项或数据结构}}
3.数据流
4.数据存储
5.处理工程
结构化设计
结构化设计(Structured Design,SD)是一种面向数据流的设计方法,它以SRS和SA阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。SD方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段,其中概要设计的主要任务是确定软件系统的结构,对系统进行模块划分确定每个模块的功能、接口和模块之间的调用关系:详细设计的主要任务是为每个模块设计实现的细节。
1.模块结构:系统是一个整体,它具有整体性的目标和功能,但这些目标和功能的实现又是由相互联系的各个组成部分共同工作的结果。人们在解决复杂问题时使用的一个很重要的原则,就是将它分解成多个小问题分别处理,在处理过程中,需要根据系统总体要求,协调各业务部门的关系。在SD中,这种功能分解就是将系统划分为模块,模块是组成系统的基本单位,它的特点是可以自由组合、分解和变换,系统中任何一个处理功能都可以看成一个模块。
2.信息隐藏与抽象:信息隐藏原则要求采用封装技术,将程序模块的实现细节(过程或数据)隐藏起来,对于不需要这些信息的其他模块来说是不能访问的,使模块接口尽量简单。按照信息隐藏的原则,系统中的模块应设计成“黑盒”,模块外部只能使用模块接口说明中给出的信息,例如,操作和数据类型等。模块之间相对独立,既易于实现,也易于理解和维护。
抽象原则要求抽取事物最基本的特性和行为,忽略非本质的细节,采用分层次抽象的方式可以控制软件开发过程的复杂性,有利于软件的可理解性和开发过程的管理。通常,抽象层次包括过程抽象、数据抽象和控制抽象。
3.模块化:在SD方法中,模块是实现功能的基本单位,它一般具有功能、逻辑和状态3个基本属性,其中功能是指该模块“做什么”,逻辑是描述模块内部“怎么做”,状态是该模块使用时的环境和条件。在描述一个模块时,必须按模块的外部特性与内部特性分别描述。模块的外部特性是指模块的模块名、参数表和给程序乃至整个系统造成的影响,而模块的内部特性则是指完成其功能的程序代码和仅供该模块内部使用的数据。对于模块的外部环境(例如,需要调用这个模块的上级模块)来说,只需要了解这个模块的外部特性就足够了,不必了解它的内部特性。而软件设计阶段,通常是先确定模块的外部特性,然后再确定它的内部特性。
4.耦合:对于模块之间耦合的强度,主要依赖于一个模块对另一个模块的调用、一个模块向另一个模块传递的数据量、一个模块施加到另一个模块的控制的多少,以及模块之间接口的复杂程度
5.内聚:一般说来,系统中各模块的内聚越高,则模块间的耦合就越低,但这种关系并不是绝对的。耦合低使得模块间尽可能相对独立,各模块可以单独开发和维护;内聚高使得模块的可理解性和维护性大大增强。因此,在模块的分解中应尽量减少模块的耦合,力求增加模块的内聚,遵循“高内聚、低耦合”的设计原则。
系统结构图
程序流程图又称为程序框图,是使用最广泛然的一种描述程序逻辑结构的工具。它用方框表示一个处理步骤,菱形表示一个逻辑条件,箭头表示控制流向。其优点是:结构清晰,易于理解,易于修改。缺点是:只能描述执行过程而不能描述有关的数据。
NS 流程图,也称为盒图,是一种强制使用结构化构造的图示工具,也称为方框图。其具有以下特点:功能域明确、不可能任意转移控制、很容易确定局部和全局数据的作用域、很容易表示嵌套关系及模板的层次关系。
PAD图是一种改进的图形描述方式,可以用来取代程序流程图,相比程序流程图更直观,结构更清晰。最大的优点是能够反映和描述自顶向下的历史和过程。PAD提供了5种基本控制结构的图示,并允许递归使用。
结构化编程
E-R图:E-R图提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型
面向对象方法
面向对象(Object-Oriented,OO)开发方法将面向对象的思想应用于软件开发过程中,指导开发活动,是建立在"对象"概念基础上的方法学。面向对象开发方法是以用例驱动的、以体系结构为中心的、迭代的和渐增式的开发过程,主要包括需求分析、系统分析、系统设计和系统实现4个阶段
面向对象分析方法(Object-Oriented Analysis, OOA),是在一个系统的开发过程中进行了业务调查以后,按照面向对象的思想来分析问题
OOA原则:
1.抽象
2.封装
3.继承
4.分类
5.聚合
6.关联
7.消息通信
8.粒度控制
9.行为分析
OOA5个基本步骤:1.确定对象和类 2.确定结构 3.确定主题 4.确定属性 5.确定方法
面向对象设计方法
面向对象设计方法(Object-Oriented Design,OOD)是OOA方法的延续,其基本思想包括抽象、封装和可扩展性
在OOD中,类可以分为3种类型:实体类、控制类、边界类
1.实体类:映射现实世界的实体(entity实体类)
2.控制类:具有行为的类,用于控制其他对象工作,没有属性但一定有方法(接口)
3.边界类:用于封装在用例内、外流动的信息或数据流(访问外部系统的工具类)
软件测试
测试方法分类
以执行状态划分
静态测试(Static Testing, ST):不运行程序,检查语句、结构、过程来发现是否有错误
动态测试(Dymatic Testing, DT):运行被测程序,对结果进行分析
以具体实现算法细节和系统内部结构划分
黑盒测试:不考虑程序内部结构,根据需求规格说明书测试实例
白盒测试:检查各个逻辑结构是否合理,常有的测试方法有:控制流分析、数据流分析、路径分析、程序变异等。根据测试用例的覆盖程度,分为语句覆盖、判定覆盖、分支覆盖和路径覆盖等,路径覆盖是最精细的测试方法。
灰盒测试:介于黑盒和白盒测试之间,不仅关注输入输出,也关注逻辑测试
以程序执行的方式划分:人工测试,自动化测试
以阶段划分
单元测试:对模块及逆行测试,代码覆盖率测试
集成测试:对组装起来的模块同时进行测试
系统测试:包含功能测试、性能测试、验收测试、压力测试等
性能测试:通过自动化测试工具模拟正常、峰值以及异常负载条件进行测试
验收测试:主要目标是为用户展示开发出来的软件符合要求和有关标准
其他测试:
AB测试:是为Web或APP界面多个版本,分别访问这些版本,最后分析评估出最好版本,正式采纳
Web测试:针对Web应用的雷一测试,通过尽可能的多发现浏览器端和服务端中的错误并及时加以修正
链接测试:测试页面之间的跳转是否正常
表单测试:表单是否正常完成提交,并正确处理数据
净室软件工程
净室软件工程(CleanRoom Software Engineering,CSE)
基于构件的软件工程
基于构件的软件工程(Component-Based Software Engineering,CBSE)是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。
CSBE的构件应具备以下特征:
(1)可组装型:对于可组装的构件,所有外部交互必须通过公开定义的接口进行。同时它还必须对自身信息的外部访问。
(2)可部署性:软件必须是自包含的,必须能作为一个独立实体在提供其构件模型实现的
构件平台上运行。构件总是二进制形式,无须在部署前编译。
(3)文档化:构件必须是完全文档化的,用户根据文档来判断构件是否满足需求。
(4)独立性:构件应该是独立的,应该可以在无其他特殊构件的情况下进行组装和部署
如确实需要其他构件提供服务,则应显示声明。
(5)标准化:构件标准化意味着在CBSE过程中使用的构件必须符合某种标准化的构件模型。
软件项目管理
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动
软件进度管理指的是为了确保项目按期完成所需要的管理过程。一般包括:活动定义、活动排序、活动资源估计、活动历时估计、制定进度计划和进度控制
软件配置管理(Software Configuration Management,SCM)是一种标识、组织和控制修改的技术。SCM活动的目标是为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更,使错误率降为最小并最有效地提高生产效率
SCM包括版本控制和变更控制
1.版本控制(Version Control)是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理
2.变更控制(Change Control)的目的是对变更进行管理,确保变更有序进行