《软件工程》期末复习题型整理

一、判断(每小题1分,共5分)

1、软件危机自从软件工程学科出现以后就永远不会再出现。(✖)
2、面向过程方法、面向功能方法、结构化方法,三者是同一个意思。( ✅ )
3、签订合同前乙方要进行一个粗略的系统分析与系统设计过程。(✔ )
4、满足需求就是解决问题。( ✅ )
5、面向对象的软件工程中,类的分析、设计、实现是贯彻整个软件开发过程的核心。( ✔ )

1、文档必须指挥程序,而决不允许程序指挥文档。(✔)
2、用例图中外部角色必须是人。(✖)
3、软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC等)编写的程序,软件开发实际上就是编写程序代码。 ( ✖️)
4、概念数据模型的实质,就是分析和梳理现实中的数据及其数据联系,为建立数据库设计打好基础。( ✔ )
5、需求分析都是从业务流程开始的,这是因为:用户只能从业务流程上提出需求,而将功能、性能和接口置于业务流程之中。 (✖)✅

二、名词解释(每小题3分,共15分)

(补充)
⭐️编程规范:是编程时应该遵守的一些规范,它的内容包括命名规范、界面规范、提示及帮助信息规范、热键定义规范等。
🌟 瀑布模型:是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。

//————章一 软件工程内容和方法

  • 软件:= 知识+程序+数据+文档

  • 软件工程:是研究软件开发和软件管理的一门工程学科

  • 软件工程学科体系(swebok2004):十个知识域

    1. 软件需求
    2. 软件设计
    3. 软件构造
    4. 软件测试
    5. 软件维护
    6. 软件配置管理
    7. 软件工程管理
    8. 软件工程过程
    9. 软件工程工具和方法
    10. 软件质量(前五个讲软件开发后五个软件和管理)
  • 软件工程课程(5方面内容)

    1. 软件生命周期
    2. 软件开发方法
    3. 软件支持过程
    4. 软件管理过程
    5. 软件工程标准与规范
  • 软件工程基本原理8

    1. 用分阶段的生命周期计划严格管理软件开发…
    2. 坚持进行阶段评审…
    3. 实行严格的产品版本控制
    4. 采用现代程序设计技术
    5. 结果应能清楚的审查…
    6. 开发小组的人员要少而精
    7. 要不断的改进软件工程实践的经验和技术,要与时俱进
    8. 二八定律…
  • 软件生命周期模型:🤔
    是指在整个软件生命周期中,软件开发过程应遵循的开发路线图。或者说,软件生命周期模型是软件开发全部过程、活动和任务的结构框架
    【补充】软件生命周期的九个阶段
    在这里插入图片描述

//—————章二 生命周期与开发模型

  • 原型模型:在初步需求分析之后,马上向客户展示一个软件产品原型(样品),对客户进行培训,让客户试用,在试用中收集客户意见,根据客户意见立刻修改原型,之后再让客户试用,反复循环几次,知道客户确认为止。🤔

  • 迭代模型及其9个核心流程:
    也被称作迭代增量式开发或迭代进化式开发)是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。
    ⭐️迭代模型是美国的三位软件专家提出的RUP(Rational Unified Process)模型。RUP是一种“逐步求精”的面向对象的软件开发过程模型,被认为软件界迄今为止最完善的、商品化的开发过程模型。
    九个核心流程
    1)业务建模
    2)需求获取
    3)分析设计
    4)实施
    5)测试
    6)部署
    7)配置与变更管理
    8)项目管理
    9)环境

  • XP模型🤔
    即极限编程模型。四条核心原则:交流、简单、反馈和进取
    在这里插入图片描述

