软件设计师复习笔记重点总结.docx
《软件设计师复习笔记重点总结.docx》由会员分享,可在线阅读,更多相关《软件设计师复习笔记重点总结.docx(31页珍藏版)》请在冰豆网上搜索。
![软件设计师复习笔记重点总结.docx](https://file1.bdocx.com/fileroot1/2023-2/7/a66bd2df-022a-4745-a274-f19d847f0d66/a66bd2df-022a-4745-a274-f19d847f0d661.gif)
软件设计师复习笔记重点总结
一软件设计师复习笔记重点总结
计算机系统基础知识:
CPU功能:
程序控制,操作控制,时间控制,数据处理。
组成:
运算器(算术逻辑单元ALU,累加寄存器AC,数据缓冲寄存器DR,状态条件寄存器PSW),控制器(指令寄存器IR,程序计数器PC,地址寄存器AR,指令译码器ID),寄存器组(专业寄存器通用寄存器),内部总线。
数据表示:
原码:
负数把第一位改成1;
反码:
整数0变1,1变0;
补码:
取反+1;
移码:
在数X上增加一个偏移量;
最适合进行数字相加减的数字编码是补码,最适合浮点数阶码的数字编码是移码。
再进行二十进制编码加法运算时需要遵循以下规则:
当和不大于1001且向高位无进位时,不需要进行修正。
当和不大于1001且向高位有进位时,需要进行加六修正。
当和大于1001时,需要进行加6修正。
双符号位判决法:
即00表示正号,11表示负号,则溢出时两个符号位就不一致了,从而可以判定发生了溢出。
符号位SF和进位标志CF进行异或运算为1时,表示运算的结果产生溢出。
浮点数:
N=2^E*FE:
阶码F尾数
尾符和尾数小数点后第一位数字相异为规格化数。
校验码:
奇偶校验码(在编码中增加一个校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶检验),从而使码距变为2)=>只能检验一位的错误
海明码(在数据位中之间插入K个校验位,通过扩大码距来实现检错和纠错)=>既可以检测数据传输过程中出现的一位数据错误的位置加以纠正。
2^k-1>=n+k
循环冗余校验码(利用生成多项式为k个数据位产生r个校验位来进行编码,长度为r+k)校验码越长,校验能力越强;
计算机体系结构:
结构,组织,实现,性能。
结构只计算机系统各种应用的互联,组织指各种部件的动态联系和管理,实现指各模块设计的组装完成,性能指计算机系统的行为表现。
系统分类:
单处理系统,并行处理和多处理系统,分布式处理系统(指物理上远距离而松耦合的多计算机系统,通信时间和处理时间相比已经不可忽略)。
fynn分发:
SISD单数据单指令流,SIMD单指令多数据流,MISD多指令单数据流,MIMD多指令多数据流;
阵列处理机(ArrayProcessor)也称并行处理机(ParallelProcessor)通过重复设置大量相同的处理单元PE(ProcessingElement),将它们按一定方式互连成阵列,在单一控制部件CU(ControlUnit)控制下,对各自所分配的不同数据并行执行同一组指令规定的操作,操作级并行的SIMD计算机,它适用于矩阵运算。
冯译云分类:
WSBS字串行位串行计算机,WPBS字并行位串行计算机,WSBP字串行位并行,WPBP字并行位并行;
指令系统:
指令及体系:
堆栈,累加器,寄存器集;
CISC复杂指令集计算机RISC精简指令集计算机(流水技术:
超流水线技术,超标量技术,超长指令字技术)
存储:
相联寄存器是一种按内容访问的寄存器;
cache地址映像方法:
直接映像(地址变换简单,灵活性差),全相联映像(主存调入cache的位置不受限制,十分灵活,但是因为无法从主存中直接获得cache的块号,变化复杂,速度慢),组相联映像。
cache替换算法:
随机替换算法,先进先出算法,近期最少使用算法,优化替代算法。
磁盘容量:
内圈周长*最大位密度*每面磁道数*面数/8
每面磁道数=(外直径-内直径)*磁道密度/2
格式化容量:
每磁道扇区数*每扇区容量*每面磁道数*面数
平均传输速率=内圈周长*最大位密度*转速
CD-ROM只读型光盘,WROM,只写一次光盘
算法为平均访问时间约=平均寻道时间+平均潜伏时间
输入输出技术:
IO设备与主机之间交换数据主要有五种方式:
程序查询方式,程序中断方式(IO系统与主机之间交换数据时,当IO系统完成了数据传输后则以中断信号通知CPU。
CPU保护现场并转入IO终端服务程序完成与IO系统的数据交换。
),DMA方式,通道方式,IOP输入输出处理机;DMA传送方式的优先级高于中断方式;
总线结构:
内部总线。
(分为芯片内总线和元件内总线)系统总线(用于插件板的一级的互连包括ISA总线EIAS总线,PCI总线,PCI总线的时钟与处理器时钟是独立的,非同步的,PCI总线上的设备是即插即用的)
内存分为:
静态数据区,代码区,栈区,堆区;
静态数据区(全局区):
全局变量和静态变量存储时放在一块区域;
代码区:
存放函数体的二进制代码;
栈区:
由编译器自动分配释放;
堆区:
一般由程序员分配释放;或OS管理;
信息安全:
保密性完整性可用性可控性可审查性
加密技术:
对称加密技术(发送和接受数据的双方必须使用相同的/对称的密钥对明文进行加密和解密)(DES三重DESRC-5)
数据加密标准:
DES,主要采用替换和移位的方法加密;
非对称加密技术:
需要两个密钥,公开密钥和私有密钥。
算法--RSA算法:
一种公开密钥,安全性在于基于大素数分解的困难性非对称
PKI公开密钥体系
kerberos建立了一个安全的可信任的密钥分发中心KDC对称加密的基础上
认证技术主要结局网络通信过程中通信双方的身份认证。
常用的认证技术有:
hash函数与信息摘要,数字签名SSL协议(安全套协议)数字时间戳技术
数字签名是用于确认发送者身份和消息完整性的一个加密的消息摘要。
数字证书是一个经过证书认证中心(CA)数字签名的包含公开密钥拥有者信息以及公开密钥的文件。
数字证书结局了公开密钥体制下密钥的发布和管理问题。
计算机性能评价:
时钟频率,指令执行速度,等效指令速度法,数据处理速率。
PDR法采用计算PDR值的方法来衡量机器性能,PDR值越大,机器性能越好。
可靠性以平均无故障时间作为衡量指标。
MTBF
MTTR可维护性以平均修复时间
二,程序语言:
命令式程序语言:
采用结构化程序设计,始于fortranCPASCAL
面向对象程序设计语言:
simula提出类和对象的概念。
C++javasmalltalk是面向对象程序设计语言的代表
函数式程序设计语言:
概念来自LISP
逻辑性程序设计语言:
PROLOG
fortran是第一个被广泛用来进行科学计算的高级语言|||algol60主导了二十世纪六十年代程序语言的发展|||COBOL是一种面向事务处理的高级语言|||PHP是一种在服务端执行,嵌入HTML文档的脚本语言|||python是一种面向对象的解释型程序设计语言
delphi是borland公司研制的可视化开发工具,windows下使用
脚本语言又叫动态语言:
Pythonjavascriptaspphpperlnuva都是脚本语言
语法错误:
非法字符拼写错误缺少分号关键字不匹配语义错误:
类型不一致参数不匹配死循环作为除数的变量为0
若局部变量和全局变量名相同,那么在函数内部以局部变量为准。
汇编与编译原理:
操作系统:
作用:
通过资源管理提高计算机系统的效率。
改善人机界面,向用户提供友好的工作环境;
特性:
并发性,共享性,虚拟性,不确定性;功能:
处理机管理文件管理存储管理设备管理作业管理;
类型:
批处理操作系统,分时操作系统,试试操作系统。
UNIX是典型的多用户多任务的分时操作系统;UNIX系统中可以使用的任何计算机资源都可以用一种统一的方法表示。
他们使用“文件”这个概念作为一切资源的抽象表示方法。
UINIX包括两类设备:
块设备和字符设备。
在UNIX中把输入输出设备看做引索文件。
UNIX/Linux文件系统中,直接寻址为10块,一次间接寻址为256块,二次间接寻址为2562块,三次间接寻址为2563块。
偏移为263168字节的逻辑块号是:
11264/1024=11。
块内偏移量=11264-11×1024=0。
由于10<11<256+10,故11264字节在一次间接寻址内。
网络操作系统,分布式操作系统,微机操作系统,嵌入式操作系统。
进程:
前趋图是一个有向无循环图;进程=程序+数据+PCB(进程控制块)进程控制是由操作系统内核kernel中的原语实现的;
信号量机制(dijkstra提出)是一种解决进程同步与互斥的工具。
信号量分为公用信号量和私用信号量;
PV操作是实现进程同步与互斥的常用方法:
P操作定义:
S=S-1,若S>=0,则执行P操作的进程继续执行,否则若S<0,则置该进程为阻塞状态,因为无资源可用,并将其插入阻塞队列;V操作定义:
S=S+1,若S>0,则执行V操作的进程继续执行,否则若S<=0,则从阻塞队唤醒一个进程,并将其插入就绪队列,执行V操作的进程继续执行;
利用PV操作实现进程的互斥:
将信号量mutex的初值设为1,当进程进入临界区的时候执行P操作,退出临界区时执行V操作;
有些资源一次只能供一个进程使用,称为临界资源CR(criticalresource).管理原则:
有空则进,无空则等,有限访问,让全等待。
中断响应时间是指从发出中断请求到进入中断处理所用的时间。
高级通信方式包括共享存储模式(共享某些数据结构货存储区实现进程之间的通信),消息传递模式(进程之间的数据交换以消息为单位),管道通信(管道支用于连接一个读进程和写进程,以实现他们之间通信的共享文件pipe文件);
管程Monitor是由一些共享数据一组能为并发进程所执行的作用在共享数据上的操作的集合,初始化代码以及存取权组成。
进程调度:
FCFS先来先服务。
时间片轮转。
优先级调度。
多级反馈调度(时间片和优先级的综合和发展)。
三级调度:
高(决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程)中(决定处于交换区中的就绪进程哪个可以调入内存,以便直接参与对CPU的竞争)低(决定处于内存中的就绪进程哪个可以占用cpu,最活跃最重要,对系统影响很大);
死锁:
互斥条件,不可抢占条件。
占有且申请条件,循环等待条件。
处理:
死锁预防,死锁避免(银行家算法,需要很大的系统开销),死锁检测(允许死锁产生,检测产生再解除),死锁解除(重新启动系统,资源剥夺撤销进程);
若系统有五个进程共享若干个资源R,每个进程需要四个R,则系统不发生死锁的资源R最少数目是16个。
线程是比进程更小的能独立运行的基本单位,是处理器分配的最小单元。
线程作为调度和分配的基本单位,进程作为独立分配资源的单位。
存储管理:
地址重定位是指将逻辑地址变换成主存物理地址的过程。
静态重定位是指在程序装入内存时已经完成了逻辑地址到物理地址的变换,在程序的执行期间将不再发生变化。
动态重定位是指在程序运行期间完成逻辑地址到物理地址的变化,其实现机制要依赖硬件地质变化机构,如基地址寄存器BR。
存储管理方案:
固定分区(在系统生成的时候已经主存划分为若干的区域)可变分区(在作业装入是进行的,分区的大小可不等,刚刚等于作业的大小(请求和释放分区算法:
最佳适应算法,最差适应算法,首次适应算法,循环适应算法))可重定位分区;
分区保护:
采用上界下界寄存器保护。
采用基址/限长寄存器保护。
分页存储管理:
将一个进程的地址空间划分为若干个大小相等的区域叫做页。
将主存空间划分成与页相同大小的若干个物理块,称为块或者页框。
再将进程的每一页离散的分配在主存的多个物理块中后,系统为每个进程建立了一张页面映射表,称为页表。
地址变换机构的基本任务就是利用表页把用户程序中的逻辑地址变换成主存中的物理地址,实际行就是将用户程序中的页号变换成主存中的物理块号。
在系统这设置页表寄存器,用来存放页表的始址和页表的长度。
页式存储管理至少需要两次访问内存。
联想寄存器是一组高速存储器组成,称之为快表,用来保存当前访问频率搞得少数活动页的页号及相关信息。
只存放当前进程最活跃的少数几页。
分段式存储管理:
作业的地址空间被划分为若干个段,每个段都是一组完整地逻辑信息,如有主程序段,子程序段,数据段和堆栈段。
基址S和段内地址d相加,得到要访问的主存物理地址。
段面是信息的逻辑单位,二维。
页面是信息的物理单位,一维。
段页式系统是先整个主存划分为大小相等的存储块,将程序按逻辑关系分为若干个块,每个段赋予一个段名,每个段再划分若干个页。
其中段表中的内容不再是段的主存始址和段长,而是页表始址和页表长度。
虚拟存储器是为了扩大主存容量而采用的一种设计方法,其容量是由计算机的地址结构决定的。
(实现:
请求分页系统,请求分段系统,请求段页式系统)
页面置换算法:
最佳值换算法(难以实现,通常用于评估其他算法)先进先出FIFO最近最少使用LRU最近未用NUR工作集(在指在某段时间间隔里,进程要访问的页面集合w(t,△(窗口尺寸)))
设备管理:
特性分类(存储设备,输入输出设备)使用性质分类(独占设备共享设备虚拟设备(把某种独占设备改造成可由几个进程共享的设备))
设备采用的相关缓冲技术:
通道技术DMA技术(直接主存存取)缓冲技术SPOOLing技术(将独占设备改造成共享设备)
当操作系统需要使用某个硬件的时候,
磁盘驱动调度:
先来先服务最短寻道时间优先扫描算法单向扫描调度算法(不考虑访问者等待的先后次序,总是从0号柱面开始向里面扫描)
旋转调度算法:
当进程请求读磁盘时,操作系统先进行移臂操作,再进行旋转调度。
常用的文件系统类型有FATVfatNTFSExt2HPFS
文件的存储设备管理系统位图向量法(用一个向量来描述整个磁盘每个字的每一位对应一个物理块)空闲块链表连接法(使用链表将空闲表组织起来)
文件存储空间的管理:
空闲表法位示图空闲块链成组链接法
文件的逻辑结构:
有结构的记录式文件(定长记录,变长记录),无结构的流式文件
文件的物理结构:
连续结构链接结构引索结构多个物理块的引索表
系统在管理文件时所必须的数据结构是文件存在的唯一标识,称FCP(基本信息保护信息位置信息使用信息)
文件的使用:
目录管理命令文件控制命令文件存取命令
文件的共享:
UNIX中ln命令可以将多个文件名与一个文件体建立链接
作业是系统为完成一个用户的计算任务所做的工作总和;(提交后背执行完成)
作业响应时间为作业进入系统的等待时间与作业的执行时间之和。
UNIX:
文件系统的目录结构是树型带交叉勾连的。
结构:
引导块-超级块-引索节点区-数据存储区
open打开close关闭read读取stat查属性mkdir创建文件目录chown改变文件的许可权creat创建文件cd改变当前目录link建立连接unlink删除连接
fork创建进程exec改变执行程序的映像exit结束进程wait暂停进程的执行kill发动软中断信号msgsnd发送信息msgrcv接受信息
UNIX系统可以使用的任何计算机资源都用一种统一的方法表示,他们选择用文件这个概念作为一切资源的抽象表示方法。
UNIX包括两类设备:
块设备和字符设备。
设备管理特点:
具有相似的层次结构。
将设备作为特殊文件。
赋予文件名。
采用完善的缓冲区管理技术,引用预先读,异步写,延迟写方式进一步提高系统效率。
>>><输出输入cat将数据输入到屏幕上
"|"表示UNIX中的管道
HOME用户主目录PATH定义shell在寻找命令时的查找路径PS1系统基本提示符默认$PS2系统辅助提示符IFS内部字段分隔符MAIL存放用户的邮件路径名TEAM定义用户使用的终端类型CDPATHCD命令要查找的目录表LOGNNAME用户的注册名SHELLshell程序的路径名MANPATH连接动态库的搜索路径
软件工程:
软件生存周期:
可行性分析与项目开发计划(用户项目负责人系统分析师)需求分析(用户项目负责人系统分析师)概要设计详细设计(系统分析师软件设计师)编码测试(另一部门的软件设计师或者系统分析师)维护
生存周期模型:
瀑布模型(缺乏灵活性,特别是无法解决软件需求不明确的问题)演化模型(在原型的基础上改进)螺旋模型(复杂大型软件制定计划风险分析实施工程用户评估)喷泉模型(以用户需求为动力以对象作为驱动的对象适合于面向对象的开发方向具有迭代行和无间隙性,允许各开发活动交叉迭代地进行)
软件开发方法:
结构化方法(结构化分析结构化设计结构化编程面向数据流的开发方法)
jackson方法(面向数据结构的开发方法因此形成了JSP再发展形成JSDJSD方法是一个完整地系统开发方法。
首先建立现实世界的模型,再确定系统的功能需要,对需求的描述特别强调操作之间的时序性,以事件作为驱动的)
原型化方法(适合于用户需求不清业务理论不确定需求经常变化规模不算很大和复杂时)
面向对象开发方法(分析设计实现有BoochCoadOMT直到199推出UML,统一建模语言,面向对象的标准建模语言)
需求分析:
确定待开发软件的功能性能数据界面等要求。
(确定软件的综合要求分析软件系统的数据要求导出系统的逻辑模型修正项目开发计划如有必要开发原型模型)
软件开发项目管理:
成本:
1成本估算方法:
自顶向下自底向上差别估计砖家估计类推估算法算法估计
2成本模型估计:
Putnam(动态多变量模型)和COCOMO(最精确最易于使用)
风险分析:
风险识别风险预测风险评估风险控制(RMMM计划)
进度管理:
Gantt图项目计划评审技术(PRET图)
人员管理
软件配置管理SCM:
基线:
连续工作的断点,为检查和肯定阶段成功。
软件配置项:
SCI:
配置管理的基本单位。
版本控制。
变更控制。
软件过程管理:
CMM软件过程成熟度模型。
软件七原则:
按软件生存周期分阶段制定计划并认真实施,逐阶段进行确认。
坚持严格的产品控制。
使用现代程序设计技术。
明确责任。
用人少而精。
不断改进开发过程。
软件成熟度:
初始级。
可重复级。
已定义级。
已管理级。
优化级。
统一过程UP:
是一种“用例和风险驱动,以架构为中心,迭代并且增量”的开发过程,由UML方法和工具支持。
起始阶段:
生命周期目标,精化阶段:
生命周期架构,构建阶段:
初始运作阶段,移交阶段:
产品发布,产生阶段。
敏捷开发:
总体目标是通过“尽可能早的持续的对有价值的软件的交付”(极限编程水晶法并列争求法自适应软件开发)
9126质量模型:
功能性(适合准确互用依从安全)可靠性(成熟容错易恢复)易使用(易理解易学易操作)效率(时间特性资源特性)可维护性(易分析易改变稳定易测试)可移植性(适应易安装一致易替换)
Mccall软件质量模型从软件产品的运行(正确性可靠性易用性效率完整性),修正(可维护性灵活性可测试性),和转移(可转移性复用性互用性)三个方面确定了11个质量特性
软甲复杂性:
规模难度结构智能度代码行数度量法Macabe度量法
软件评审:
设计质量(设计的规格说明书符合用户的要求)程序质量(程序按照设计规格说明的情况正确执行)
容错:
避开错误技术容错技术。
容错的一般方法:
结构冗余(静态冗余。
动态冗余。
)信息冗余。
时间冗余。
荣誉附加技术。
系统分析基础:
结构化分析方法SA:
基于数据流的需求分析方法。
强调开发方向的合理性以及所开发软件的结构合理性。
分析模型:
数据流图DFD数据字典加工逻辑的描述。
系统设计知识:
概要设计:
体系结构设计,模块设计,数据结构与算法设计,接口设计。
详细设计:
为软件结构图中的每一个模块确定实现算法和局部数据结构。
工具可以分为图形(程序流程图N-S盒图PADHIPO)表格(判定表)语言(PDL伪码)三种。
设计基本愿意:
模块化,信息隐蔽,模块独立(尽量低耦合高内聚)。
1)内容耦合。
当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的耦合被称为内容耦合。
内容耦合是最高程度的耦合,应该避免使用之。
(2)公共耦合。
两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。
在具有大量公共耦合的结构中,确定究竟是哪个模块给全局变量赋了一个特定的值是十分困难的。
(3)外部耦合。
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
(4)控制耦合。
一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合。
(5)标记耦合。
若一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和C之间存在一个标记耦合。
(6)数据耦合。
模块之间通过参数来传递数据,那么被称为数据耦合。
数据耦合和最低的一种耦合形式,系统中一般都存在这种类型的耦合,因为为了完成一些有意义的功能,往往需要将某些模块的输出数据作为另一些模块的输入数据。
(7)非直接耦合。
两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
内聚按强度从低到高有以下几种类型:
(1)偶然内聚
如果一个模块的各成分之间毫无关系,则称为偶然内聚,也就是说模块完成一组任务,这些任务之间的关系松散,实际上没有什么联系。
(2)逻辑内聚
几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。
如一个模块读取各种不同类型外设的输入。
尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。
(3)时间内聚
如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。
(4)通信内聚
如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。
(5)顺序内聚
如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。
(6)功能内聚
模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。
(7)信息内聚
模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。
这个模块将根据不同的要求,确定该模块执行哪一个功能。
由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。
面向数据结构的设计方法:
jackson方法。
软件测试:
占开发工作的40%以上。
甚至3-5倍。
白盒测试:
逻辑测试。
(保证所测模块中的每一个独立路径至少执行一次)
黑盒测试:
功能测试。
(等价类划分边界值分析错误猜测因果图)
测试步骤:
单元测试,集成测试,确认测试,系统测试,压力测试,性能测试,可靠性测试,安装测试。
软件维护:
正确性(改正性)维护17-20,适应性维护18-25,完善性维护50-60,预防性维护。
调试:
试探法。
回溯法。
对分查找法。
归纳法。
演绎法。
数据流图:
四种基本符号:
立方形表示数据的源点或终点,代表了外部实体;
圆角矩阵代表了变化数据的处理,
开口矩阵或两条平行线,代表了数据存储文件;