软件工程(吕云翔第二版)部分简答题答案

简答题

做过的练习,答案不一定对

第一章

  1. 与计算机硬件相比,计算机软件有哪些特点?

答:①软件具有抽象性、②软件的生产与硬件的制造不同、③软件会退化、④软件的开发尚未完全摆脱手工艺的开发方式、⑤软件开发和运行必须依附于特定的计算机系统环境

  1. 为什么说软件工程的发展可以在一定程度上解决软件危机的各种弊端?
  2. 请简述软件工程的基本原则。

答:①用分阶段的生命周期计划进行严格的管理

②坚持进行阶段评审

③实行严格的产品控制

④采用现代程序设计技术

⑤软件工程结果应能被清楚地审查

⑥开发小组的人员应该少而精

⑦承认不断改进软件工程实践的必要性

  1. 请简述软件工程研究的内容。
  2. 请简述软件工三要素

答:过程、方法、工具

  1. 请简述软件工程的目标。
  2. 通常有哪几种软件开发方法?

答:①结构化方法

②面向数据结构方法

③面向对象方法

④形式化方法

  1. 请列举你所知道的软件工程

第二章

  1. 如何理解软件生命周期的内在特征?

答:软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程。软件生命周期这个概念从时间的角度将软件的开发和维护的复杂过程分解为了若干个阶段,每个阶段都完成特定的相对独立的任务。由于每个阶段的任务相对于总任务难度会大幅度降低,在资源分配时间把握和项目管理上都会比较容易控制。合理地划分软件生命周期的各个阶段,使各个阶段之间既相互区别又相互联系,为每个阶段赋予特定的任务。

  1. 请对比瀑布模型、快速原型模型、增量模型和螺旋模型
  2. 在统一软件开发过程模型中核心工作流程包含哪些?

答:业务建模、需求、分析和设计、实现、测试和部署

  1. 当需求不能一次搞清楚,且系统需求比较复杂时应选用哪种开发模型比较适合?
  2. 敏捷过程的核心价值观有哪些?它对传统方法的“反叛”体现在哪些方面?

答:核心价值观:

①个体与交互高于过程和工具

②可运行软件高于详尽的文档

③与客户协作高于合同(契约)

④对变更及时响应高于遵循计划

体现:

敏捷方法对传统方法的“反叛”体现在以人为中心,不再依靠文档来控制过 程,认为传统过程过于僵化,文档繁琐,主张对传统过程“瘦身”,在上述价 值观的支配下,做到能够为准。

  1. 什么是软件过程?它与软件工程方法学有何关系?
  2. 某大型企业计划开发一个“综合信息管理系统”,该系统涉及销售、供应、财务、生产人力资源等多个部门的信息管理。该企业的想法是按部门优先级别乏别逐个实现,边应用边开发。对此,需要一种比较合适的过程模型。请对这个过程模型做出符合应用需要的选择,并说明选择理由。

第四章

  1. 如何理解需求分析的作用和重要性

答:需求分析是一个非常重要的过程,它完成的好坏直接影响了后续软件开发的质量。

  1. 常用的需求获取的方法有哪些?对比各种方法的优缺点。
  2. 如何理解结构化需求分析方法的基本思想

答:结构化的需求分析方法是一种面向数据流的需求分析方法,其中数据作为独立实体转换,数据建模定义了数据的属性和关系,操作数据的处理建模表明当数据在系统流动时处理如何转换数据。

  1. 请简述数据流图的作用
  2. 请简述数据字典的作用。

答:数据字典用于定义数据流图中各个图元的具体内容,为数据流图中出现的图形元素做出确切的解释。

  1. 请简述E-R图的作用。
  2. 请简述状态图的作用。

第五章

  1. 请简述软件设计与需求分析的关系。

答:软件设计就是要把需求规格说明书中归纳的需求转换为可行的解决方案,并把解决方案反映到设计说明书里。需求分析回答软件系统能“做什么”的问题,而软件设计就是要解决“怎么做的问题”。

  1. 请简述软件设计的目标和任务。
  2. 请简述在软件设计的过程中需要遵循的规则。
  3. 软件设计如何分类,分别有哪些活动?
  4. 什么是模块、模块化软件设计为什么要模块化?

答:模块是数据说明、可执行语句等程序对象的集合,是构成程序的基本构件,可以被单独命名并通过名字来访问。

