龙杰软工重点WORD.docx
- 文档编号:30302297
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:35
- 大小:2.70MB
龙杰软工重点WORD.docx
《龙杰软工重点WORD.docx》由会员分享,可在线阅读,更多相关《龙杰软工重点WORD.docx(35页珍藏版)》请在冰豆网上搜索。
龙杰软工重点WORD
按着周俊林给的提纲来的重点,剩下的我只看了书,还没整理到电脑上,周二上传哈..
大家加油复习吧,希望能帮到大家。
软件生命周期模型(选择一种模型至少对比四种模型说明)
三种过程模型最常用,瀑布模型,演化模型,增量模型。
瀑布模型
经典的生命周期模型
适用于需求明确,且将来没有太大改变的情况
优点
每个阶段都有文档,文档驱动,能容易的与其他过程模型相结合。
每个阶段结束前都会进行文档检查,质量有保证
缺点
1.不够灵活,每个阶段结果必须固定
2.整体性太强,前期的错误只有等到最后才能发现,会带来严重的后果
3.因为各阶段是文档驱动的,所以比较繁琐
演化模型
1演化模型的思想是,首先实现软件最核心,最重要的功能。
2和瀑布模型相比,客户可以更改需求,演化模型可以迅速更改没有困难。
3适用于小型和中型系统,对于大型系统,最好采用瀑布模型和演化模型的混合过程
a.原型模型
适用于客户定义整体需求,但是不清楚具体的输入输出;或者开发者不确定算法效率,软件是否和系统兼容,用户和计算机的交互方式。
优点:
可以快速构建模型,如果有问题或者有更改,可以迅速更改。
缺点:
1.为了快速构建模型,设计者会降低质量及放弃部分需求
2.用户可能意识不到一些质量问题
b.并行开发模型
并发模型可以表示为一系列的技术活动,原型实现,分析模型,需求规则和设计。
所有活动都同时存在但是处于不同的状态,如空状态,结束状态。
(补充知识)迭代被定义为:
迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。
b.基于构建模型
基于构建模型以重用为导向,使用大量的可重用组建以及集成框架作为基础的开发过程.
基于构件的模型的四个阶段
1.需求:
与其他模型相同
2.组件分析:
搜索可用的组件。
3.系统设计:
要考虑到重用的组件选择,要是没有就重新编写软件
4.开发和集成:
将组建集成到系统中
优点:
减少开发软件数量,减少成本和风险,使产品更快交付
缺点:
1需求有折中,不完全符合用户需求;
2无法控制组建版本的更新,无法完全控制开发系统的演化
3项目划分好坏,决定项目结果
增量过程模型
增量模型是一种进化式的开发过程,他从部分需求出发,建立一个不完整的系统,通过测试这个系统缺的经验和反馈,进而进一步完善这个系统。
反复进行,系统完善为止。
a.增量模型
增量模型结合了原型模型的基本要素和迭代的特征,然而他与原型模型的区别是,增量模型强调每个增量都是可运行的产品。
优点:
1.增量包的引入,它不要完整的需求说明,只要有一个增量包的提出,就可以进行开发。
2.项目初期不需要太多人力资源,如果核心产品被接受,再扩大人手。
3.有效的管理技术风险。
缺点:
每个增量模型都必须提供一些系统功能,开发者很难根据用户需求给出大小合适的增量。
极限编程就是基于小增量的开发和交互
b.RAD模型
RAD模型强调短暂的开发周期,是瀑布模型的“高速”变体,通过基于组件的构建方法实现快速开发。
主要应用于信息系统软件的开发。
有三个阶段
1.业务建模
2.数据建模
3.过程建模
缺点:
1.对于大型项目,需要足够多的人力资源
2.开发者和客户需要履行承诺,否则将导致失败
3.并非所有系统都适合
c.螺旋模型
强调风险管理,适用于大型系统的开发。
与RAD模型类似,结合了瀑布模型和原型模型的特点。
从左上角开始进行旋转。
1.制定计划:
确定软件目标,选定实施方案,弄清楚约束条件
2.风险分析:
考虑如何识别以及消除风险(原形模型)
3.工程实现:
编写代码(瀑布模型)
4.用户评价:
评价开发工作情况。
优点:
1.支持需求动态变化
2.评估准确,重要问题可以提前发现
3.有助于降低风险
缺点:
1.开发人员需要风险评估只是,因此开发队伍水平要求较高
2.如果每次迭代效率不高,会拖沓任务完成时间
敏捷软件过程
强调客户满意度,以及较早的增量交付,小但有激情的团队,非正式方法,开发者和客户持续交流。
包括极限编程,自适应软件开发,动态系统开发方法等。
功能性需求(用例图OO和数据流图SD)
用例图
用例图包括:
参与者、用例、关联和边界四个要素。
参与者:
用小人形表示
用例:
用椭圆表示
关联:
用直线表示说明参与者驱动某个用例,箭头指向一方为被启动的事件
边界:
用矩形框表示,说明系统关注点。
注意<
<
<
数据流图
注意事项:
1.加工框内要标明序号
2.文件与加工之间用箭头线连接,单向表示只读或只写,双向表示有读有写
父子平衡
例3。
16父图和子图是不平衡的,因为子图中没有输入数据流与父图中加工2的输入流M相对应。
另外,子图的输出数据流S在父图中也没有出现
例3。
17父图和子图平衡吗?
从图上看,子图与父图中相应加工并不具有相同的输入和输出,但是如果从词典中查出:
父图只称为“订货单”的数据流是由“客户”、“帐号”和“数量”三部分数据组成的,那么就可得出结论:
这两张图是平衡的
数据不守恒
还有个什么数据流程图重新分解看起来很坑爹的样子,看不懂,去屎吧!
!
!
数据字典DD:
解释数据流图里面数据的属性
还有一个例子,发票=(学号)+姓名+{书名+价格}+书费总计
性能需求
1时间特性
2.时间精确性(这俩差不多,我感觉不会考有几个性能需求,因为有很多啊,还有界面需求,开放性需求,这四个是ppt上的)
(响应时间,更新时间,数据转换时间,数据传输时间…
3.存储容量及后援存储
4.系统安全性
模块划分(内聚性、耦合性、信息隐藏)
模块的独立性可由两项指标衡量:
内聚性和耦合性
内聚是一个模块内部各个元素彼此结合的紧密程度的度量,内聚度越高,模块内部联系越紧密,独立性越强
耦合是模块之间的相对独立性(互相连接的紧密程度)的度量,耦合度越高,模块间联系越紧密,模块独立性越弱。
模块独立性最强的是高内聚,低耦合的模块
1.巧合内聚
语句松散没有联系
2.逻辑内聚
几个功能语句在一个模块,调用时,由参数决定调用哪种功能
3.时间内聚
一个模块包含了在同一时间需要完成的多种任务,如变量初始化
4.过程内聚
各个部分相关,且必须按照某种特定的顺序执行。
这个顺序只是用户希望看到的,并没有逻辑关系。
5.通讯内聚
一个模块中使用同一个传入的数据或者产生同一个输出结果
6.顺序内聚
该模块各个部分都与一个功能相关,并且必须按照某种顺序执行,后面的数据需要前面的数据处理。
7.功能内聚
整个模块只完成一个功能
1.内容耦合
直接修改或者跳入另一个模块中,或者共享一部分代码。
2.公共耦合
一组模块共享一个公共数据
3.外部耦合
模块间通过软件之外的环境联结(如I/O将模块耦合到特定的设备、格式、通信协议上)时
4.控制耦合
一个模块传递给另一个模块的参数包含了控制信息,控制另一个模块的执行逻辑
5.标记耦合
两个模块通过参数表传递数据结构的一部分
6.数据耦合
两个模块通过传递参数联系在一起,且仅仅是简单的参数,(非控制信息)
7.非直接耦合
两个模块没有关系,不用相互依赖便可以独立工作。
信息隐藏
模块化概念的基本问题:
如何分解软件系统以达到最佳的模块划分
信息隐藏的原则:
模块间具有相互隐藏的特性,即模块内的信息不可以被不需要这些信息的模块访问
信息隐藏的特点:
抽象有助于定义软件构成的实体,隐藏了模块的实现细节以及数据结构。
软件体系架构和接口设计
常见的软件体系结构:
单主机结构,c/s结构,b/s结构
体系结构风格:
1.数据中心体系架构
2.数据流体系架构
又分为1、管道和过滤器模式和2、批处理序列模式
v这种结构适用于输入数据被一系列的计算或者处理部件变换成输出数据。
3.调用和返回架构
又分为
a.主程序/子程序结构b.远程过程调用架构
这里需要了解几个概念
深度:
即程序结构的层次数,反应程序的复杂度和规模
宽度:
同一层模块的最大模块数
扇入:
一个模块被调用的次数,被调用的越多,说明是公共模块
扇出:
调用其他模块的个数
4.面向对象架构
系统组件封装了模块内的数据和对数据的操作方法,组件之间通过消息来进行通讯和协作
5.层次架构
接口设计:
描述了软件和写作系统之间、软件和使用人员之间是如何通信的
软件工作量度量(基于功能点和基于代码估算,比较不同和优缺点)
基于规模的度量-直接测量=基于代码(LOC)的估量
功能点(FP)度量-间接测量
基于代码的估量:
优点:
1.LOC,KLOC和相关度量容易计算
2.许多现有的软件估算模型都用loc和kloc作为一项重要输入
3.有大量关于loc的文献和数据
缺点:
1.LOC依赖于使用的语言,这对短小精悍的程序不利
2.不太适合非过程化语言
3.LOC只有在设计完成后才能计算,同时估算需要一定程度的细节,这些细节在项目初期很难获得。
基于功能点的度量:
FP=(TOT_COUNTS)*(0.65+0.01*SUM(FI))
优点:
与程序语言无关,在项目开发前就可以估算出软件的规模
缺点:
1.没有直接涉及算法的复杂度,不适合算法比较复杂的软件系统
2.计算功能点数主要依靠经验公式,主观因素比较多
3.数据不好采集
程序流程图、N-S图、PAD、判定表
程序流程图
掌握这五种结构
例子:
流程图的缺点:
1.他不是逐步求精的好工具,程序员容易只考虑程序逻辑而忽略全局结构
2.程序员可以不顾结构程序设计的精神,随意转移程序,导致程序结构混乱
3.表示数据结构上不足
N-S图
例子1
例子二
NS图的特点:
1.功能于明确,用图形表示很清晰
2.程序员一定会遵守结构程序化的设计要求
3.很容易确定局部和全局数据域
4.容易表现嵌套关系和层次结构
PAD
求S=1+3+5+…+999
PAD图的优点:
1.一定遵守结构化程序设计的要求
2.结构清晰,容易理解
3.容易将PAD图转化为高级语言,有这样的转化工具,因而提高生产效率
4.即可用于表现程序逻辑,也可以表示数据结构
5.支持自顶向下,逐步求精的方法使用。
判定表
优点:
当算法中包含多重条件选择时,判定表可以清晰的表达其算法逻辑。
判定表能够简洁,准确的表达所有处理规则。
缺点:
然而它是静态逻辑,无法表达加工顺序以及循环结构。
该程序流程图的判定表如下。
白盒测试( 各种路径覆盖和测试用例)
建议再看一遍教材,说的比较清晰
白盒测试指考虑系统或组件的内部机制的测试形式(如分支测试、路径测试、语句测试等),也称结构性测试,
白盒测试分为逻辑覆盖和控制流图
逻辑覆盖
分为语句覆盖,分支覆盖(判定覆盖),条件覆盖,条件组合覆盖
a:
(y>1&&z==0)c:
(y=2||x>1)
语句覆盖
语句覆盖就是要每个可执行语句都至少走一次
测试用例
Y=2,x=2,z=0
判定覆盖(分支覆盖)
判定覆盖要求程序的每个逻辑判断的取真和取假分支各经历一次
测试用例
条件覆盖
每个判断的每个条件各取真假一次
条件组合覆盖
每个判断的所有可能的条件组合至少执行一次
看不懂看书p113页
控制流图覆盖测试
具体图片看教材p114页,ppt说的太不清楚了
节点覆盖和语句覆盖相同,即包含所有语句,测试用例所执行的测试路径的集合中至少存在一条测试路径访问该节点。
边覆盖每一个可到达的长度小于等于1的路径,测试用例所执行的测试路径的集合中至少存在一条测试路径游历该路径。
(我理解为,节点覆盖不用走完全部的边,而边覆盖需要)
边覆盖包含节点覆盖,也可以实现分支覆盖.
路径覆盖,覆盖程序中的所有可能路径,但是循环结构只走一次.由路径覆盖引出基本路径测试。
基本路径测试
先计算环形复杂度v(g)=e-n+2
再选出最长的独立路径作为基线,再由基线的第一个可分支的节点开始构造不同路径,然后找第二个节点,知道构造出的新路径等于v(g).具体算法请看书上p116页。
黑盒测试(等价类划分和边界值法,测试用例)
黑盒测试不用知道测试对象内部的结构和具体设计.功能测试又叫做功能测试和数据驱动测试
等价类划分方法
步骤:
1.划分等价类2.选取测试用例
A.划分等价类
等价类是某个输入域的子集,等价类中的各个数据只能揭露程序的同一类错误。
有效等价类:
对于程序的规格说明来说,是正确的,合理的数据
无效等价类:
对于程序的规格说明来说,是不正确的,不合理的数据
划分等价类的原则
1.如果程序规定了取值范围,则可确定一个有效等价类,两个无效等价类。
如2<=x<=6为有效等价类,x<2和x>6为无效等价类
2.如果输入条件规定了输入值集合或者“必须怎怎样做”,则可确立一个有效等价类和一个无效等价类
3.如果输入条件是bool变量,则也确定一个有效和一个无效等价类
4.如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。
这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。
例:
在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。
因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。
5.如果规定了输入数据需要遵守的规则,则可定义一个有效等价类,和若干无效等价类,从各个角度违反规则。
B.选取测试用例
在确立了等价类之后,建立等价类表,列出所有划分出的等价类
书上例子很搓B,PPT上只有这一个大家好好理解吧。
。
。
标识符就是变量名
第一个测试用例包含了全部的有效等价类
第2个到第9个即每个测试用例中只包含一个无效等价类,
但是集合包含了全部的无效等价类
边界值分析方法
大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。
假设某变量的取值范围是min<=x<=max,则要选取下面6个测试用例
X=min-(略小于最小值),min(最小值),min+(略大于最小值)
max-,max,max+(同上)
桩模块和驱动模块开发,广度优先、深度优先
在单元测试环境中,驱动模块和桩模块是最主要的辅助模块
驱动模块用以调用被测模块,使被测模块得到执行。
桩模块用以替代被测模块中调用的其他模块,这些桩模块对其功能进行简化,因此如果被测模块有问题则可以确定是被测模块内部的问题。
广度优先和深度优先,请参考书上p132-p133页,说的很清楚,理解图的画法
软件测试策略及含义,如何和黑盒白盒测试结合(详细解释单元测试、集成测试、系统测试、验收测试及阶段如何进行、α测试,β测试说明)
a.单元测试
单元测试的主要目的是验证软件模块是否按详细设计的规格说明正确运行
单元测试主要采用白盒测试,但在白盒测试之前,应先依据需求规格建立黑盒测试用例,验证模块对任何合理以及不合理的输入都能正确的响应及鉴别。
测试内容:
1.模块接口
2.局部数据结构
3.边界条件
4.独立路径
5.出错处理
单元测试用到了桩模块和驱动模块
b.集成测试(组装测试,联合测试)
集成测试主要目的是检查多个模块间是否按概要设计说明的方式协同工作。
集成测试采用黑盒测试,也有白盒测试,综合二者特点,因此可称之为“灰盒测试”
非增量集成:
“一步到位”,错误无法检测出哪个模块的
增量集成:
自定向下和自底向上
看书p132页,了解自顶向下和底向上的两种方法(bfs,dfs数据结构会了就不用看了)
c.系统测试
系统测试是从用户使用的角度来进行的测试,主要工作是将完成了集成测试的系统放在真实的运行环境下进行测试,用于功能确认和验证.
系统测试基本上使用的黑盒测试
系统测试在软件开发过程中属于必不可少的一环,是软件质量保证的最重要环节
系统测试的主要内容:
v功能性测试
v性能测试
v压力测试:
测试软件系统在异常情况下的承受能力。
v恢复测试:
测试系统遇到错误,或者重新驱动时的反应能力。
v安全测试:
测试系统安全性和保密性措施是否发挥作用,有无漏洞。
d.验收测试
系统测试实在开发环境下运行的,验收测试是在客户的真实操作环境下执行的。
主要形式:
1.根据合同的验收测试
2.用户验收测试:
客户和最终用户不同时使用。
3.现场测试:
α测试,β测试
e.α测试,β测试
α测试:
用户在开发者的场所进行测试,开发者对用户进行指导,开发者负责记录错误和使用中出现的问题。
也可以由开发组织内部的用户进行测试。
β测试
测试在开发者不能控制的真实环境中进行,用户记录错误,定期报告错误给开发者。
只有当α测试达到一定的可靠程度时,才能开始β测试
软件维护策略(遇到问题、各阶段日程、软件再工程流程、如何改进可维护性)
v维护的类型有四种:
⏹纠错性维护
⏹适应性维护
⏹完善性维护
⏹预防性维护
1.维护的困难性
a.配置管理工作不到位,软件系统的很多修改没有被标记
b.人员变动造成的影响
c.许多软件可读性差
d.任务急、时间短的情况下处理维护请求
2.软件再工程流程
定义:
软件再工程是对现有的软件进行仔细审查和改造,对其进行重新构造,使之成为一个新的形式,同事包括随之产生的对新形式的实现。
1.库存目录分析
2.文档重构
3.逆向工程
4.代码重构
5.数据重构
6.正向工程
3.如何改进可维护性
可维护性、可靠性、可使用性是衡量软件质量的主要质量特性。
软件的可维护性是各个时期的关键目标。
决定软件可维护性的主要因素:
1.可理解性
2.可测试性
3.可修改性:
证明程序正确性的难易程度
4.可靠性
5.可使用性
6.可移植性
7.效率
4.软件维护过程各阶段
1.分类与鉴别阶段
2.分析阶段
3.设计阶段
4.实现阶段
5.系统测试阶段
6.验收测试阶段
7.交付阶段
团队组织方式及其原因
民主分权制(DD):
团队没有永久的领导者,协调不同的任务时,由不同的协调员取代。
对问题的解决方法都是由小组达成共识,团队成员之间进行横向通信。
有控制的分权制(CD):
该团队有领导协调具体任务,也有负责子任务的次要领导人。
解决方案由领导分配到各个小组来进行实施。
横向通信和垂直通信都会发生。
有控制的集中制(CC):
只有一个领导人,团队内部问题的解决和协调的管理都是由一个领导人解决。
领导者和团队之间是垂直通信的。
选择因素:
1.集中式结构完成任务快。
2.较大的项目最好由有控制的分权制或者有控制的集中制结构完成
3.长期生活在一起的团队,适用于民主分权制,提高热情
4.模块化问题较低的问题,可以用民主分权制。
反而则选择cd或cc
CMMI(成熟度模型标准)
项目管理四要素
人员,产品,过程,项目
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 龙杰软工 重点 WORD