//—————————-章三 立项

  • ⭐️订单软件:与固定的用户签订软件开发合同,由软件公司启动该项目的开发,这类软件被称为“订单软件”

  • 🌟非订单软件:市场调研后,认为某产品将会有巨大的市场空间,而软件公司在人力资源、设备资源、抵抗风险、资金和时间上都具备开发该产品的能力,于是决定立项,这类软件产品被称为“非订单软件”

  • 任务书:一旦立项或者签订合同,企业领导或者软件管理部门就要下达《任务书》

  • 合同:合同是民事主体之间设立、变更、终止民事法律关系的协议。

  • 立项建议书:立项之后所拟的立项文档。在某种程度上代替开发合同或用户需求报告,作为软件策划的基础。

//—————————-章四 需求分析

  • 需求分析
    1)用户解决问题或达到目标所需的条件或能力。
    2)系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力。
    3)一种反应第1)或2)所描述的条件或能力的文档说明。
    【补充】
    两个阶段:需求获取阶段和需求规约阶段
    两大类:功能性需求和非功能性需求

  • 基线:基线是软件工作产品,它是要经内部和外部评审过的,是下一阶段工作的基础。🤔

  • 审计:审计,是复查评审活动程序的合法性,是否按程序与规范进行等。

  • 里程碑:里程碑是一个标记,只需要经过内部评审。一个里程碑是一个检查点,但不一定对应一条基线。
    在这里插入图片描述

//———第五章 策划

  • 定义软件过程:就是根据选定的生命周期模型,规定软件的开发阶段,以及每一阶段的工作步骤和文档标准等内容。

  • 风险分析:指对项目及团队的政策风险、技术风险、技能风险、资源风险等因素,进行逐个分析与分解,将一个大风险分解为若干个小风险,对各个小风险进行排除,最后制定跟综合监控风险的风险管理计划。

  • 🌟LOC:指所有的可执行的源代码行数,包括可交付的工作控制语言语句、数据定义、数据类型声明、等价声明、输入/出格式声明等。🤔

//——第六章 建模(考一)

  • 功能模型:实质上是用户需求模型,用来描述系统能做什么,即对系统的功能、性能、接口和界面进行定义。(B/A/S三层结构中对应浏览层)

  • ⭐️业务模型:实质上是业务逻辑模型,用于描述系统在何时、何地、由何角色、按什么业务规则去做,以及做的步骤或流程,即对系统的操作流程进行定义。若站在B/A/S三层结构上看,业务模型对应在中间层(业务逻辑层或业务应用层)上建模。

  • 数据模型:实质上是实体或类的状态关系模型,用于描述系统工作前的数据来自何处,工作之中的数据暂存在什么地方,工作后的数据放到何处,以及这些数据的状态及相互之间的关联,即对系统的数据结构进行定义。若站在B/A/S三层结构上看,数据模型就对应在数据层(数据库服务器)上建模。信息系统中的数据模型,指它的E-R图加上相应的数据字典🤔

//第七章 设计

  • 三层结构设计:三层体系结构通常被划分为表示层、中间层和数据层三层,各个分层之间通过对外接口互相访问。

//第八章 实现(考2)

  • ⭐️构件:所谓构件,就是被标识的且可被复用的软件制品

  • 🌟中间件:是一个非常大的组件(构件),一般在网络上运行,完成批量数据的传递和通信工作,调用方式是通过一组事先约定的格式与参数进行的。

  • 🌟结对编程:在敏捷方法中,成对(或结对)编程是极限编程的实践之一。当进行成对编程时,一个程序员输入代码,另一个在旁边观察代码中是否存在错误,并思考下一步要进行的工作。

