中级软件设计师知识点整理:软件工程

  1. 需求:为什么这三个不是功能需求:B.系统的响应时间不超过 3 秒C.系统的计算精度符合财务规则的要求D.系统可以允许100个用户同时查询自己的工资(难道是因为他提到了系统嘛)

  2. 测试:
    在这里插入图片描述

  3. 极限编程 XP的十二个最佳实践:
    在这里插入图片描述

  4. 管道过滤器是不支持批处理和并发操作的

  5. 耦合类型:
    模块A将学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B。模块A和B之间的耦合类型为( )耦合。
    A.数据
    B.标记
    C.控制
    D.内容
    因为没有提到控制信息和标志信息 ,所以首先排除控制和标记耦合,而内容耦合的那几个情形都没发生:1.模块直接访问另一个模块的内部数据 2.模块不通过正常入口转到另一个模块内部 3.两个模块有一部分程序代码重叠(在汇编语言中) 4.一个模块有多个入口 所以就只能是 数据耦合

耦合的分类: 一、内容耦合(Content Coupling) 如果发生下列情形,两个模块之间就发生了内容耦合。
1)一个模块直接访问另一个模块的内部数据; 2)一个模块不通过正常入口转到另一模块内部;
3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中); 4)一个模块有多个入口。 二、公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
三、外部耦合(External Coupling)
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
四、控制耦合(Control Coupling)
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。 五、标记耦合(Stamp Coupling)
如果一组模块通过参数表传递记录信息,就是标记耦合。它是某一数据结构的子结构,而不是简单变量。 六、数据耦合(Data Coupling)
如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。
七、非直接耦合(Nondirect Coupling)
如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。

  1. 某模块内涉及多个功能,这些功能必须以特定的次序执行,则该模块的内聚类型为( )内聚。
    A.时间
    B.过程
    C.信息
    D.功能
    也是因为没有提到时间和信息,首先排除这两个,而重点是特定次序,所以是过程内聚,而什么是功能内聚呢 ,功能内聚就是所有元素组成都是为了完成一个共同的功能而存在的,完成一个单一功能

1、功能内聚:实现一个功能。 2、信息内聚:完成多个功能,各个功能在同一数据结构上操作。
3、通信内聚:模块内各功能部分使用了相同的输入数据或产生相同的输出数据。
4、过程内聚:把流程图中某一部分划出组成模块,即过程内聚,如循环部分、判定部分、计算部分分成三个模块。
5、时间内聚:又称为经典内聚,大多为多功能模块,模块的各个功能的执行与时间有关,如初始化模块和终止模块。
6、逻辑内聚:把几种相关的功能组合在一起,由传送给模块的判定参数来确定执行哪一种功能。
7、偶然内聚:模块内各部分之间没有联系,或即使有联系,也很松散,是内聚程序最低的模块。

  1. 四个常见的命令:ping 用来检查网络是否连通,Netstat 是用来查看网络连接,路由表和网络接口信息, Msconfig是用来进行系统配置,包括程序的自启动这些,cmd就是命令行
  2. 极限编程中的结对编程 不能使编程速度变快
  3. 结构化模型设计,一般遵循 1.模块大小要适中,2.扇入和扇出要合理 3.深度和宽度要适当 4.将具有相似功能的模块合并
  4. 巧合(偶然)内聚就是两者之间没有联系,并且他有最低的内聚性,不易修改和维护并且不易理解
  5. 对下图所示的程序流程图进行语句覆盖测试和路径覆盖测试,至少需要( )个测试用例。采用McCabe 度量法计算其环路复杂度为( )。
    语句覆盖的话 1-2-3-6和1-2-4-5 这两条路就ok了
    程序覆盖的话 是需要把所有的路径都走一遍的
    就可以数出来 是四条,把所有的判断都变一下
而环路复杂度是 有11个结点,有13条边  所有是13-11+2 等于4

在这里插入图片描述
在这里插入图片描述
12. 并列争球法(j就是 Scrum)使用了迭代的方法,其中,把每段时间(30天)一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。、
13. 软件可移植性 包括 适应性,易安装性 共存性 易替换性
14. 软件测试的目的是 发现尽可能多的缺陷
15. 需求分析阶段 会输出 数据流图,实体联系图,数据字典
16. 增量模型中,有以下优点 1.不必等到整个系统开发完成就可以使用 2.可以使用较早的增量构件作为原型,从而获得稍后的增量构件需求 3. 优先级最高的服务先交付,这样最重要的服务接受最多的测试 但是 不适合 进行模块划分
17. 结合了自底向上和自顶向下的就是三明治模型,他的优点不包括 较少的模块驱动和模块的编写工作量

