说明:
此笔记是在使用软考真题APP过程中做的,按照考点频率高 到 低的排列,考点后的数字为真题数量。
我是用来查缺补漏用的,知识点并不完整,如果需要完整的笔记,请移步到我的其他笔记:完整笔记地址
专业英语(110)
业务用例,业务对象:在采用面向对象方法进行业务建模时,业务用例和参与者一起描述(组织或企业所支持的业务过程) 而业务对象模型描述( 业务结构以及结构元素如何完成业务用例)。
面向对象分析阶段:认定对象,组织对象,对象间的相互作用,基于对象的操作。
面向对象设计阶段:识别类及对象、定义属性、定义服务、识别关系、识别包。
面向对象程序设计:程序设计范型、选择一种OOPL。
面向对象测试:算法层、类层、模板层、系统层。
在python中,TensorFlow、Keras和Pytorch是目前深度学习的主要框架,也是入门深度学习必须掌握的三大框架。Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
泛化概化关系:类的公共属性和行为抽象成超类然后其属性和方法被那些子类继承
聚合关系:表示一个较大的“整体”类包含一个或多个较小的“部分”类:
合成关系:表示关系中“整体”负责其“部分”的创建和销毁,如果“整体”不存在了,“部分”也将不存在。
网络系统设计中设计最为合理是让最短故障时间达到最优
逻辑式语言是一类以形式逻辑为基础的语言。函数式语言以补演算为基础。命令式语言是基于动作的语言,在这种语言中,计算被看成是动作的序列。因此,通过指明一系列可执行的运算及运算的次序来描述计算过程是命令式语言的特点。
经典的C语言目前仅支持过程式程序
设计范型,这是一种基于任务分解的、自上而下的程序设计方法。数据抽象程序设计范型允许将问题空间和解空间中的事物、概念等采用类机制来表示。面向对象程序设计范型比数据抽象更进一步,支持继承、多态等,更加符合客观世界的规律。泛型程序设计即设计出通用算法、通用类型,并使它们应用于多种数据类型。
C++语言以C语言为基础,增加了后三种程序设计范型的支持,它是目前使用广泛的程序设计语言之一。
流水线执行时间=流水线建立时间+(n-1)*流水线周期 整条时间+(条数-1)*最长
对称加密又称为共享密钥加密,常见的对称加密算法有:DES,三重DES. RC-5、IDEA AES
非对称加密又称为公开密钥加密:
常见的公钥加密算法(非对称加密)有: RSA、ElGamal、背包算法、Rabin(RSA的特例)、迪菲-赫尔曼密钥交换协议中的公钥加密算法、椭圆曲线加密算法(Elliptic Curve Cryptography, ECC) ;DSA数字签名(又称公钥数字签名),将摘要信息用发送者的私钥加密,接收者只有用发送者的公钥才能解密被加密的摘要信息,也是属于公开密钥加密算法
DES是典型的私钥加密体制,属于对称加密,不属于公开秘钥加密。
公钥体系中,私钥用于(解密和签名 ),公钥用于(加密和认证 ) 。 用公钥加密、私钥解密,可实现保密通信;用私钥加密、公钥解密,可实现数字签名。
加密一般分为 对称加密(Symmetric Key Encryption) 非对称加密(Asymmetric Key Encryption)。 对称加密又分为分组加密和序列密码。 、
(1)分组加密,也叫块加密(block cyphers),一次加密明文中的一个块。是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组。具有代表性的块加密算法有DES,AES,3DES等。
(2)序列加密,也叫流加密(stream cyphers),一次加密明文中的一个位。是指利用少量的密钥(制乱元素)通过某种复杂的运算(密码算法)产生大量的伪随机位流,用于对明文位流的加密。 解密是指用同样的密钥和密码算法及与加密相同的伪随机位流,用以还原明文位流。
面向对象开发方法有Booch方法、Coad方法和OMT方法。Jackson方法是一种面向数据结构的开发方法。
面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、定义对象的操作和定义对象的内部信息。而分析阶段最重要的是理解问题域的概念,其结果将影响整个工作。经验表明,从应用定义域概念标识对象是非常合理的。因此,面向对象分析的第一步就是确定问题域。
多态有参数多态、包含多态、过载多态和强制多态四类。
参数多态:应用广泛、最纯的多态。
包含多态:同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。
强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。
过载多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。
经典的MVC模式中,边界对象表示了系统与参与者之间的接口,该对象从参与者处收集信息,并将之转换为二种被实体对象和控制对象使用的形式。
在白盒测试法中,从弱到强依次为语句覆盖、判定覆盖、 条件覆盖和路径覆盖。
单元测试测试以下几个方面:模块接口、局部数据结构、执行路径、错误处理和边界。
软件维护工具主要有:
1、版本控制工具;2、文档分析工具;3、开发信息库工具;、4、逆向工程工具;5、再工程工具;
分治法一般用于将大问题分解为一个或多个规模较小的子问题,通常采用自顶向下的递归方法来求解。
动态规划求解问题的特征是,问题具有最优子结构和重叠子问题,求解时一般采用自底向上的方法来进行。
贪心法求解问题的特征是,问题具有最优子结构和贪心选择性质,求解时可以用自底向上或自顶向下的方法进行。
回溯法和分支限界法是系统搜索解空间来求解问题的方法,一般先定义解空间,前者以深度优先的方式搜索,后者通常以广度优先的方式搜索。
优先队列是一种常用的数据结构,通常用堆实现。对应于大顶堆和小顶堆,存在最大优先队列和最小优先队列。以最大优先队列为例,优先队列除了具有堆上的一些操作, 如调整堆、构建堆之外,还有获得优先队列的最大元素,抽取出优先队列的最大元素, 向优先队列插入一个元素和增大优先队列中某个元素的值。其中除了获得优先队列的最大元素的时间复杂度为(Θ1)之外,其他几个操作的时间复杂度均为二叉树的高度,即Θ(lgn)。
在类与类之间的5种关系中,从弱到强依次为:依赖,关联,聚合,组合和继承。因此依赖关系最弱,继承表示类与类之间关系最强
状态图:
当对系统、类或用例的动态方面建模时,通常是对反应型对象建模。
状态图通常包含简单状态和组合状态、转换(事件和动作)。
状态是指对象的生命周期中某个条件或者某个状态,在此期间对象将满足某些条件、执行某些活动或等待某些事件,是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。
对于整型信号量,可以根据控制对象的不同被陚予不同的值。通常将信号量分为公用信号暈和私用信号量两类。其中,公用信号量用于实现进程间的互斥,初值为1或资源的数目;私用信号量用于实现进程间的同步,初值为0或某个正整数。信号量S的物理意义是:S≥0表示某资源的可用数,若S<0,则其绝对值表示阻塞队列中等待该资源的进程数。
互斥信号量初始值一般是1,因为两个进程之间的缓冲区通常是1个。对于同步信号量,前一个进程的同步信号量的初始值一般是n,后一个同步信号量的初始值一般是0
线程共享的内容包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录、进程用户ID与进程组ID
线程独有的内容包括:线程ID、寄存器组的值、线程的堆栈、错误返回码、线程的信号屏蔽码。
HTML基本标签的使用。alink用于设置正在被击中的链接的颜色。 vlink用于设置已使用的链接的颜色
常量有类型属性,没有存储单元。
脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,通常以文本(如 ASCII)保存,只在被调用时进行解释或编译。Python是一种脚本语言。Python是一种脚本语言。脚本语言主要采用解释方式实现。
与编译器相比,解释器( 参与运行控制,程序执行的速度快)。
传值调用和引用调用是常用的两种参数传递方式。在传值调用方式下,是将实参的值传递给形参,该传递是单方向的,调用结束后不会再将形参的值传给实参。在引用调用方式下,实质上是将实参的地址传递给形参,借助指针在间接访问数据方式下(或者将形参看作是实参的别名),在被调用函数中对形参的修改实质上是对实参的修改。
中国著作权法中对公民作品的发表权的保护期限是(没有限制)。
甲公司的某个注册商标是乙画家创作的绘画作品,甲申请该商标注册时未经乙的许可,乙认为其著作权受到侵害。在乙可采取的以下做法中,错误的是(首先提起诉讼,如对法院判决不服再请求商标评审委员会进行裁定)。错误原因:考查一般争议处理的流程。对于任何争议基本上都是采取的先找主管行政管理部门进行仲裁,仲裁不成功再进行诉讼。
著作权中修改权、署名权、保护作品完整权都是永久保护的
著作权、邻接权、专利权、商标权、商业秘密权和集成电路布图设计权属于知识产权的范围。物权不属于知识产权的范围。
软件许可使用一般有独占许可使用、独家许可使用和普通许可使用三种形式。
(1)独占许可使用,许可的是专有使用权,实施独占许可使用后,软件著作权人不得将软件使用权授予第三方,软件著作权人自己不能使用该软件;
(2)独家许可使用,许可的是专有使用权,实施独家许可使用后,软件著作权人不得将软件使用权授予第三方,软件著作权人自己可以使用该软件;
(3)普通许可使用,许可的是非专有使用权,实施普通许可使用后,软件著作权人可以将软件使用权授予第三方,软件著作权人自己可以使用该软件。
ARP 报文分为ARP Request和ARP Response,ARP Request是广播发送 ARP Response是单播的报文回复。
浏览网页、Telnet远程登录以及发送邮件应用均不允许数据的丢失,需要采用可靠的传输层协议TCP,而VoIP允许某种程度上的数据丢失,采用不可靠的传输层协议UDP。
使用ping命令进行网络检测,按照由近及远原则,首先执行的是ping127.0.0.1,其次是ping本地IP,再次是ping默认网关,最后是ping远程主机。
Netstat用于显示网络相关信息;Ping用于检查网络是否连通;Msconfig用于Windows配置的应用程序;Cmd称为命令提示符,在操作系统中进行命令输入的工作提示符。
netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
IPSec工作于网络层,为IP数据报文进行加密。
PP2P工作于数据链路层,用于链路加密。
HTTPS是HTTP与SSL的结合体,为传输层以上层次数据加密。
TLS安全传输层协议用于在两个通信应用程序之间提供保密性和数据完整性。
对高级语言源程序进行编译的过程中,有限自动机(NFA或DFA)是进行( 词法分析)的适当工具。
语法分析方法有多种,根据产生语法树的方向,可分为自底向上和自顶向下两类。递归下降分析法和预测分析法是常用的自顶向下分析法。算符优先分析法和LR分析法属于自底向上的语法分析方法。
自顶向下: 1.递归下降法 2.预测分析法
自底向上: 1.算符优先分析法 2.LR分析法(移进-归约)
后缀式(逆波兰式)是把运算符写在运算对象的后面,例如,把a+b写成ab+,所以也称为后缀式。借助栈可以方便地对后缀式进行求值。
冗余是指对于实现系统规定功能是多余的那部分资源,包括硬件、软件、信息和时间。通常冗余技术分为4类:
(1)结构冗余,按其工作方法可以分为静态、动态和混合冗余;
(2)信息冗余,指的是为了检测或纠正信息在运算或传输中的错误另外加的一部分信息;
(3)时间冗余,是指以重复执行指令或程序来消除瞬时错误带来的影响;
(4) 冗余附件技术,是指为实现上述冗余技术所需的资源和技术。
CPU中通常设置一些寄存器,用于暂时存储程序运行过程中的相关信息。其中,通用寄存器常用于暂存运算器需要的数据或运算结果,地址寄存器和数据寄存器用于访问内存时的地址和数据暂存,指令寄存器用于暂存正在执行的指令,程序计数器中存放待执行的指令的地址。
各种数据在计算机中表示的形式称为机器数,其特点是采用二进制计数制,数的符号用0、1表示,小数点则隐含表示而不占位置。机器数对应的实际数值称为数的真值。
指令寄存器是CPU中的关键寄存器,其内容为正在执行的指令,显然其位数取决于指令字长。
计算机系统采用总线结构对存储器和外设进行协调。总线将信号线分成三大类,并归结为数据总线(Date Bus)、地址总线(Address Bus)和控制总线(Control Bus) 但总线结构是CPU总线、内存总线和IO总线
计算机系统中的CPU内部对通用寄存器的存取操作是速度最快的,其次是Cache,内存的存取速度再次,选项中访问速度最慢的就是作为外存的硬盘。它们共同组成分级存储体系来解决存储容量、成本和速度之间的矛盾。
绝对路径是从根目录开始的路径,以/代表根目录。相对路径是从当前路径开始的路径。
嵌入式操作系统的特点:
(1)微型化:从性能和成本角度考虑,希望占用的资源和系统代码量少。
(2)可定制:从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用的需求。
(3)实时性:嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高。
(4)可靠性:系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施
(5)易移植性:为了提高系统的易移植性,通常采用硬件抽象层和板级支持包的底层设计技术。
有关于寻址方式查询速度:
立即寻址是操作数直接在指令中,速度是最快的;
寄存器寻址是将操作数存放在寄存器中,速度中间;
直接寻址方式是指令中存放操作数的地址,速度最慢。
RISC适合流水线,CISC不适合。
RISC是精简指令集系统计算机简称,使用简单的指令。CISC是复杂指令集系统计算机简称,使用复杂的指令。
RISC多寄存器寻址,所以会在实现过程中增加通用寄存器,CISC不需要采用很多通用寄存器。
RISC采用硬布线逻辑(即组合逻辑控制器)实现,CISC采用微码(即微程序)实现。
在CPU的寄存器中,( 指令寄存器)对用户是完全透明的。
防火墙最重要的特性就是利用设置的条件,监测通过的包的特征来决定放行或者阻止数据,同时防火墙一般架设在提供某些服务的服务器前,具备网关的能力,用户对服务器或内部网络的访问请求与反馈都需要经过防火墙的转发,相对外部用户而言防火墙隐藏了内部网络结构。防火墙作为一种网络安全设备,安装有网络操作系统,可以对流经防火墙的流量信息进行详细的日志和审计。
逻辑运算:
逻辑与:两数都为1,则结果1,否则0。
逻辑或:两数中一个为1,结果1,否则0。逻辑异或:两数不同,结果1,否则0。
&&:都为真时为真,其余为假,||:都为假时为假,其余为真,!:表否定
算术左移,就是在原有的基础上*2
算术右移,就是在原有的基础上/2
根据关键字序列构造二叉排序树的基本过程是,若需插入的关键字大于树根,则插入到右子树上,若小于树根,则插入到左子树上,若为空树,则作为树根结点。
完全二叉树:除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干结点.
二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点;把二叉树的所有结点安排成为一个恰当的序列,反映出节点中的逻辑关系;用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点编号。
“中间代码”是一种简单且含义明确的记号系统,与具体的机器无关,可以有若干种形式。可以将不同的高级程序语言翻译成同一种中间代码。由于与具体机器无关,使用中间代码有利于进行与机器无关的优化处理,以及提高编译程序的可移植性。
使用中间代码也有助于提高编译程序的可移植性。常用的中间代码有后缀式、三元式、四元式和树等形式。
编译过程中为变量分配存储单元所用的地址是逻辑地址,程序运行时再映射为物理地址。
符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地査找、插入、修改和删除等操作。 符号表的建立可以始于词法分析阶段,也可以放到语法分析和语义分析阶段,但符号表的使用有时会延续到目标代码的运行阶段。
目标代码生成是编译器工作的最后一个阶段。这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码,这个阶段的工作与具体的机器密切相关。因此在目标代码生成阶段分配寄存器。
语法分析方法分为两类:自上而下(自顶向下)分析法和自下而上(自底向上)分析法,递归下降分析法和预测分析法属于自上而下分析法,移进-归约分析法属于自下而上(自底向上)分析法。
“三网合一”是将电信网、广播电视网以及互联网进行整合,实现业务互联互通的一种网络解决方案。
中国自主研发的3G通信标准是 ( TD-SCDMA) 。
静态路由是固定路由,从不更新除非拓扑结构发生变化;洪泛式将路由信息发送到连接的所有路由器,不利用网络信息;随机路由是洪泛式的简化;自适应路由依据网络信息进行代价计算,依据最小代价实时更新路由。
IGMP(Internet Group Management Protocol)互联网组管理协议是TCP/IP 协议族中负责IP组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
ICMP (Internet control Message Protocol)与IP协议同属于网络层,用于传送有关通信问题的消息,例如数据报不能到达目标站,路由器没有足够的缓存空间,或者路由器向发送主机提供最短通路信息等。ICMP报文封装在IP数据报中传送,因而不保证可靠的提交。
SSH通过在网络中创建安全隧道(英语:secure channel)来实现SSH客户端与服务器之间的连接,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
Telnet是一种应用层协议,使用于互联网及局域网中,使用虚拟终端的形式,提供双向、以文字字符串为主的命令行接口交互功能。属于TCP/IP协议族的其中之一,是互联网远程登录服务的标准协议和主要方式,常用于服务器的远程控制,可供用户在本地主机执行远程主机上的工作。
RFB( Remote Frame Buffer 远程帧缓冲) 协议是一个用于远程访问图形用户界面的简单协议
路由协议是一种允让许数据包在路由器之间传送信息的一种协议。
IPSec工作于网络层,为IP数据报文进行加密。
PP2P工作于数据链路层,用于链路加密。
HTTPS是HTTP与SSL的结合体,为传输层以上层次数据加密。
netstat 是控制合命令。是一个监控 TCPIP 网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
nslookup可以指定查询的类型,可以查到DNS记录的生存时间,还可以指定使用哪个DNS 服务器进行解释。在己安装 TCP/IP 协议的计算机上面均可以使用这个命令。
利用“ping” 命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。
tracert〔跟踪路由)是路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径。Tracert命令使用 IP生存时间(TTL)字段和ICMP 错误消息来确定从一个主机到网络上其他主机的路由
在TCP/IP网络中中,建立可靠通信是在传输层,在OSI/RM中在传输层来实现的。
防火墙:
(1)包过滤防火墙通过检查每个数据包的源地址、目的地址、端口和协议状态等因素,
确定是否允许该数据包通过。
(2)应用级网关防火墙是在应用层上实现协议过滤和转发功能,针对特别的网络应用协议制定数据过
滤规则。
(3)数据库防火墙技术是针对关系型数据库保护需求应运而生的一种数据库安全主动防御技术,数据库
防火墙部署于应用服务器和数据库之间。
(4)Web 防火墙是入侵检测系统。从广义上来说,Web 应用防火墙就是应用级网站的安全综合解决方案,
在概念上与传统意义上的防火墙有一定的区别。
I/O软件隐藏了I/O操作实现的细节。I/O软件向用户提供的是逻辑接口。I/O软件将硬件与较高层次的软件隔离开来,而最高层软件向应用提供一个友好的、清晰且统一的接口,方便用户使用。
基于构件的软件开发,主要强调在构建软件系统时复用已有的软件“构件”,在检索到可以使用的构件后,需要针对新系统的需求对构件进行合格性检验、适应性修改,然后集成到新系统中。
需求分析确定软件要完成的功能及非功能性要求;概要设计将需求转化为软件的模块划分,确定模块之间的调用关系;详细设计将模块进行细化,得到详细的数据结构和算法;编码根据详细设计进行代码的编写,得到可以运行的软件,并进行单元测试。
对项目需求理解并了解相关领域,可以采用瀑布开发模型。演化模式适用于对软件需求缺乏准确认识的情况。螺旋模型在开发过程中加入风险分析。喷泉模型适合于面向对象的开发方法。
软件需求包括功能需求、非功能需求和设计约束三个方面的内容。功能需求是所开发的软件必须具备什么样的功能:非功能需求是指产品必须具备的属性或品质,如可靠性、性能、响应时间和扩展性等等。设计约束通常对解决方案的一些约束说明。
瀑布模型将开发阶段描述为从一个阶段瀑布般地转换到另一个阶段的过程。
原型模型中,开发人员快速地构造整个系统或者系统的一部分以理解或澄清问题。螺旋模型将开发活动和风险管理结合起来,以减小风险,原型模型不适宜大规模软件的开发。
喷泉模型开发过程模型以用户需求为动力,以对象为驱动,适合于面向对象的开发方法。
概要设计的内容可以包含系统构架、模块划分、系统接口、数据设计4个主要方面的内容,不包括模块内算法设计。
数据的机密性(保密性)是指数据在传输过程中不能被非授权者偷看;
数据的完整性是指数据在传输过程中不能被非法篡改,本题涉及到修改的只有完整性;
数据的真实性(不可抵赖性)是指信息的发送者身份的确认或系统中有关主体的身份确认,这样可以保证信息的可信度;
可用性指的是发送者和接受者双方的通信方式正常。
(1)属性冲突。同一属性可能会存在于不同的分E-R图,由于设计人员不同或是出发点不同,对属性的类型、取值范围和数据单位等可能会不一致。
(2)命名冲突。相同意义的属性在不同的分E-R图中有着不同的命名,或是名词相同的属性在不同的分E-R图中代表这不同的意义。
(3)结构冲突。同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体,而在另一分E-R图中又被抽象为属性,需要统一。本题属于结构冲突没有实体冲突的说法。
数据流图(DFD)主要由实体、数据存储、处理过程和数据流四部分组成。在顶层数据流图中,将系统描述成一个处理过程,而其它的是与该处理过程相关的输入输出流,因此顶层数据流图描述了系统的输入与输出。
系统结构图又叫作模块结构图,亡反映了系统的功能实现和模块之间的联系与通信反映了系统的总体结构。模块结构图包括模块,模块之间的调用关系、模块之间的通信和辅助控制符号。
有系统开发计划,包括工作任务分解表、PERT图、甘特图和预算分配表等。总体规划和开发合同用于与系统分析人员在系统规划和系统分析阶段的沟通。测试计划用于系统测试人员与系统开发人员之间的沟通。
McCall软件质量模型从软件产品的运行、修正和转移三个方面确定了11个质量特性。其中产品运行方面包括正确性、可靠性、易使用性、效率和完整性;产品修正方面包括可维护性、灵活性和可测试性;产品转移方面包括可移植性、 复用性和互用性。
极限编程(XP)是敏捷开发的典型方法之一,是一种轻量级(敏捷)、高效、低风 险、柔性、可预测的、科学的软件开发方法,它由价值观、原则、实践和行为4个部分组成。其中4大价值观为沟通、简单性、反馈和勇气。
极限编程XP是一种轻量级的软件开发方式,由价值观、原则、实践和行为4个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期。
极限编程包含12个实践操作。其中,集体所有权表示任何开发人员可以对系统任何部分进行改变,结对编程实际上存在一个非正式的代码审查过程,可以获得更高的代码质量。据统计,结对编程的编码速度与传统的单人编程相当。
其十二个最佳实践包括:计划游戏、小的发布、系统隐喻、简单设计、测试驱动、重构、结对编程、集体所有权、持续集成、每周工作40小时、现场客户和编码标准。
(1)水晶法Crystal认为每一个不同的项目都需要一套不同的策略、约定和方法论。
(2)并列争球法Scrum使用迭代的方法,并按需求的优先级来实现产品。其中把每30天一次的迭代成为一个冲刺,并按需求的优先级来实现产品。多个自组织和自治小组并行地递增实现产品,并通过简短的日常情况会议进行协调。
统一过程
統一过程(UP)定义了初启阶段、精化阶段、构建阶段、移交阶段和产生阶段,各个阶段达到某个里程碑时结束 ,其中:
(1) 初启阶段的里程碑是生命周期目标
(2) 精化阶段的里程碑是生命周期架构
(3) 构建修段的里程碑是初始运作功能
(4) 移交阶段的里程碑是产品发布。
模块结构图的主要组成有:模块、调用、控制信息和转接符号。
模块的作用范围定义为受该模块内一个判定影响的模块集合,模块的控制范围为模块本身以及所有直接或间接从属于该模块的模块集合。其作用范围应该在控制范围之内。
结构化设计主要包括:
①体系结构设计:定义软件的主要结构元素及其关系。
②数据设计:基于实体联系图确定软件涉及的文件系统的结构及数据库的表结构。
③接口设计:描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。
④过程设计:确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。
结构化分析的输出是结构化设计的输入,设计活动依据分析结果进行。接口设计是描述软件与外部环境之间的交互关系,软件内模块之间的调用关系,而这些关系的依据主要是分析阶段的数据流图。
结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。
体系结构设计:定义软件系统各主要部件之间的关系。
(1)数据设计:基于E-R图确定软件涉及的文件系统的结构及数据库的表结构。
(2)接口设计(人机界面设计):软件内部,软件和操作系统间以及软件和人之间如何通信。
(3)过程设计:系统结构部件转换成软件的过程描述。确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。
需求分析阶段的任务是:对现实世界要处理的对象(组织、部门、企业等)进行详细调查,在了解现行系统的概况,确定新系统功能的过程中,确定系统边界、收集支持系统目标的基础数据及其处理方法。
逻辑设计阶段的任务之一是对关系模式进一步的规范化处理。因为生成的初始关系模式并不能完全符合要求,会有数据冗余、更新异常存在,这就需要根据规范化理论对关系模式进行分解,以消除冗余和更新异常。不过有时根据处理要求,可能还需要增加部分冗余以满足处理要求。逻辑设计阶段的任务就需要作部分关系模式的处理,分解、合并或增加冗余属性,提高存储效率和处理效率。
根据主属性的定义,“包含在任何一个候选码中的属性叫做主属性(Prime attribute),否则叫做非主属性(Nonprime attribute)”,所以,关系中的3个属性都是主属性。
模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。耦合程度越低,内聚程度越高,则模块的独立性越好。存在多种模块之间的耦合类型,从低到高依次为非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合和内容耦合。
耦合表示模块之间联系的程度。紧密耜合表示橫块之间联系非常强,松散耜合表示
模块之间联系比较弱,非轉合则表示模块之间无任何联系,是完全独立的。模块的糯合类型通常分为7种,根据耦合度从低到高排序见下表。
内聚
内聚是指模块内部各元素之间联系的紧密程度,内聚度越高,则模块的独立性越好。内聚性一般有以下几种:
①偶然内聚:指一个模块内的各个处理元素之间没有任何联系。
②逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
③时间内聚:把需要同时执行的动作组合在一起形成的模块。
④通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。
⑤顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行, 前一个功能元素的输出就是下一个功能元素的输入。