//第九章 测试

  • 软件测试:是按照规定的测试规程发现软件缺陷的过程。

  • 软件缺陷:所谓软件缺陷,即计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。

  • 主要类型:
    (1)软件未达到产品说明书中已经标明的功能;
    (2)软件出现了产品说明书中指明不会出现的错误;
    (3)软件未达到产品说明书中虽未指出但应当达到的目标;
    (4)软件功能超出了产品说明书中指明的范围;
    (5)软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。

  • 软件测试的V模型:模型的左侧是开发阶段,右侧是测试阶段。开发阶段从了解并定义软件需求开始,然后要把需求转换到概要设计和详细设计,最后形成程序代码。测试阶段是在代码编写完成以后,先做单元测试,然后做集成测试、系统测试和验收测试。
    在这里插入图片描述
    在这里插入图片描述

  • 黑盒测试:也称不透明盒测试,把测试对象看做一个黑盒子,测试人员完全不考虑内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。检查非功能性需求,是否满足设计要求。

  • 白盒测试:又称透明盒测试,要求测试人员必须清楚被测试对象的内部实现细节。白盒测试方法的测试依据是《详细设计说明书》。理论上讲,面向程序执行路径进行穷举代码测试,直至覆盖所有路径,才算完成了白盒测试。

  • 等价类:将程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据当作测试用例。

  • 有效等价类
    对规格说明而言,有意义、合理的输入数据所组成的集合;

  • 无效等价类
    对规格说明而言,无意义的、不合理的输入数据所组成的集合;

  • 边界值:无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。

  • 测试需求:指软件测试员站在与用户相同角度上理解需求,主要是确保需求的可测试性。
    同时找出软件需求和用户需求的偏差,并确保认可的偏差修改后体现在软件需求中,因为测试工作以《软件需求说明书》)为基准,测试人员需要尽量保证《软件需求说明书》可以满足测试工作。

  • bug

//第十章 运维

  • 结构化维护与非结构化维护:
  • 结构化维护的前提是软件产品或软件项目必须有完善的文档,并且文档与程序代码相互匹配,两者完全一致。
  • 若软件产品或软件项目只有程序而没有文档,或文档很不规范,很不齐全,对这样的软件进行维护,称为非结构化维护。

//第十一章 管理

  • ⭐️CMMI:CMMI是 Capability Maturity Model Integration (能力成熟度模型集成)的缩写 ,是由美国卡内基·梅隆大学软件工程研究所CMU/SEI( Software Engineering Institute) 推出的评估软件能力与成熟度等级的一套标准。

  • 🌟敏捷文化:以XP运动先驱者面貌出现的Kent Beck和Ron Jefies 等人,他们将 CMM/CMMI为代表(还有 ISO 9001等)的过程管理思想称为“重载软件过程 而将他们自己提出的过程管理思想称为“轻载软件过程。即敏捷文化。

  • 软件质量:软件质量,是供方提供的软件产品满足用户明确和隐含需求的能力特性的总和。🤔

  • 软件配置项:是对软件开发过程中配置项的一组追踪和控制活动,它开始于软件开发之初,结束于软件淘汰之时。

  • 软件配置管理的目标:标识变更,控制变更,确保变更,并向其他有关人员报告变更。