这种策略的优点是自顶向下与自底向上两种方式优点的综合。所以可以较早地验证了主要的控制和判断点且较早地验证了底层模块。同时由于可以两端向中间发展,所以效率也是比较高的,且运用一定的技巧,能够减少了桩模块和驱动模块的开发。所以本题的问题本身存在不严谨的现象。在选择答案时,由于”较少的驱动模块和桩模块的编写工作量“条款需要运用一定技巧,并非一定会减少,所以选其相对更合适。

  1. 瀑布模型不适合大型软件系统,因为大型系统的需求往往在前期难以确定

  2. 软件质量
    在这里插入图片描述

  3. NS盒图经常用到,而且适用于依赖多个逻辑条件的取值

  4. 逆向工程是从发布的产品中,进行反向分析逻辑和结构的过程,所以应该算是在开发完软件之后的,算是软件的维护

  5. 若用白盒测试方法测试以下代码,并满足条件覆盖,则至少需要( )个测试用例。采用McCabe度量法算出该程序的环路复杂性为( )
    在这里插入图片描述

Int find _max(int i,int j,int k){  
    int max;
    if(i>j)then
                 if(i>k)then max =i;
                 else max=k;
         else if(j>k)then max =j;
                  else max=k;
    }
  1. 软件工程基本概念,首先是软件设计的任务就是 基于需求分析的结果建立设计模型,给出问题的解决方案。 而一般分为两个阶段:1.概要设计阶段详细设计阶段 并且在结构化设计方法中,概要设计是进行软件体系结构的设计,数据设计和接口设计,而详细设计阶段是进行数据结构和算法的设计。而在面向对象设计方法中,概要设计是进行体系结构设计,初步的类设计/数据设计,结构设计 而详细设计阶段 是进行构建设计
  2. 螺旋模式考虑了 风险因素
  3. 测试集成 :1.自顶向下集成:他是以主程序模块为中心,他的缺点就变成了 底层验证被推迟,底层组件测试不充分,优点的话就是减少驱动,较早验证了主要控制 2.自底向上 与之对应,缺点就是驱动开发增加,比较适合底层比较稳定的,优点的话 就是减少了娤的使用
  4. 结构化开发,他是对软件功能的分解和抽象,也就是生命周期法,他有着复杂但是完整的开发流程,并且是有阶段性的,每个阶段都会产生设计成果,再通过评估之后进入下一阶段。他的总指导思想就是 自顶向下,逐层分解,比较适合数据处理领域的项目,也适合规模较大并且组织结构相对稳定的企业。
  5. 增量模型的特点就是,他可以在一个较短的时间里向用户提交一些有用的工作产品,也就是快速构造产品,需求是会不停变的,所以需求没有被清晰定义,并且每个增量不一定需要风险评估,而且感觉由于其快速性,很适合商业产品
  6. 可靠性包括:成熟性,容错性,易恢复性
  7. 图中有3次简单的判断。故3条简单路径,形成3块环形区域,区域复杂度为3。
  8. 模块分析:

传入模块:从下属模块取得数据,经处理再将其传送给上级模块。 传出模块:从上级模块取得数据,经处理再将其传送给下属模块。
变换模块:从上级模块取得数据,进行特定的处理,转换成其他形式,再传送给上级模块。

  1. 统一过程up:
    1.他是以用例和风险为驱动,以架构为中心,迭代并且增量的开发过程
    2.up定义了四个阶段,即构思阶段,细化阶段,构建阶段,移交阶段
    3.每个迭代都包含 计划,分析,设计,构造,集成,测试 以及内部和外部分布
    3.每个迭代有五个核心工作流
  2. 逻辑描述的基本原则:

1、对数据流图的每一个基本加工,必须有一个基本加工逻辑说明。
2、基本加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则。
3、加工逻辑说明必须描述实现加工的策略而不是实现加工的细节。 4、加工逻辑说明中包含的信息应是充足的,完备的,有用的,无冗余的。

  1. CMMI的分级结构:

