《软件工程》复习笔记

简答题

软件的定义;软件工程生命周期以及各阶段工作;

软件的含义:研制了软件设计和生产的方法与工具,从而为“文档加程序”,文档是软件质的部分;程序是文档代码的表现形式。

软件的正确含义

  • 运行时,能提供所要求的功能和性能的指令或计算机程序的集合
  • 程序能满意地处理信息的数据逻辑
  • 程序能满意地按照预定的商业逻辑进行处理
  • 描述程序功能需求以及程序如何操作和使用的文档

软件危机的定义;表现;原因;

软件危机真正的含义:在计算机软件开发和维护过程中所遇到的一系列严重问题,即怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机的具体表现

  • 对软件开发成本和进度的估计常常不准确;
  • 用户对“已完成的”软件系统不满意的现象经常发生;
  • 软件产品的质量往往不可靠;
  • 软件常常不可维护:不能适应新环境,程序错误不容易纠正;
  • 没有适当的文档资料;
  • 软件成本占总成本的比例逐步上升;
  • 软件开发速度跟不上计算机应用普及深入的趋势;

产生软件危机的原因

  • 软件本身的特点;
  • 软件开发与维护的方法不正确;
    • 忽视软件需求分析的重要性;
    • 忽视软件文档的重要性;

UML 2.0中顺序图和协作图的定义以及区别;

  • 顺序图:描述了对象之间传递消息的时间顺序,它用来表示用例中的行为顺序,是强调消息时间顺序的交互图;
  • 协作图:协作图是一种类图,它包含类元角色和关联角色而不仅仅是类元和关联。协作图强调参加交互的各对象的组织。

顺序图和协作图的区别:时序图描述了交互过程中的时间顺序,但没有明确地表达对象间的关系;协作图描述了对象间的关系,但时间顺序必须从序列号获得。

面向对象设计6大原则;

  • 模块化
  • 抽象
  • 信息隐藏
  • 弱耦合
  • 强内聚
  • 可重用

测试的流程以及每个测试阶段的测试对象;

测试的流程

  1. 单元测试:针对模块,对模块的模块接口、局部数据结构、重要的执行路径、边界测试
  2. 集成测试:组装软件的系统技术;
  3. 确认测试
  4. 系统测试
  5. 发版测试

软件冗余和硬件冗余的定义和区别;

软件冗余是指在计算机系统中通过多次实现相同的功能或使用多个独立开发的软件模块来增加系统的可靠性。硬件冗余是指在计算机系统中使用多个相同或类似的硬件组件来提高系统的可靠性。

主要的区别在于软件冗余是通过多次实现相同的功能或使用多个独立开发的软件模块来增加系统的可靠性,而硬件冗余是通过使用多个相同或类似的硬件组件来提高系统的可靠性。软件冗余主要在软件

简述三种软件设计方法及其特点;

  1. 结构化设计方法:结构化设计方法是一种基于模块化和分解的软件设计方法。
    • 模块化:将系统划分为多个相互独立、功能清晰的模块,每个模块负责特定的功能或任务。
    • 层次化:模块按照层次结构组织,低层次模块提供基础功能,高层次模块调用低层次模块来实现更高级的功能。
    • 自顶向下:设计从系统的总体结构开始,逐步细化到模块级别,确保模块之间的接口和功能关系清晰明确。
    • 结构图表示:使用图形表示方法(如流程图、数据流图等)来表示模块之间的关系和数据流动。
  2. 面向对象设计方法:面向对象设计方法是一种以对象为核心的软件设计方法。
    • 封装性:将数据和相关操作封装在对象中,通过定义对象之间的接口来实现数据的访问和交互。
    • 继承性:通过继承机制,实现对象之间的层次关系和代码重用,子类可以继承父类的属性和方法,并可以扩展或修改它们。
    • 多态性:同一类型的对象可以表现出不同的行为,允许在运行时根据上下文选择合适的方法实现。
    • 类图表示:使用类图来表示系统中的类、它们之间的关系和属性、方法等。
  3. 需求分析方法:

生命周期分为哪几个阶段,每个阶段的内容是什么

  1. 计划阶段:前景、范围得到认可
  2. 构想阶段:项目计划得到认可
  3. 开发阶段:项目范围内的所有产品特性开发完成
  4. 稳定阶段:可发布版本准备就绪
  5. 发布阶段:发布完成

形式化、非形式化、半形式化的概念,简述各自优缺点

  1. 用自然语言描述需求规格说明,是典型的非形式化方法;
  2. 用数据流图或实体-联系图建立模型,是典型的半形式化方法;
  3. 所谓形式化方法,是描述系统性质的基于数学的技术。

非形式化的缺点:

  • 存在矛盾、二义性、含糊性、不完整性一级抽象层次混乱等问题
  • 二义性是指读者可以用不同方式理解的参数
  • 不完整性可能是在系统规格说明中最常遇到的问题之一;
  • 抽象层次混乱是指在非常抽象的陈述中混进 一些关于细节的低层次陈述。

形式化的优点:

  • 能够简洁准确地描述物理现象、对象或动作的结果,因此是理想的建模工具;
  • 可以在不同的软件工程活动之间平滑地过渡,不仅功能规格说明,而且系统设计也可以用数学表达;
  • 它提供了高层确认的手段,可以使用数学方法证明,设计符合规格说明,程序代码正确地实现了设计结果。

模块独立性的两个度量概念,并指出设计原则及其内容

两个度量概念:耦合和内聚

启发式规则:

  • 改进软件结构提高模块独立性
  • 模块规模应适中
  • 深度、宽度、扇入和扇出都应适当
  • 模块的作用域应该在控制域内
  • 力争降低模块接口的复杂程度
  • 设计单入口单出口的模块
  • 模块功能应该可以预测

面向对象设计方法的准则及其内容

  • 模块化:把数据结构和操作这些数据的方法紧密地结合在一起;
  • 抽象:对外开放的公共接口构成了类的规格说明,这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类中包含的数据进行操作;
  • 信息隐藏:类结构分离了接口与实现,从而支持了信息隐藏;
  • 弱耦合:耦合指一个软件结构内不同模块之间互连的紧密程度,弱耦合有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。

PPT重点页面


《软件工程》复习笔记
http://zhouhf.top/2023/06/08/《软件工程》复习笔记/
作者
周洪锋
发布于
2023年6月8日
许可协议