三、分析论述(2*15)
  1. 论述软件工程在软件行业的作用🤔
    软件工程的作用是:
    在一定的成本和时间条件下,使开发人员开发出的软件具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性等性能,同时还可以满足用户的需求。
    1、适用性:在不同的约束条件下,所使用的软件能否满足用户的需求。
    2、有效性:软件系统是否能够最有效地利用计算机的时间和空间资源。
    3、可修改性:用户可以对系统进行一定的修改,但是要求即便修改也不会增加原系统的复杂性。
    4、可靠性:当因为用户操作不当等原因造成软件系统失效时,软件可以自行挽回。
    5、可理解性:系统结构清晰,用户可以很快上手、使用方便。
    6、可维护性:用户可以自行对软件潜在的错误进行修改和完善。
    7、可重用性:把概念或功能相对独立的一个或一组相关模块定义为一个软部件,可组装在系统的任何位置,从而达到降低工作量的目的。

  2. 为什么说面向对象方法能描述无穷的世界?
    面向对象方法的特点是,将现实世界的事物(问题域)直接映射到对象。分析设计时由 对象抽象出类(Class), 程序运行时由类还原到对象(Obijet)。面向对象方法的优点是:能描述无穷的信息世界,同时易于维护。其缺点是:对于习惯于面向过程方法的人,较难掌握。

  3. 分析面向过程方法的缺点
    采用面向过程的方式开发很难解决一些比较复杂的业务逻辑,面向过程会导致软件元素间的“耦合度”非常高,主要其中的一个元素出现问题,这个软件都受到影响最终导致软件的“扩展力”非常差。没有把元素独立出来, 以达到重复使用,扩展力大,灵活的作用。
    总的来说,使用面向过程方法前期投入成本较高,需要进行独立体的抽取,大量的系统分析和设计

  4. 为什么要面向流程进行需求分析?
    系统的功能、性能、接口、界面都是在流程中动态实时的反映出来。在所有的流程(物流、人流、资金流、信息流、单据流、报表流、数据流)中,数据流最重要,也最具有代表性,因为在计算机网络系统内,一切流程都表现为数据流, 或者说是数据流在不同方向的投影,而流程是动态的、实时的。所以说,需求分析是面向流程的。

  5. 为什么迭代模型中要以业务建模作为第一个核心流程?
    采用迭代模型,事先要有一个初始业务模型,以便进行迭代。这就是为什么将“业务建模”作为9个核心流程之首的道理)。
    **业务建模。**目的是,了解目标组织(将要在其中部署系统的组织)的结构及机制;了解目标组织中当前存在的问题,并确定改进的可能性:确保客户、最终用户和开发人员就目标组织达成共识:导出支持目标组织所需的系统需求。通俗地讲,业务建模就是用户业务流程的重新规划与合理改进,即业务流程的优化,目的是使开发出来的系统能反映最优化的业务流程。

  6. 需求获取的三原则是什么?怎样理解?🤔
    所谓需求获取,就是开发者与用户共同提取并共同确认需求。在需求获取过程中,人们将“划分、抽象和投影”三要素作为需求获取的三原则。
    (1)划分,就是捕获问题空间的“整体/部分”关系。
    (2)抽象,就是捕获问题空间的“一般/特殊"或“一般/特例”关系。
    (3)投影,就是捕获问题空间的多维“视图”。
    所谓需求规约,就是对获取并确认的需求进行定义与分析,并且解决需求中存在的二义性和不一致性问题,最后以一一种系统化的文档形式,准确地表达用户的需求,形成《需求分析规格说明书》。

  7. ⭐️论述需求分析的任务🤔

