软工期末复习

名词解释(5*4)

  • 耦合和内聚(模块的内聚包含哪些)
    模块的内聚程度:偶然内聚→逻辑内聚→时间内聚→过程内聚→通信内聚→ 顺序内聚→ 功能内聚
    模块的耦合程度:无直接耦合→ 数据耦合→ 标记(特征)耦合→ 控制耦合→ 外部耦合→ 公共耦合→ 内容耦合

  • 软件危机,软件危机包含那两点,危机产生的原因
    表现:成本高、软件质量不能保证、进度难以控制、维护困难
    软件危机的主要原因是**软件本身的特点及开发维护方法不正确**。
    克服软件危机:

    • 从管理的角度软件开发过程的研究、文档的标准化以及人们的交流方式等
    • 软件开发方法的研究:结构化软件开发方法, 面向对象的开发
  • 软件生命周期
    软件生命周期包括:制定计划、需求分析、软件设计、程序编码、软件测试、运行维护

    1. 软件定义
      问题定义、可行性研究、需求分析
    2. 软件开发
      总体设计、详细设计、编码、单元测试、综合测试
    3. 运行维护
  • 结构化程序设计包含哪些步骤

    自顶向下、逐步求精、模块化设计

  • 瀑布模型
    瀑布模型将软件生命周期为制定计划、需求分析、软件设计、程序编码、软件测试、运行维护**,并规定它们自上而下、相互衔接的固定次序。
    瀑布模型是文档驱动的模型

    特点:

    • 提供了软件过程模型的基本框架(模板)。
    • 强调了每一阶段活动的严格顺序。
    • 质量保证观点:以经过评审确认了的阶段工作产品(文档)驱动下一阶段的工作,便于管理。
    • 是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。

    优点:

    • 为项目提供了按阶段划分的检查点
    • 当前一阶段内容完成后,仅需关注后续的内容
    • 可在迭代模型中应用瀑布模型

    缺点:

    • 不适合需求模糊或需求经常变动的系统
    • 用户等待时间较长
  • COCOMO

    COCOMO,构造性成本模型。它是一种精确、易于使用的,基于模型的成本估算方法。
    cocomo有三个不同层次模型来反映不同程度的复杂性,分别为

    • 基本模型 是一个静态单变量模型,它用一个以已估算出来的源代码行数 (LOC) 为自变量的函数来计算软件开发工作量。
    • 中间模型 则在用 LOC 为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。
    • 详细模型 包括中间 COCOMO 模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设计等各步骤的影响

    根据不同应用软件的不同应用领域,cocomo模型划分三种软件应用开发模式:

    • **组织模式 ** 这种应用开发模式的主要特点是在一个熟悉稳定的环境种进行项目开发,该项目与最近开发的其他项目有很多相似点,项目相对较小,而且并不需要许多创新。
    • 嵌入式应用开发模式 在这种应用开发模式种,项目受到接口要求的限制。接口对整个应用的开发要求非常高,而且要求项目有很大的创新,例如开发一种全新的游戏。
    • 中间应用开发模式 这时介于组织模式和嵌入式应用开发模式之间的类型。
  • UML
    UML的静态建模机制包括**用例图、类图、对象图和包图**。


