• 软件工程复习


    软件工程复习

    概述

    • 大概含义
    • 衡量指标:着重看
    • 什么是软件?
      • 软件是一系列按照特定顺序组织的计算机数据和指令的集合,包括程序数据相关文档的完整集合。
    • 软件包括哪些基本组成要素?
      • 程序:按事先设计的功能和性能要求执行的指令序列
      • 数据:使程序能够正确地处理信息的数据结构
      • 相关文档:与程序开发、维护有关的图文材料
    • 什么是软件危机?
      • 计算机软件开发与维护过程中所遇到的一系列严重问题
      • 软件的发展速度远远滞后于硬件的发展速度,不能满足社会日益增长的软件需求
      • 原因:
        • 与软件本身的特点有关
        • 与软件开发人员有关
    • 软件危机主要表现在哪些方面?(主要特征,内容)
      • 软件开发周期长
      • 软件开发成本高
      • 软件质量差
      • 软件维护困难
    • 什么是软件工程?
      • 软件工程是制导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学课的理论为知道,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把经过时间考验且证明是正确的管理者技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护它。(书上的 但是太长了)
      • 软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。(定义)它借鉴传统工程的原则、方法,以提高质量降低成本为目的。(目标)
    • 软件工程的目标
      • 符出较低的开发成本
      • 达到要求的软件功能
      • 取得加好的软件性能
      • 开发的软件易于移植
      • 需要较低的维护费用
      • 能按时完成开发工作,及时交付使用
    • 软件工程主要包括哪几个基本要素?(组成部份)
      • 软件工程三个基本要素
      • 方法:为建造软件提供技术上的解决方法(怎么做)
      • 工具:提供自动或半自动的软件支撑环境工具
      • 过程:获得高质量的软件所需要完成的一系列任务的框架
    • 软件开发方法的定义
      • 通常把软件生命周期全过程中使用的一整套技术方法的集合称为方法学。比如SASD方法、面向对象的软件开发方法。
      • 软件开发方法是一种使用早已定义好的技术集及符号表示习惯组织软件生产过程的方法。
    • 好的软件的一些主要衡量指标(重点):McCall的质量模型(各指标的含义)
      • 质量:产品的质量,过程的质量,商业环境背景下的产品质量
      • sd
    • 软件产品质量模型中有哪些指标?各个指标的基本含义分别是什么?
      • 正确性:程序能够满足规格说明和完成用户业务目标的程度
      • 可靠性:程序能够按照要求的精度实现其预期功能的程度
      • 效率:程序实现其功能所需要的计算机资源量
      • 完整性:软件或数据不受未授权人控制的程度
      • 可用性:学习、操作程序、为其准备输入数据、解释其输出工作量
      • 可维护性:对运行的程序找到错误并排除错误的工作量
      • 测试性:为保证程序执行其规定的功能所需的测试工作量
      • 灵活性:修改运行的程序所需的工作量
      • 可移植性:将程序从一种硬件配置(或环境转移到另一种硬件配置(或环境)所需工作量
      • 可重用性:程序可被用于与其实现功能相关的其他应用问题的程度
      • 互操作性:一系统与另一系统协同运行所需工作量
    • 什么是软件体系结构?
      • 软件体系结构:是系统的一个或多个结构,为软件系统提供了一个结构、属性和行为的高级抽象。包括
        • 软件的组成元素(组件)
        • 协议外部可见特性
        • 元素之间相互关系
      • 软件体系结构不仅指定了系统的组织结构拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理
    • 典型的软件体系结构分哪几类?其主要特征和应用场景是什么?(软件体系结构的建模)
      • 结构模型:
        • 这是一个最直观、最普遍的建模方法。
        • 这种方法以体系结构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。
        • 研究结构模型的核心是体系结构描述语言。
      • 框架模型:
        • 与结构模型类似,但不太侧重描述结构的细节而更侧重于整体的结构
        • 框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。
      • 动态模型
        • 是对结构或框架模型的补充,研究系统的"大颗粒"的行为性质。例如,描述系统的重新配置或演化
        • 动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。这类系统常是激励型的。
      • 过程模型
        • 过程模型研究构造系统的步骤和过程。因而结构是遵循某些过程脚本的结果
      • 功能模型
        • 该模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。它可以看作是一种特殊的框架模型。

    过程和生命周期建模

    • 什么是软件过程?

      • 过程:一组有序的任务,包括活动、约束和资源使用的一系列步骤,用于产生想要的输出
    • 什么是里程碑?

      • 里程碑是用来说明项目进展情况的事件,在软件工程项目中规划时间节点,从而来管控项目进度
    • 什么是软件的生命周期,主要分为哪些阶段。各个阶段的主要任务及产生的主要制品(输出)

      • 软件的生命周期:当过程是在开发软件产品时,把这种软件开发过程称为软件生命周期

      • 阶段 主要任务 输出
        问题定义 弄清“用户需要计算机解决什么问题” 用户审查和确认
        可行性研究与计划 问题是否行得通的解决方法 可行性论证报告
        初步的项目开发计划
        需求分析 为了解决这个问题,目标系统必须做什么 软件需求规格说明书
        总体设计 应该怎么实现目标系统 概要设计规格说明书
        数据库或数据结构设计说明书
        集成测试计划
        详细设计 应该怎样具体地实现这个系统 详细设计规格说明书
        单元测试计划
        实现 写出正确的容易理解、容易维护的程序模块 源程序代码
        集成测试 根据概要设计规格说明书,将经过单元测试的模块逐步进行集成和测试 满足概要设计要求、可运行的系统源程序系统集成测试报告
        确认测试 根据软件需求规格说明书,测试软件系统是否满足用户的需求 可供用户使用的软件产品
        使用和维护 通过各种必要的维护活动使系统持续地满足用户的需要 版本更新
    • 典型的软件开发过程(典型的软件过程模型又哪几种?)

      • 原型法

        • 交互式软件开发经常遇到
        • 包括哪几种基本类型?
        • 进化型,演化型,探索型,实验型
        • 快速原型法主要应用目的是什么?找出用户的需求。
      • 瀑布:所有模型都是以它为基础

        • 没有体现迭代反复,没有循环
        • 特点
        • 造成这种问题的原因是什么
        • 优缺点
      • 什么是V模型?

        • 瀑布模型的一个变种
        • 单元测试验证程序设计
        • 系统测试验证系统设计
        • 验收测试验证需求
        • 如果在验证和确认过程中发现了问题,那么再次执行右边的测试步骤之前,重新执行左边的步骤以修正左边
      • 螺旋

      • 阶段化开发

        • 增量
        • 迭代
      • 敏捷开发和极限编程的特点

        • 交流:保持客户和开发者的交换看法
        • 简单性:选择简单设计和实现
        • 勇气:尽早并经常性交付功能
        • 反馈:开发过程中各种活动循环
      • 软件开发过程模型 定义/特点 优点 缺点 应用
        瀑布模型 1. 阶段间具有顺序性依赖性
        2. 推迟实现的观点
        3. 质量保证的观点
        1. 可强迫开发人员采用规范化的方法
        2. 严格地规定了每个阶段必须提交的文档|
        3. 要求每个阶段交出的所有产品都是经过验证
        1. 几乎完全依赖于书面规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要
        2. 只适用于项目开始时需求已确定的情况
        项目开始时需求已经确定
        原型法 1. 允许或设计反复调查
        2. 减少开发中的风险和不确定性
        1. 用户似乎看到的软件的工作版本。软件开发管理常常被放松了。
        2. 开发者常常需要实现折中,以使原型能尽快工作
        螺旋模型 明确地考虑了开发中的风险。
        1. 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为开发的一个重要目标。
        2. 减少了过多测试或测试不足所带来的风险
        3. 在螺旋模型中维护只是模型的另一个周期,因而在维护和开发之间并没有本质
        螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识。 大规模的软件项目
        增量 把软件产品作为一系列的增量构件来设计、编码、集成和测试
        (先定义一个小的功能子系统,再在每个新的发布中增加新功能)
        1. 能在较短时间内向用户提交一些有用的工作产品
        2. 逐步增加产品的功能可以是用户又较充裕的时间学习和适应新产品
        3. 项目失败的风险较低
        4. 最重要的部份一般不会失败
        1. 增量模型本身是自相矛盾的。(把软件看作以一个整体又要看作一个增量构件。
        2. 要注意增加构件时不能破坏已开发的产品。
        3. 软件体系结构必须是开放的
        1. 进行已有产品升级或版本开发
        2. 产品完成期限严格要求
        迭代 一开始就提交完整的系统,再在每个新发布中改变每个子系统的功能
    • 快速原型法主要应用的目的是什么?原型发包括哪几种基本类型?

      • 快速原型是快速建立起来的可以在计算机上运行的程序
      • 目的:获知用户的真正需求,一旦需求确立了,原型将被抛弃

    获取需求

    • 什么是数据字典?(DD,模型核心(中心库))
      • 数据字典(DD)是描述数据的信息的集合,是对系统中使用的所有数据元素/数据流图中包含的所有元素的定义的集合。是为了描述在结构化分析过程定义对象的内容时,使用的一种半形式化的工具。
      • 数据字典中的每一个词条应包含以下信息
        • 名称:数据对象或控制项、数据存储或外部实体的名字
        • 别名或编号
        • 分类:数据对象?数据流?数据文件?外部实体
        • 描述:描述内容或数据结构等
        • 何处使用:使用该词条(数据或控制项)的加工
      • 数据词典精确地、严格地定义了每一个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解
      • image-20201230112739743
    • 了解需求的重要性以及需求分析阶段的目标及主要产物
      • 重要性:如果开发过程的早期没有检测到并修复需求错误,那么会造成很高的代价,甚至导致项目失败(这时候出错的成本代价是最大的)
      • 分析阶段的目标:准确地回答”系统必须做什么“这个问题
      • 主要产物:需求规格说明书
    • 需求分析的定义。
    • 需求分析的基本任务?
      • 准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。用需求规格说明书规范的形式准确地表达用户的需求
      • 准确了解用户情况需要解决的问题
      • 对需求反复求精和细化,得出对目标系统完整、准确和具体的要求
      • 需求建模:对获得的需求做出抽象,进行无歧义描述
      • 编制需求规格说明书
      • 进行需求分析的评审
    • 需求分析过程中主要面临的问题,针对这些问题采用哪些解决方法?
      • 系统的目标或范围问题
      • 需求不准确性问题
      • 需求的易变性问题
    • 需求工程包括哪些方面?
      • 问题分析
      • 问题评估和方案综合
      • 建模
      • 规约
      • 复审
    • 需求的类型(用户需求,需求获取方面)
      • 功能性需求、非功能需求(性能方面)
        • 功能需求:定义了系统做什么(描述系统必须支持的功能和过程)
        • 非功能需求(技术需求):定义了系统工作时的特性(描述操作环境和性能目标)
      • 设计约束、过程约束
        • 设计约束:对已经做出的设计决策或对问题解决方案集的限制的设计决策
        • 过程约束:对用于构件系统的技术和资源的限制
    • 两种需求文档
      • 需求规格说明书主要包括哪几方面的内容?
        • 引言
        • 任务概述(项目概述)
        • 数据描述(DFD、DD)
        • 功能描述
        • 接口
        • 性能需求
        • 属性
        • 其他需求
      • 需求定义文档
    • 几个图:常用的需求建模表示方法
      • ER图(Entity Relation):定义一个实体模型
        • 实体
        • 属性
        • 关系:一对多、一对一、多对多
      • 数据流图DFD(Data Flow Diagram):(描述逻辑模型的工具,表示数据在系统内的变化)指明数据在系统中移动时如何被变换;描述对数据流进行变换的功能
      • 事件跟踪
      • 状态机(STD,状态变迁图):指明作为外部事件的结果,系统将如何动作
      • Petri网
      • 用例图
      • 原型法

    • image-20201230111506051
    • 数据流图
      • image-20201230111555657
      • image-20201230111607277
      • 多层image-20201230111623460

    UML

    • 什么是面向对象分析OOA?

      • OOA定义:是确定需求或业务的角度,按照面向对象的思想来分析业务
    • OOA有哪几种基本模型?各种模型分别对应哪些UML图

      • 需求模型:
        • 用况图:捕获与描述用户的要求
      • 基本模型(类图)
        • 对象层:给出所有问题域和系统责任有关的对象,用对象类表示
        • 特征层:定义每个对象类的属性与服务
        • 关系层:通过以定义的关系描述对象类之间的关系
      • 辅助模型
        • 交互图:完成某项特定功能的一组对象之间的详细交互
        • 状态图:一个对象的状态变迁
        • 活动图:一个服务的流程或业务流程
        • 包图:对关系密切的元素打包,帮助理解系统模型
    • 主要包括哪些图形?它们分别应用在软件生存周期的哪些阶段?

    • 什么叫4+1视图

      • 包含哪些图
      • 如何应用在软件生命周期的各个阶段
    • 什么是UML? UML动态模型包括哪几种图? UML静态建模包括哪几种图?

      • UML(统一建模语言)是:面向对象分析和设计的图形化建模语言。

      • UML动态模型图:

        • 状态模型:状态图、活动图
        • 交互模型:描述对象之间的动态合作关系以及合作过程中的行为次序。(序列图和协作图可相互转换,语义上等价)
          • 序列图:描述对象之间的信息交互时的时间顺序
          • 协作图:描述系统对象之间如何协作共同完成系统功能的需求(结构方面
      • UML静态模型图:类图、对象图、用例图、部署图、构件图

    • UML中的9种图,主要是会用

      • 给需求,你来画,1道综合应用题
      • 给出完整的说明过程
      • 对各个阶段用典型的图画出来
    • 类图

    • 交互图

    • 状态图

    • 活动图

    • UML中的主要视图包括哪些图形?它们分别应用在软件生存周期的哪些阶段?

      • 用例图:用来表示系统和用户参与的公共活动的集合,也描绘了每个用例的参与者
      • 类图:在设计过程中的开始阶段用于定义应用的领域模型,系统中数据和对象的关系、对象之间的关系,对象可以执行的操作
      • 用例图:用例图表示了角色和用例以及它们之间的关系
      • 类图:通过关系和类表示的类图,可以图形化的方式描述一个系统的设计部分。
      • 对象图:它是描述系统在某个时刻的状态,对象图即可用于建模系统潜在的实质性的内容,也可以得到当前驻留在某个系统中的数据在某个时刻的系统快照
      • 状态图: 描述类的对象所有可能的状态,以及事件发生时状态的转移条件,对类图的补充
      • 序列图:用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。
      • 协作图:通过描绘对象之间消息的移动情况来反映具体的方案。显示对象及其交互关系的空间组织结构,而非交互的顺序。
      • 活动图:用于标识系统中的处理流程,与程序流程图不同,活动图包括超越于代码本身之上的用户活动,并能够清楚的描绘系统中的各个参与者分别扮演的不同角色
      • 组件图:组件图的主要目的是显示系统组件间的结构关系,反映代码的物理结构
      • 部署图(配置图):用来简要说明一个系统将如何分布于物理资源之上,也为系统在部署阶段对系统配置进行文档说明
      • 需求分析阶段:业务用例图
      • 概要分析阶段:用类图描述静态结构,用顺序图,合作图,活动图,状态图描述动态行为
      • 详细设计阶段:类图、包图
      • 实现

    系统设计

    • 面向对象的典型特征包括哪几个方面

      • 面对对象设计的基本特性:抽象、封装、继承、多态
      • 面向对象的特性(ppt):标识,抽象,分类,封装,继承,多态,持久性.
    • 主要的面向对象设计原则及各自的原理

      • OCP
      • LSP
      • DIP
      • ISP
      • CARP
      • LoD
    • 常用的内聚和耦合类型

      • 好设计的衡量:耦合和内聚

      • 耦合度:程序结构中各个模块之间相互关系的度量

        • 高度耦合:当两个构件之间有大量依赖关系的时候
        • 松散耦合:当两个构件具有某种程度的依赖,但他们之间的相互连接比较弱
        • 非耦合:构件之间不存在相互连接
      • 耦合度的类型 :

        • 内容耦合:当一个构件修改了另一个构件的内部数据项时,或一个构件内的分支转移到另外一个构件中的时候,可能出现内容耦合
        • 公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合
        • 外部耦合:若一组模块访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息
        • 控制耦合:一个模块传递给另一个模块的参数中包含了控制信息
        • 标记耦合:一组模块通过参数表传递记录信息
        • 数据耦合:两个模块之间仅通过参数表传递简单数据
        • 非直接耦合:两个模块之间没有直接关系
      • 耦合度的范围

        img

      • 内聚:一个模块内部各个元素彼此结合的紧密程度的度量

      • 内聚的类型

        • 巧合内聚(偶然内聚):模块内个部份之间没有联系,即使有联系,联系也很松散

        • 逻辑内聚:把集中相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪种功能

        • 时间内聚(经典内聚):几种相关的功能组合在一起

        • 过程内聚:一个模块内的处理时相关的,而且必须以特定次序执行

        • 通信内聚:一个模块各功能部份都使用了相同的输入数据,或产生了相同的输出数据

        • 信息内聚:这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点

        • 功能内聚:一个模块中各个部份都是完成某一具体功能必不可少的组成部份

        • image-20201230154019775

    • 至少要知道有哪几个

    • 模块化设计的基本原则是什么?

    • 什么是分治原则?

    • 使用分治原则有哪些注意事项?

    • 什么是结构化分析?结构化分析包括哪几种图,各个图的主要作用是什么?

      • 结构化分析:结构化分析(SA)方法,它用抽象的概念,按照软件内部的数据传递、变换的关系,自顶向下逐层分解的系统分析方法来定义系统的需求。
      • 数据流图、实体关系图、状态-迁移图
      • 数据流图(DFD):描述数据在目标系统中如何被传送或变换,以及描述如何对数据流进行变换,用于功能建模
      • 实体-关系图(E-R):描述数据对象及数据对象之间的关系,用于数据建模
      • 状态-迁移图(STD):描述系统对外部事件如何响应、如何动作,用于行为建模
      • 结构化分析方法使用工具:数据字典,实体关系图,数据流图,状态迁移图,逻辑说明工具
    • 判定表、数据字典、IPO图、PDL、DFD图、甘特图等常用的图形的主要作用是什么?哪些经常在结构化方法中使用

    测试

    • 测试的目标,衡量的标准

    • 软件测试,软件评审

    • 具体的步骤

      • 各个步骤测试的目标和对象是什么

      • 基本步骤 概念 目标对象 依赖的文档
        单元测试 检验每个模块能否单独工作 对象的单元模块 详细设计说明书、源程序清单
        集成测试 检验概要设计模块接口设计问题 组装后的程序模块 概要设计说明书
        确认测试 需求规格说明书为检验尺寸 可运行的目标软件 需求规格说明书
        系统测试 综合检验 整个系统 需求规格说明书
    • 什么是环路复杂度?环路复杂度主要应用在软件开发的哪个方面?环路复杂度如何计算?什么是独立路径,如何找出独立路径?

      • 环路复杂度定义:用来度量程序中的逻辑复杂度,定义为控制流程图中的区域数
      • 主要应用在软件开发的软件测试方面(通过分析控制构造的环路复杂性,到处基本可执行路径集合,从而设计测试用例)
      • 环路复杂度的计算:
        1. 定义为控制流程图中的区域数(区域为:边和结点圈定的范围)
        2. 设E为控制流图的边数,N为图中的结点数,则(V(G)=E-N+2)
        3. 设P为控制流图中的判定结点数,则:(V(G)=P+1)
      • 独立路径:独立路径式指包括一组没有处理的语句或条件的一条路径
      • 如何找出独立路径:从流控图上看,一条独立路径就是至少包含又一条在其他独立路径中从未含有的边的路径。
    • 什么是单元测试?单元测试有哪些基本方式?

      • 单元测试:又称模块测试,对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定功能,从而发现模块在编码中或算法中的错误
      • 模块接口测试,局部数据结构测试,路径测试,错误处理测试,边界测试
    • 什么是集成测试?集成测试的类型及主要的测试策略(集成测试有哪些基本方法)

      • 集成测试的定义:又称组成测试联合测试。在单元测试的基础上,将所有模块按照设计要求组装成系统,进行集成测试。

      • 集成(组装成系统)的基本方式:

        集成基本方式 一次性组装方式 增殖式组装方式
        别名 整体拼装 渐增式组装
        概念(过程) 首先对每个模块分别进行模块测试,然后再把所有模块组装在一起测试。 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统,在组装过程中边连接边测试,已发现连接中的问题。最后通过增殖逐步组装成为要求的软件系统。
        • 增殖式组装方式进一步分类
          • 自顶向下的增殖方式
          • 自底向上的增殖方式
          • 混合增殖式测试
    • 确认(验收)测试的内容

      • 进行有效性测试(黑盒测试)
      • 软件配置复查
      • α测试和β测试
      • 验收测试
      • 确认测试的结果
    • 了解测试

    • 黑盒测试和白盒测试的基本概念。黑盒测试和白盒测试的主要不同点是什么?

      • 对比 黑盒测试 白盒测试
        别名 功能测试,数据驱动测试,基于规格说明书的测试 开盒测试,结构测试,玻璃盒测试,基于覆盖的测试
        概念 不深入代码细节的测试方法 软件的过程性细节做细致的检查
        主要不同 从用户观点,按规格说明书要求的输入数据和输出数据的对应关系设计测试用例,是根据程序的外部特征进行测试 根据程序内部逻辑结构进行测试
        性质区别 是一种确认技术,回答“我们在构造一个正确的系统吗?” 是一种验证技术,回答“我们在正确地构造一个系统吗?”
    • 白盒测试主要包括哪几种?各自的测试内容是什么?

      • [(输入) (输出)] 覆盖 [路径](or 覆盖的分支)
      • 逻辑覆盖:以程序内部的逻辑结构为基础的设计测试用例的技术
        • 语句覆盖:使得每个可执行语句至少执行一次(最弱)
        • 判定覆盖:使得每个判断的取真分支和取假分支至少经历一次
        • 条件覆盖:使得程序中每个判断的每个条件的可能取值至少执行一次
        • 判定-条件覆盖:每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次
        • 条件组合覆盖:使得每个判断的所有可能的条件取值组合至少执行一次
        • 路径覆盖:设计足够的测试用例 ,覆盖程序中所有的可能取值。(使用基本路径覆盖)

    系统维护

    • 维护活动的类型:

      • 改正性:维护对日常的系统功能的控制
      • 适应性:维护对系统修改的控制
      • 完善性:完善现有系统
      • 预防性:防止系统性能下降到不可接受的程度
    • 谁来维护

      • 单独的维护小组
      • 开发人员
    • 各种维护活动的主要内容和目标

    • 软件再生:

      软件再生 含义
      文档重构 对源代码进行静态分析,给出更多的信息
      重组 改变代码结构
      逆向工程 根据代码重新创建设计和规格说明信息
      再工程 对现有工程进行逆向工程,接着再改变规格说明和设计以完成逻辑模型,然后,根据修改的规格说明和设计生成新的模型
    • 接口和抽象类之间的相同点和不同点分别是什么?如何在时间重理解和应用它们?

      • 什么是接口,什么是抽象类。他们之间的异同点。而且要知道怎么用接口和抽象类,什么时候用。举例谈谈。

      • 不同点

        对比 接口 抽象类
        概念 一组没有实现的操作的集合,是一个不带实现的类,它只规定类的外部特性,只有操作声明而没有方法体和物理存储区 指不具有任何对象的类,允许增加一些方法的实现
        语义 是一组具有相同属性和方法的逻辑上不相关的事物的一种抽象。 抽象类是一种类对一组具有相同属性和方法的逻辑上有关系的事物的一种抽象。
        数据成员 只能有静态的不能修改的数据成员 可以有自己的数据成员,也可以有非abstract的成员方法
        关系 一个类可以实现多个接口 表示一种继承关系,一个类只能使用一次继承关系
        默认行为 不能有 可以有
      • 相同点

      • 都是只定义接口而推迟定义其实现部份

    • 有可能会有一些名词解释

    其他

    • 软件项目管理中用于估计工作量的指标主要包括哪些?
      • 软件项目规模 Size
      • 工作量 Effort
      • 工期 Schedule
      • 质量 Quality
      • (工作量=规模/生产率)
      • (成本=工作量 imes 人工价)
      • 通常将工作量表达为:
        • 源代码的数量SLOC(source line of code)
        • 千行代码量KLOC
      • 功能度:克服了项目开始时无法准确得知源程序行数的实际困难
  • 相关阅读:
    黑客长期摇号不中"黑"掉北京小客车摇号网
    网络犯罪新动向:“黑客”学历不高 年龄不超30岁
    McAfee重返科技业 研制D-Central防政府监视
    windows系统服务编程代码示例分享
    Fireeye火眼公司发布报告,评论中国网络间谍活动
    FBI是如何破获“美国少女”裸照勒索案的
    得到内网域管理员的5种常见方法
    别人在用你的什么技术在赚钱.其实你天天在做
    慢一点恋爱,别急着洞房
    元芳,关于向朋友借钱你怎么看
  • 原文地址:https://www.cnblogs.com/xuwanwei/p/14214445.html
Copyright © 2020-2023  润新知