(1)画出目标系统的组织结构图,列出各部门的职责与各岗位的角色,即组织机构模型。
(2)画出目标系统的业务操作流程图,即业务模型。
(3)画出目标系统的数据流图DFD,即单据和报表的流图,掌握业务规则,获得初步数据模型。
(4)列出目标系统的功能点列表,即功能模型。
(5)列出系统的性能点列表,即性能模型。
(6)列出目标系统的接口列表,即接口模型。
(7)确定目标系统的运行环境,即环境模型。
(8)确定目标系统的界面约定,即界面模型。
(9)对目标系统的开发工期、费用、开发进度、系统风险等问题进行分析与评估。

  1. 分析网络操作系统中的三个模型(功能模型、业务模型、数据模型)
    对于网络操作系统,它的功能模型就是管理网络上的所有软硬件资源及其相互间的通信;它的业务模型就是按优先级别组织网络中的进程和线程运行;它的数据模型就是网络节点上的数据结构,如进程控制块和进程调度队列的数据结构。

  2. 数据库设计的步骤是什么?他们与软件生命周期各个阶段的关系是什么?🤔
    在这里插入图片描述

  3. 🌟论述数据库设计中的原子化理论
    站在数据库设计者的立场上看,只要实现属性原子化、实体原子化、主键原子化、联系原子化(简称四个原子化理论),数据的所谓更新异常、插入异常、删除异常、数据冗余现就从根本上消除了。在这里:
    属性原子化(Property aomization),是指实体的属性本身不能再分解了;
    实体原子化(Entity atomization),是指实体本身不能再分解了;
    主键原子化(Primary Key aomization),是指实体的主键本身是一个ID 字段;
    联系原子化(Relationship aomization),是指实体之间的联系都是一对多联系(1对1或1对0联系被看成1对多联系的特例)。

  4. ⭐️谈谈对软件设计基本原理的理解🤔
    (1)用分阶段的生命周期计划严格管理软件开发。阶段划分为计划、分析、设计、编程、测试和运行维护。
    (2)坚持进行阶段评审。若上一阶段评审不通过,则不能进入下一阶段开发。
    (3)实行严格的产品版本控制。
    (4)采用现代程序设计技术。
    (5)结果应能清楚地审查。因此,对文档要有严格要求。
    (6)开发小组的成员要少而精。
    (7)要不断地改进软件工程实践的经验和技术,要与时俱进。
    (8)二八定律。在软件工程中,所谓二八定律,就是一般人常常将20% 的东西误以为是80% 的东西,而将80%的东西误以为是20% 的东西。

  5. 谈谈对软件实现原则的理解🤔
    (1)尽可能简单。在软件实现过程中,应创建简单、容易阅读的代码;相同功能的代码只写一次;简单的代码易于维护;通过采用一些编码规范和标准,可以有效地降低代码的复杂度。
    (2)易于验证。无论是在编码、测试还是实际操作中,软件工程师应很容易发现其中的错误;自动化的单元测试可产生易于验证的代码;写代码时,要限制使用复杂的难以理解的语言结构。
    (3)适应变化。外部环境、软件需求和软件设计,在整个开发过程中可能会随时变化,因此要求软件实现时考虑适应这些变化。
    (4)遵守某一编程规范。尽量使用标准库函数和公共函数。不要随意定义全局变量,尽量使用局部变量。使用括号以避免二义性。
    (5)选择项目组成员最熟悉的工具或语言。软件实现工具或语言不是越时髦越好,而是越成熟与越熟练越好,这样可以避免技术风险和技能风险。

  6. ⭐️以软件中常见的登录功能举例说明软件三层体系结构的设计
    三层体系结构( Three-Layer Framework) 通常被划分为表示层、中间层和数据层三层,各个分层之间通过对外接口互相访问。三层之间,通过各自提供的接口来访问,比如登录功能,在表示层输入用户名和密码,表示层会将用户名和密码传递给业务层,业务层将用户名和密码经过一些处理和封装之后,再传递给数据层,数据层执行会查询数据库中的用户名和密码,并将结果返回业务层,业务层对结果进行检查,确认登录是否成功,并返回表示层,表示层再显示给用户看。

  7. 🌟以软件中常见的登录功能举例说明软件开发中的三个模型(功能模型、业务模型、数据模型)的建模思想

  8. 论述软件维护的最新方法🤔
    可以从不同角度来划分软件维护的方法。

  • 第1种方法基于两层结构划分软件维护的方法。 客户机/服务器的两层结构,目前和今 后仍然是一种应用软件结构。 对这种结构的应用软件,维护的方法是,将客户机和服务器上的两部分软件分开维护。
  • 第2种方法基于三层结构划分软件维护的方法。客户机/应用服务器/数据库服务器三层结构,是一种最有发展潜力的成用软件结构,客户机上的软件维护,不需到用户现场去。只需在系统后台服务器上借助网络的运行,使软件的维护、安装与升级,变成一个完全透明的过程,再不用担心光盘的安装或损伤。这就是三层结构的优点之,也是网络革命带来的软件维护革命,使用户能享受简单、方便、全面、及时的维护与升级服务。常见的杀病毒工具升级办法,就是这种维护。
  • 第3种方法基于“三种开发方法”即“面向过程开发、面向元数据开发、面向对象开发"来划分软件维护的方法。面向过程开发方法对应面向过程维护方法,就是前面介绍的结构化维护方法。面向元数据开发方法对应面向元数据维护方法,就足从数据库表的结构人手,运用视图技术、事务处理技术、分布式数据库技术、数据复制技术、数据发布和订阅技术, 来维护数据库服务器上数据的完整性和一致性。 面向对象开发方法对应面向对象维护方法,就是利用对象“继承”的特性,从维护公司的类库、构件库、组件库、中间件库入手,来达到维护应用软件的目的。在三层结构中,大部分对象分布在应用服务器上。在数据库服务器上,只有数据对象。在客户浏览器上,只有网页对象。