简答题(5*5)

  • 成本效益分析

    从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。

    软件开发成本主要表现为人力消耗,估算技术有 代码行技术、任务分解技术、自动估计成本技术

    成本/效益分析的方法

    1. 货币的时间价值
      通常用利率表示货币的时间价值。设年利率为 i i i,现已存入 P P P元,则 n n n年后可得钱数为 F = P ( 1 + i ) n F=P(1+i)^n F=P(1+i)n,这就是P元钱在 n n n年后的价值。反之,若 n n n年后能收入 F F F元,那么这些钱现在的价值是 P = F / ( 1 + i ) n P=F/(1+i)^n P=F/(1+i)n
    2. 投资回收期
      投资回收期是衡量一个开发工程价值的经济指标。投资回收期就是积累的经济效益等于最初的投资所需要的时间。投资回收期越短,就能越快获得利润。
    3. 纯收入
      工程的纯收入是衡量工程价值的另一项经济指标。纯收入就是在整个生存周期之内系统的累计经济效益(折合成现在值)与投资之差。
    4. 投资回报率
      投 资 回 报 率 = 收 入 / 投 资 投资回报率 = 收入/投资 =/

    Tips:
    ①投资是现在进行的,效益是将来获得的,不能简单地比较成本和效益,应该考虑货币的时间价值。
    ②总的效益和生命周期的长度有关,所以应该合理地估计软件的寿命。

  • 敏捷开发
    敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
    特点:

    • 个体和交互胜过过程和工具
    • 客户合作胜过合同谈判
    • 响应变化要胜过遵循计划

    优点:

    • 敏捷开发的高适应性,以人为本的特性
    • 更加灵活并更加充分的利用了每个开发者的优势,调动了每个人的工作热情

    缺点:

    • 由于其项目周期很长,所以很难保证开发的人员不更换,而没有文档就会造成在交接的过程中出现很大的困难。

    敏捷开发三大角色:
    产品负责人:确定产品功能及标准,指定软件发布日期和交付内容,同时有权利接收或拒绝开发团队的工作成果。
    流程管理员:负责整个Scrum在项目中的顺利实施和进行,以及清除客户与开发团队见的共同障碍,使客户可以直接驱动开发。
    开发团队:负责软件产品在Scrum规定流程下进行开发工作。

  • 项目管理(项目进度化编制)

  • 可行性研究
    可行性研究也称项目认证,度量一个特定技术信息系统解决方案的实用性及技术资源的可用性,需要考虑开发风险分析、资源分析、相关技术的发展。
    目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得开发
    实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以比较抽象的方式进行的系统分析和设计的过程
    最根本任务——对软件开发以后的行动方针提出建议

  • RUP的概念和核心思想

    RUP(统一软件开发过程)是一个面向对象且基于网络的程序开发方法论。 RUP描述了如何有效地利用商业的可靠的方法开发和部署软件,是一种重量级过程

    RUP开发过程
    起始阶段(为项目建立业务案例) → 细化阶段(建立工程计划和合理的体系) → 构建阶段(构造系统) → 提交阶段(将系统提交给用户)

    RUP特征

    1. 迭代式增量开发过程
    2. 用例驱动
    3. 以软件体系结构为中心

    RUP优点:

    1. 迭代式开发,降低风险、得到早期用户反馈、适应变更、提高复用性
    2. 管理需求,解决正确的问题,建立正确的系统
    3. 使用构建架构,对体系进行自下而上的设计、实现和测试,易于直观上理解
    4. 可视化建模,直观描述体系结构的特点和机构、保证设计和实现上的一致性
    5. 检验质量,保证软件的可靠性
    6. 控制变更

    UML是软件计划的画图工具,而RUP是为软件计划提供步骤,指导软件计划。

  • 白盒法
    白盒测试包括**代码检查法、逻辑覆盖法、基本路径测试**。

    白盒测试,又称结构测试逻辑驱动测试,是基于代码的测试。

    白盒测试,是针对**被测单元内部是如何进行工作的测试。它根据程序内部结构设计测试用例,主要用于软件或程序验证。 白盒测试法检查程序内部逻辑结构,对所有逻辑路径**进行测试,是一种穷举路径的测试方法。

    白盒测试用例要求:

    1. 保证一个模块中的所有独立路径至少被使用一次
    2. 对所有逻辑值均需测试
    3. 在上下边界及可操作范围内运行所有循环
    4. 检查内部数据结构以确保其有效性

    白盒测试步骤:

    1. 测试计划阶段:根据需求说明书,制定测试进度。
    2. 测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。
    3. 测试执行阶段:输入测试用例,得到测试结果。
    4. 测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。

    白盒测试主要是检查**程序的内部结构、逻辑、循环和路径**。常用测试用例设计方法有:

    逻辑覆盖:以程序的内部逻辑结构为基础,分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖等。

    基本路径测试:在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

    优点:

    1. 使测试人员仔细思考软件的实现
    2. 检测代码中的每条分支和路径

    缺点:

    1. 无法检测代码中遗漏的路径和数据敏感性错误

    Tips:
    ①穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
    ②穷举路径测试不可能查出程序中因遗漏路径而出错。
    ③穷举路径测试可能发现不了一些与数据相关的错误。


设计测试用例(黑盒)(10)

时间合理性,等价类,设计测试用例
测试的两种方法(对比概念)

黑盒法,不考虑程序内部逻辑结构,针对软件界面和软件功能进行测试。
穷举输入测试,将所有可能输入都作为测试用例,包括不合法输入。

软件的测试用例主要由**输入数据和预期输出数据**两部分组成。

黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。

等价类的划分

等价类划分法是一种系统性的确定要输入的测试条件的方法。

等价类划分法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。 测试用例有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。