模块化是把系统或程序划分为独立命名并且可以独立访问的模块,每个模块完成一个特定的子功能。

软件模块化的目的是建立可重用的软件组件,在不需要修改或仅作少量修改的情况下,可再次用来组建新的软件系统,提高软件的开发周期和可靠性。

  1. 请简述结构化设计的优点
  2. 请简述面向数据流的设计方法的主要思想。

答:主要是指依据一定的映射规则,将需求分析阶段得到的数据描述、系统的输入端到输出端所经历的一系列变换或处理的数据流图转换为目标系统的结构描述

  1. 请简述用户界面设计应该遵循的原则。
  2. 改进的Jackson图与传统的Jackson图相比有哪些优点?

答:可以清晰地表示层次结构,易于对自顶向下的结构进行描述;

结构易懂、易用,并且比较直观、形象;

不仅可以表示数据结构,也可以表示程序结构;

  1. 为什么说“高内聚、低耦合”的设计有利于提高系统的独立性?

第六章

  1. 请简述面向对象的基本概念。
  2. 与结构化开发过程相比, 为什么面向对象能更真实地反映客观世界?
  3. 什么是面向对象方法?面向对象方法的特点有哪些

答:面向对象的方法是为了模拟现实世界,使各种不同的现实世界系统在计算机中得以实现,进而为工作、学习、生活提供帮助

面向对象的特点:

  • 把数据和操作封装在一起,形成对象。对象是构成软件系统的基本构件
  • 把特征相似的对象抽象为类
  • 类之间可以存在继承或被继承的关系,形成软件系统的层次结构
  • 对象类之间通过发送消息进行通信
  • 将对象的私有信息封装起来。
  1. 什么是类?类与传统的数据类型有什么关系?
  2. 与传统的软件工程方法相比,面向对象的软件工程方法法有哪些优点?
  3. UML的作用和优点有哪些?

答:UML的作用:UML是一种通用的可视化建模语言,可以用来描述、可视化、构造和文档化软件密集系统的各种工作

UML的优点:

  • UML语言使系统建模过程标准化,统一化,规范化。
  • UML在整个软件开发过程中采用相同的概念和表示方法,在不同的开发阶段,不必转换概念和表示方法,避免了传统软件开发方法的两个鸿沟。
  • UML采用图形化的表现形式。产生的模型易于理解,易于开发人员与用户之间的沟通,从而能够及时得到用户的反馈信息。
  • 用UML进行系统建模所得到的建模制品不仅仅包括各种模型框图,还有大量丰富的文档,这些文档给系统后期的维护工作带来了便捷。
  • UML不是一门程序设计语言,但可以使用代码生成工具将UML模型转换为多种程序设计语言代码,或使用反向生成工具将程序源代码转换为UML模型。
  1. 如何着手从自然语言描述的用户需求中画出用例图?
  2. 用例脚本有何作用?
  3. 类之间的外部关系有至有几种类型?每种关系表达什么语义

答:类之间的外部关系:关联、依赖、泛化、实现

关联:表达模型元素间的一种语义关系

依赖:表示的两个元素之间语义上的联系

泛化:描述类的一般-特殊关系

实现:将一个模型连接到另外一个模型

第七章

  1. 对比面向对象需求分析方法和结构化需求分析方法。
  2. 类之间的外部关系有几种类型?每种关系表达什么语义?
  3. 请简述面向对象分析的原则。
  4. 请简述面向对象分析的过程。

答:①首先要找到系统的操作者,既用例的参与者

②可以把参与者执行的每一个系统功能都看作一个用例

③确定了系统的所有用例之后,就可以开始识别目标系统中的对象和类了,把具有相似属性和操作的对象定义为了一个类

  1. 什么是动态模型?

答:动态模型描述对象和关系的状态、状态转换的触发事件、对象的服务(行为)。

  1. 什么是对象模型?

答:对象模型描述了现实世界中的“类与对象”以及它们之间的关系,表示了目标系统的静态数据结构

  1. 什么是功能模型

答:功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组数据流图组成

第八章

  1. 什么是软件体系结构?
  2. 软件体系结构的作用体现在哪些方面?