(1)初始级:软件过程的特点是无秩序或说无定规的,有时甚至是混乱的。软件过程定义几乎处于无章法、无步骤可循的状态,软件产品所取得的成功往往依赖于极个别人的努力和机遇。
(2)可重复级:已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。
(3)已定义级:用于管理的和工程的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合的、适当修改后的标准软件过程来进行操作。
(4)已管理级:软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了定量的认识和控制。
(5)优化级:通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地对促进过程进行改进。

  1. 可维护性包括 :可理解性,可测试性,可修改性,可移植性是单独自己一个性能
  2. 单元测试:
    所以内容包括:模块接口,局部数据结构,重要的执行路径 这些都是在内部的数据流
    在单元测试开始时,应该对通过所有被测模块的数据流进行测试。

①输入参数是否与形式参数是否一致。
②调用模块的实参与被调用模块形参是否一致。
③全局变量在各模块中的定义和用法是否一致
④外部输入、输出等等。

  1. 统一过程模型是一种“用例和风险驱动以架构为中心迭代并且增量”的开发过程,定义了不同阶段及其制品其中精化阶段关注( )。
    (15)A.项目的初始活动 这个是初始阶段
    B.需求分析和架构演进 这个是细化阶段
    C.系统的构建,产生实现模型 这个是构建阶段
    D.软件提交方面的工作,产生软件增量 这个是移交阶段
    试题分析
  精化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。
  1. 软件需求中对软件产品的相应时间,吞吐量,价格等属性的要求都属于非功能性需求。
    38. 回归测试就是 ,对一个错误进行修正之后,判断这个修正是否会让原本运行的代码出错
  2. 软件设计质量评审包括:1.软件规格说明是否符合用户的要求 软件是否具有可测试性 软件是否具有良好的可靠性
  3. 单元测试: 要考虑:

①输入参数是否与形式参数是否一致。
②调用模块的实参与被调用模块形参是否一致。
③全局变量在各模块中的定义和用法是否一致
④外部输入、输出等等。

  1. 数据流图,1.要保持父图和子图平衡 2.每个结构要有输入和输出数据流 3.每条数据流只要有一端是加工 4.要保持数据守恒
  2. 划分模块的原则就是:作用范围要在控制范围之内
  3. 瀑布模型适合 需求明确的项目,也算是比较适合有开发经验的,演化模型 适合需求不明确的。螺旋模型加入了风险评估,所以适合风险高的,喷泉模型特点是迭代和无间隙,面向对象的 这里原型模型也是适用于需求不够明确的项目,所以可以有效地捕获系统需求
  4. 敏捷开发

极限编程是一种轻量级的开发方法,它提出了四大价值观:沟通、简单、反馈、勇气。五大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作。
水晶法强调经常交付,认为每一种不同的项目都需要一套不同的策略、约定和方法论。
并列争球法的核心是迭代、增量交付,按照30天进行迭代开发交付可实际运行的软件。
自适应软件开发的核心是三个非线性的,重迭的开发阶段:猜测、合作、学习。

  1. 项目的功能有比较清晰的定义,并且客户对交互时间有严格要求的话,比较适合瀑布模型,因为他对项目生命周期都有严格的规定
  2. 喷泉模型,是面向对象的 ,有迭代性,所以会经常需要重复多次,所以各种开发活动之间没有存在明显的边界

将每个用户的数据和其他用户的数据隔离开,是考虑了软件的( )质量特性。

(31)A.功能性 
B.可靠性 
C.可维护性 
D.易使用性
试题分析
功能性是指与功能及其指定的性质有关的一组软件质量;
可靠性是指衡量在规定的一段时间内和规定条件下维护性能水平的一组软件质量;
可维护性是指与软件维护的难易程度相关的一组软件属性;
易使用性是指与使用难易程度及规定或隐含用户对使用方式所做的评价相关的属性。
综上所述,可以知道将每个用户的数据和其他用户的数据隔离开,是考虑了软件的功能性质量特性。
试题答案
(31)A
  1. 等价类测试用例:他的作用就是 ,如果他的一个输入数据能检测出一个错误的话,他的其他输入数据也能检测出同一个错误
  2. 高质量文档,要有针对性,文档编制应考虑读者对象群 精确性,文档的行文应该十分确切,不能出现多义性的描述 完整性,任何文档都应当是完整的、独立的,应该自成体系,但不需要有无重复性
  3. 在软件维护阶段,为软件的运行增加监控设施属于( 完善性)维护。
  4. 软件复杂性 取决于**:软件的规模**:行数 软件的难度:程序中出现操作数的数目 软件的结构,**软件的智能度:**算法的难易程度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值