等价类划分原则

  1. 依据常用的原则划分等价类
  2. 为每一个等价类规定唯一的编号
  3. 设计一个新的测试用例,使其**尽可能多的覆盖尚未被覆盖的有效等价类**,重复这一步,直到所有有效等价类都被覆盖为止。
  4. 设计一个新的测试用例,使**其覆盖一个尚未被覆盖的无效等价类**,重复这一步,直到所有的无效等类都被覆盖为止。

等价类划分实例

假设要输入一个日期,日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能"。

  1. 划分等价类并编号

    输入等价类有效等价类无效等价类
    日期的类型及长度①6位数字字符②有非数字字符 ③少于6位数字字符 ④多于6位数字字符
    年份范围⑤在1990~2049之间⑥小于1990 ⑦大于2049
    月份范围⑧在01~12之间⑨等于00 ⑩大于12
  2. 设计测试用例,来覆盖所有的有效等价类

    测试数据期望结果覆盖有效等价类
    200211输入有效①、⑤、⑧
  3. 为每个无效等价类设计一个测试用例

    测试数据期望结果覆盖无效等价类
    95June无效输入
    20036无效输入
    2001006无效输入
    198912无效输入
    200401无效输入
    200100无效输入
    200113无效输入

建模题(3*15)

  1. ATM(工作原理了解清楚)用例图 类图,顺序图

    用例图

    主要元素:参与者(描述与系统交互的人或物,代表外部实体(如用户、硬件或其他软件系统)),👤用小人表示,小人下方附上参与者名称

    用例:是执行者与计算机一次典型交互,代表系统某一完整功能。用例是参与者想要系统做的事情。 椭圆表示,椭圆下方附上用例名称

    系统边界:是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。

    箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。

    img

    类图

    类:
    类名 Person
    属性:修饰符 类名:属性类型 +name:String +age:int
    方法:修饰符 方法名(参数名1:参数类型1…):方法返回值类型 +eat(food:String):boolean

    若类图描述为一个接口,则在接口名上方加 《 i n t e r f a c e 》 《interface》 interface的修饰符,该图仅有两个部分,接口名和接口方法。

    关系
    继承关系 子类 ————▷ 父类
    实现关系 实现类 - - - - - -▷ 接口
    依赖关系 使用者 - - - - - -> 被使用者
    即一个类临时引用另外一个类的方法实现功能
    关联关系 拥有者 - - - - - ->被拥有者
    关联关系表达的是一种强依赖关系,需要长期知道对方,使用对方
    聚合关系 整体 —————◁▷部分
    聚合关系表达的是一种弱拥有关系
    组合关系 整体 —————◀▶部分
    合成关系表达的是一种强拥有关系,并且生命周期相同,不能单独存在

    关系所表现的强弱程度依次为:组合>聚合>关联>依赖

    在这里插入图片描述

    顺序图
    顺序图是**强调消息时间的交互图。其描述了对象之间传送消息的时间顺序**,用来表示用例中的行为顺序。在该二维图中,对象由左至右排列,消息则沿着纵轴由时间顺序排列。在构筑该图时,应布局简洁。

    组成要素:对象、生命线、消息、激活

    img

  2. 超市销售管理系统(营业员干什么,收银员干什么,经理干什么)分层的数据流图,定义数据字典

    数据字典:数据字典需要对数据流图中所有的数据进行定义 ,所以为了方便定义,数据字典中把数据分为了4类

    1. 数据流。
      数据流名、说明(介绍产生原因和结果)、来源、去向、数据流组成
    2. 数据元素:数据流由哪些元素组成。
      数据元素名、类型、长度、取值范围……
    3. 系统中的数据存储。
      数据存储名、简述、输入、输出、数据文件组成、存储方式
    4. 系统的加工。
      加工名、加工编号、加工逻辑(简述加工程序、加工顺序)及功能简述、输入输出
    符号含义举例解释
    =等价于/定义为x = a数据x是由数据a组成的。通常我们把被定义的数据放在等号左边,把定义的数据放在等号右边
    +与/连接x = a +数据x是由a,b两个元素按顺序组成的
    []或/选择x = [a ¦ b]数据x是由a数据元素或b数据元素组成的
    m{}n重复m…n次x = 1{a}5数据x是由 a数据元素最少重复1次,最多重复5此 组成的
    ()可选x = a + (b)数据x是由a,b两个元素按顺序组成的,但b数据元素可有可无
    “”基本数据元素x = “0”数据x就是由“0”这个基本数据元素组成
    范围x = “1”…“9”数据x只能等于1~9之间的某个元素

    数据字典案例

    顶层图

    img

    0层图

    img

  3. 单位报销系统(审批流程)面向对象分析,活动图

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值