答:规范软件开发的基础结构便于开发人员与用户的沟通;模块化、层次化设计,有利于减少返工提高效率便于系统开发前期、后期的筹备与服务

  1. 典型的体系结构风格有哪些?它们各自有什么特点?
  2. 什么是软件质量属性?

答:软件质量属性是指软件系统在其生存周期过程中所表现出的各种特征

  1. 客户机/服务器体系结构有什么特点

  • 通过合理地划分三层结构,使之在逻辑上保持独立,提高系统的可维护和可扩展性
  • 更灵活地选用相对应的平台和应用系统,使之在处理负荷能力上与处理特性上分别适应各层的要求并且这些平台和组成部分可以具体良好的可升级性和开放性
  • 应用的各层可以独立地并行开发每层可以根据自己的特点选用合适的开发语言
  • 安全相对较高,应用层屏蔽了客户直接访问数据库的权利,使得未授权用户或黑客难以绕应用层直接获取敏感数据,为数据的安全管理提供了系统结构的支持
  1. MVC模型有什么特点?

答:MVC可以最大化地重用代码,且灵活性极高

  1. 什么是设计模式?常用的设计模式有哪些?
  2. 良好的软件体系结构设计有什么好处?

第九章

  1. 请比较结构化软件设计方法和面向对象软件设计方法
  2. 请简述面向对象设计的启发规则。
  3. 请简述面向对象的设计原则

答:①模块化、②抽象化、③信息隐藏、④低耦合、⑤高内聚、⑥复用性

  1. 请简述系统设计和对象设计。

答:系统设计关注于确定实现系统的策略和目标系统的高层结构。

对象设计以问题域的对象设计为核心,其结果是一个详细的对象模型

第十章

  1. 在选择编程语言时,通常要考虑哪些因素?
  2. 请简述编程风格的重要性。要形成良好的编程风格可以从哪些方面做起?

答:重要性:具有良好编程风格的源程序具有较强的可读性、可维护性、同时还能提高团队开发的效率。良好的个人编程风格是一个优秀程序员素质的一部分。

<2>①版权和版本声明、②程序版本、③注释、④命名规则、⑤数据说明、⑥语句构造、⑦输入\输出、⑧效率

  1. 编程语言主要有哪几类?总结每类语言的优缺点

答:①机器语言

优点:执行速度快

缺点:对程序员的要求较高,花费时间长,直观性差,容易出错

②汇编语言

优点:可高效地访问、控制计算机的各种硬件设备

缺点:不能直接识别汇编语言

③高级语言

优点:易懂、易记、易改、移植性较强

缺点:经过解释或编译才能被计算机识别、执行,其效率比汇编语言还低

④超高级语言

优点:易懂、易记、易改、移植性较强

缺点:经过解释或编译才能被计算机识别、执行,其效率比汇编语言还低

  1. 对标识符命名时,要注意哪些原则?
  2. 为什么要对源程序进行注释?

答:注释有利于软件开发人员之间以及开发人员和用户之间进行交流的重要途径,有利于日后的软件维护。

  • 45
    点赞
  • 495
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
软件工程吕云翔第二版)是一本关于软件工程领域的教材,其中包含了许多重要的知识点。以下是其中一些知识点的介绍: 1. 软件生命周期:软件生命周期是指软件从概念到退役的整个过程。它包括需求分析、设计、编码、测试、部署和维护等阶段。 2. 软件需求工程:软件需求工程是指对软件系统需求进行识别、分析、规范和验证的过程。它包括需求获取、需求分析、需求规格和需求验证等活动。 3. 软件设计原则:软件设计原则是指在软件设计过程中应遵循的一些基本原则,例如单一职责原则、开闭原则、里氏替换原则等。这些原则有助于提高软件的可维护性、可扩展性和可重用性。 4. 软件测试:软件测试是指对软件系统进行验证和验证的过程。它包括单元测试、集成测试、系统测试和验收测试等不同层次的测试。 5. 软件项目管理:软件项目管理是指对软件项目进行计划、组织、协调和控制的过程。它包括项目计划、项目组织、项目进度管理和项目风险管理等活动。 6. 软件质量保证:软件质量保证是指通过制定和执行一系列质量管理活动来确保软件产品的质量。它包括质量计划、质量控制和质量改进等方面。 以上是软件工程吕云翔第二版)中的一些重要知识点。如果您对其中的某个知识点有更具体的问题,我可以为您提供更详细的解答。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值