《软件工程 考试知识点总结》由会员分享,可在线阅读,更多相关《软件工程 考试知识点总结(25页珍藏版)》请在金锄头文库上搜索。
1、软件:软件是能够完成预定义功能和性能的计算机程序,包括使程序正常执行所需的数据, 以及有关描述程序操作和使用的文档。 软件=程序+文档程序是为了解决某个特定问题而用程序设计语言(C/C+/Java/HTML/JSP/SQL)描述的适合 计算机处理的语句序列。 程序需要经过编辑、编译、链接等过程才能成为在计算机上执行的机器语言序列。程序执 行一般需要一定的输入数据,同时也会输出运行结果。文档:软件开发活动的记录,主要供人们阅读,既可用于专业人员和用户之间的通信和交 流,也可以用于软件开发过程的管理和运行阶段的维护。文档类型:需求分析文档、软件设计文档、软件测试文档、用户使用说明书等。编写文档的目
2、的 促进对软件的开发、管理和维护; 便于各种人员(用户、开发人员)的交流。软件的特征 软件开发不同于硬件设计 软件开发更依赖人员素质、智力、组织、合作和管理 开发成本、进度很难估算 软件生产不同于硬件制造 软件生产只需复制 软件维护不同于硬件维修 不会老化 维护困难和复杂软件的类型 系统软件:计算机系统软件是计算机管理自身资源(如 CPU、内存、外存、外设等),提高 计算机使用效率并为计算机用户提供各种服务的基础软件。 例如,操作系统、数据库管理系统等。实时软件:监测、分析和控制现实世界发生的事件,能以足够快的速度对输入信息进行处 理,并在规定的时间内作出反应的软件。 例如,各种设备运行监控软
3、件等。嵌入式软件:嵌入式计算机系统将计算机嵌入在某一系统之中,使之成为该系统的重要组 成部分,控制该系统的运行,进而实现某一特定的物理过程。用于嵌入计算机系统的软件 称为嵌入式软件。 例如,航空航天系统、指挥系统、汽车控制系统等。科学和工程计算机软件:它们以数值算法为基础,对数值量进行处理和计算,主要用于科 学和工程计算。 例如,数值天气预报、导弹计算、石油勘探、计算辅助设计(CAD)等。事务处理软件:用于处理事务信息,特别是商务信息的计算机软件。事务信息处理是软件 最大的应用领域。例如,企业资源计划系统(ERP)、物流管理系统等。云计算是一种新型的计算模型,把 IT 资源、数据、应用作为服务
4、通过互联网提供给用户。 云计算也是一种基础架构管理的方法论,大量的计算资源组成 IT 资源池,用户动态创建高 速虚拟化的资源提供用户使用。 云架构的基本层次 公有云 混合云 私有云 基础设施层:软件即服务(Software as a Service, SaaS) 平台层:平台即服务(Platform as a Service, PaaS) 应用层:软件即服务(Software as a Service, SaaS)软件危机的根源 与软件本身的特点有关。 软件不易于维护。 在软件开发过程中,或多或少地采用了错误的方法和技术。 对用户需求没有完整准确的认识,就匆忙着手编写程序。软件编程范型 范型:
5、又称为科学基质,代表科学共同体成员所共有的信念、价值、技术手段的总称。简 单地说,范型是某一学科在一定时期内展开研究活动共有的基础和准则。编程范型:是指导和制约编程活动的范型,通常在编程语言中体现。 目前主要的编程范型有: 过程式编程范型 面向对象编程范型 基于构件的编程范型 面向服务的编程范型软件工程学软件工程管理软件开发技 术软件开发方法学软件工具软件工程环境软件管理 学软件经济 学软件度量学过程式编程范型: 过程式编程范型遵循“程序=数据结构+算法”的思路,把程序理解成一组被动的数据 和一组能动的过程所构成。 典型过程式编程语言包括 COBOL、Fortran、Pascal 和 C 等。
6、面向对象编程范型: 指用封装了数据和对数据操作的对象以及对象之间的消息传递描述计算的编程范型。 Java、C#等是典型的面向对象编程范型语言。 “对象+消息”的机制取代了“数据结构+算法”的思路,因而较好地解决了解空间与 问题空间的一致性。基于构件的编程范型: 指以构件的创建,构件的管理以及复用已有的构件组装形成应用为基本活动的编程范 型。 目前主要的构件开发技术有:COM/DOCM、CORBA、EJB、Spring、OSGi 等。 构件:模块化的、可部署、可替换的软件系统组成部分,它封装了内部的具体实现并 对外提供一组接口。 面向服务的编程范型: 指以服务的创建、服务的管理以及复用已有的服务
7、组装形成应用为基本活动的编程范 型。 目前面向服务开发的技术有 Web Service、SCA 等。 服务(Service):是自治、开放、自描述、与实现无关的网络构件。程序编码与软件开发过程是内涵不同的两个概念,二者既有联系,也有区别: 编写程序仅是软件开发过程的一部分内容。 软件开发过程通常包括:需求分析、软件设计、软件开发(编写程序)、软件测试等多个 阶段。 编写程序是建立在编程范型的基础之上的,有什么样的编程范型,一般对应有什么样 的软件开发过程。软件工程分代 传统软件工程:以结构化程序设计为基础, 其开发过程一般包括:结构化分析结构化设计面向过程的编码软件测试。 面向对象软件工程:以
8、面向对象程序设计为基础 开发过程:面向需求建模 面向对象分析面向对象设计面向对象的编码与测试。基于构件的软件工程:以软件复用为目标, 开发过程两个阶段:领域工程和应用工程,连接两个阶段的纽带是可复用构件库。面向服务的软件工程: 云计算环境下软件工程软件工程发展趋势趋势一:开放计算:开放计算融合了开放标准、开放架构和开源软件三个方面。 趋势二:全球化软件协作交付 趋势三:社区驱动的软件交付 趋势四:模块化 趋势五:灵活的开发治理/软件生存周期:一个软件从开始计划起,到废弃不用止,统称为软件的生存周期。软件生存周期的主要活动 问题定义:主要弄清楚用户需要用计算机来解决什么问题。 可行性研究:为提出
9、的问题寻求在技术上可行、在经济上有较高效益的可操作解决方 案。 需求分析:可分为需求和分析两个阶段。需求阶段的任务是弄清楚用户对软件系统的 需求,并建立需求模型(业务模型);分析阶段的任务则是在需求模型的基础上,建立软件 分析模型。 软件设计:软件设计的任务是将分析模型转变为考虑具体实现技术和平台的软件设计 模型。 编码:按照选定的程序设计语言和可复用软件构件包,将设计文档翻译成为源程序。 软件测试:测试的任务是提高软件的质量。测试分为多个层次:单元测试、综合测试、 确认测试和系统测试。 运行维护:运行维护阶段的任务主要是做好软件维护,使软件在整个生存周期内都能 满足用户的需求,并延长其使用寿
10、命。软件过程(软件开发模型):为了获得高质量软件所需要完成的一系列任务的框架。典型的软件过程 传统的软件过程:瀑布模型、快速原型模型。 软件演化模型:增量模型、螺旋模型、构件集成模型。 形式化模型:转换模型、模型驱动的架构。 统一过程和敏捷过程瀑布模型的特征 阶段间的顺序性和依赖性:前一阶段工作完成以后,后一阶段工作才能开始;前一阶 段的输出文档,是后一阶段的输入文档。 推迟实现观点:需求分析-软件设计-编码 质量保证观点:每一阶段都要完成规定文档,没有完成文档,就认为没有完成该阶段 的任务;每一阶段都要对已有的文档进行复审,以便尽早发现问题,消除隐患。瀑布模型存在问题 软件开发的初始阶段指明
11、软件系统的全部需求是困难的,有时甚至是不现实的。 需求确定以后,用户和软件项目负责人要等到相当长的时间(设计实现测试运行)才能得到一份软件的最初版本。如果用户对这个软件提出比较大的修改意见,那么软件项目 将会受到巨大的人力、财力和时间方面的损失。快速原型模型(Rapid Prototype Model) 原型(思想):是一个部分开发的产品,它使客户和开发人员能对计划开发的系统来实 现一小部分关键需求,以确保需求是一致的、可行和符合实际的。 快速原型模型(过程):首先建立一个能够反映用户主要需求的原型,让用户实际看 一看未来系统的概貌,以便判断哪些功能是符合需求的,哪些还需要改进。然后将原型反
12、复改进,最终建立完全符合用户要求的新系统。建立快速原型的方法: 原型系统仅包含未来的主要功能以及系统的重要接口。 原型系统充分展示软件的可见部分,如数据的输入方式、人机界面、数据的输出格式。为了尽快向用户提供原型,开发原型系统时应尽量使用能缩短开发周期的语言和工具。将原型系统作为基础,通过补充与修改获得最终的实际系统。增量开发方法: 设计系统时,能够使其一部分一部分地交付,从而在系统其余部分正在开发的同时, 用户已经获得了一部分功能。 因此,通常会存在两个并行的系统:运行系统或产品系统和开发系统。增量:定义发布时首先定义一个小的功能子系统,然后在每一个新的发布中增加新功能。 迭代:开始就提交一
13、个完整的系统,然后在每一个新的发布中改变每个子系统的功能。面向对象的基本概念 对象:对象是对现实世界中个体或事物的抽象表示,是它的属性和相关操作的统一封 装体。属性表示对象的性质,属性值规定了对象所有可能的状态。对象的操作是指该对象 可以展示的外部服务。 类:类用于表示某些对象的共同特征(属性和操作),对象是类的实例。 继承关系:它是现实世界中遗传关系的直接模拟,可以来表示类之间的内在联系以及 对属性和操作的共享。子类可以沿用父类的某些特征,同时子类也可以具有自己独立的属 性和操作。 消息:消息传递是对象与其外部世界相互关联的唯一途径。对象可以向其他对象发送 消息以请求服务,也可以响应其他对象
14、传来的消息,完成自身固有的某些操作,从而服务 于其他对象。 面向对象=对象+分类+继承+消息通信构件:特殊的实现类,在某一领域中具有一定的通用性,可以在不同的系统中复用。 构件库:将构件存储起来构成构件库,构件库是基于构件的软件开发模型的基础。模型驱动的架构(Model Driven Architecture, MDA) 计算无关模型(CIM)CIM 是非常高级层次的抽象模型,它以一种独立于计算机的方式捕获了系统的关键需求以及问题域的词汇。 平台独立模型(PIM)PIM 是独立于任何底层平台的(例如,EJB, .Net)、表达软件系 统业务语义的模型。 平台相关模型(PSM)PSM 包含了所有
15、在 PIM 中表达的功能,并且还添加了针对实现 平台的设计思想。 代码(Code)软件系统(Software System) 统一过程(Unified Process, UP) 描述了软件开发中各个环节应该做什么、怎么做、什么时候做以及为什么要做,描述 了一组以某种顺序完成的活动。统一过程结构 阶段:一个软件的生存周期分为四个阶段:初始、细化、构造、迁移; 迭代:每个阶段又分为一个或多个迭代。迭代是一个完整的开发循环,它的结果是产 品的一个可执行版本。 工作流:每次迭代有一个核心工作流,核心工作流包括 5 个活动:需求、分析、设计、 实现、测试,此外,还可能有其它辅助工作流。 里程碑:每个阶段
16、或迭代一般都设定一个里程碑,里程碑是一个时间点,在这个时间 点上必须作出重要决策,达到一些关键的目标。可行性研究的内容 1.经济可行性:有无经济效益?多长时间收回成本? 2.技术可行性:现有技术能否实现?有哪些难点? 3.运行可行性:运行方式是否可行? 4.法律可行性:是否侵权和触犯法律?结构化分析与设计 结构化分析任务 建立分析模型。SA 模型是描述软件需求的一组模型,主要包括功能模型、数据模型和 行为模型。 编写需求规格说明书。SRS 是分析阶段编写的以文字为主的文档,主要内容包括:引言、 信息描述、功能描述、行为描述、质量保证、接口描述以及其他需求等。 结构化分析的指导思想。抽象与分解时结构化分析的主要指导思想。 软件设计=总体设计+详细设计。总体设计的任务