四、画图题
1、画出瀑布模型的示意图

在这里插入图片描述
2、画出混凝土公司信息管理系统的用例图、分析类图、体系结构图、顺序图、活动图部件图、部署图、实体关系图
在这里插入图片描述
在这里插入图片描述
(其他图不好找,怀疑是老师随便写的)
3、画PAD(问题分析)图
基本知识:
在这里插入图片描述
例题:
在这里插入图片描述

4、设计白盒测试用例

5、画出图书馆管理系统的用例图、分析类图、体系结构图、顺序图、活动图、部件图、部署图、实体关系图
用例图:
在这里插入图片描述
在这里插入图片描述
E-R图:
在这里插入图片描述
只包含实体类的类图:(考试要求部分,根据E-R图画出)
在这里插入图片描述
类图:
(参考网上的,比较清楚且实用)
在这里插入图片描述
(书上的版本)
在这里插入图片描述
顺序图:(5+1个实体)
(网上版本,实用)
在这里插入图片描述
(书上)
在这里插入图片描述
其他:(其他图只有书上有)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6、画出ATM系统的用例图、分析类图、体系结构图、顺序图、活动图、部件图、部署图、实体关系图
顶层用例图:
在这里插入图片描述
细化的用例图:
在这里插入图片描述
实体关系类图:
在这里插入图片描述
只包含实体类的类图:(考试要求部分,可根据E-R图画出来)
在这里插入图片描述
分析类图:
在这里插入图片描述
登陆顺序图:(4+1个实体)
在这里插入图片描述
取款顺序图
在这里插入图片描述

修改密码顺序图
在这里插入图片描述
存款顺序图:
在这里插入图片描述
转账顺序图:
在这里插入图片描述
查询余额顺序图:
在这里插入图片描述
(这部分是老师给的答案:存款顺序图,感觉不是很实用,还是看上面的吧)
在这里插入图片描述
7、画出课程项目(选课系统)的用例图、分析类图、体系结构图、部署图
用例图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
顶层用例图:(考试要求的部分,角色用例图放在一起的结果,自己画的,有点乱…)
在这里插入图片描述
E-R图:
在这里插入图片描述
类图:
在这里插入图片描述
只包含实体类的类图:(考试要求的题型,自己总结的,有点乱…这部分可以根据E-R图画出来)
在这里插入图片描述
顺序图:4
在这里插入图片描述
(自己总结的…)
在这里插入图片描述

8、⭐️网上书城
9、🌟网上面包房(网上购物系统)

网上…(通用顶层用例图)
在这里插入图片描述
只包含实体类的类图:
在这里插入图片描述
类图:

没会员(用户角色包含:管理员、顾客)
在这里插入图片描述
有会员(用户角色包含:管理员、游客、会员)
在这里插入图片描述
顺序图:
(1)登陆(有会员)
在这里插入图片描述
登陆(没有会员的通用用户的登陆顺序图)

在这里插入图片描述

(2)注册
在这里插入图片描述
(3)查看订单
在这里插入图片描述
(4)浏览商品信息
在这里插入图片描述
(5)加购
在这里插入图片描述
(6)购买
用户-浏览商品界面/购物车-商品-订单-商家

在这里插入图片描述
在这里插入图片描述

设计题部分主要:

顶层用例图(20)
只包含实体类的类图(10)
登陆用例的顺序图(10)
以登录功能举例说明该系统三层体系结构的设计。(10)
以登录功能举例说明该软件开发中三个模型(功能模型、业务模型、数据模型)的建模思想

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值