软件工程——结构化分析:一种自上而下的分析方法(包含习题)

在软件工程领域,解决复杂问题的一个重要方法是将问题分解为更小、更容易处理的部分。结构化分析(Structured Analysis)正是这样一种自上而下的分析方法,它可以帮助软件工程师更好地理解系统的需求、设计和实现。本文将简要介绍结构化分析的基本概念、组成部分以及其在软件工程实践中的应用。

什么是结构化分析?

结构化分析是一种分析软件系统的方法,旨在通过自上而下的分解,将大型复杂的问题划分为更小、更易于管理的部分。这种方法的主要目标是帮助软件工程师更好地理解系统的功能需求,并为之后的设计和实现阶段提供清晰、详细的指导。

结构化分析的主要组成部分包括数据流图(Data Flow Diagrams, DFD)、数据字典(Data Dictionary)、功能分解结构图(Functional Decomposition Diagrams, FDD)和过程描述(Process Description)。

数据流图

数据流图是结构化分析中的一种核心工具,用于展示系统中数据的流动、处理和存储。数据流图包括四个主要元素:处理(用圆圈表示)、数据流(用箭头表示)、数据存储(用双线表示)和外部实体(用方框表示)。通过使用数据流图,软件工程师可以清晰地展示系统的逻辑结构和数据流。

数据字典

数据字典是一种文档工具,用于详细记录系统中所有数据元素的定义、数据类型和使用。数据字典可以帮助开发人员确保对系统中数据的一致性和准确性,减少错误和歧义。

功能分解结构图

功能分解结构图是一种自上而下的分层表示法,用于将系统的功能分解为更小的、更易于理解和实现的子功能。每个子功能可以进一步细分为更小的功能模块。这种分解过程持续进行,直到到达一个可以直接实现的简单功能模块。这有助于软件工程师更好地组织和设计系统。

过程描述

过程描述是一种详细记录系统处理过程的文档工具。它包括对处理逻辑、输入、输出、操作和异常的详细描述。过程描述可以帮助软件工程师更好地理解和设计系统的处理过程。

结构化分析的优势与挑战

结构化分析具有以下优势:

  1. 易于理解:结构化分析使用简单的图形表示法和详细的文档工具,使得复杂的系统更易于理解和沟通。
  2. 易于维护:通过自上而下的分析方法,结构化分析可以更好地支持系统的修改和扩展。
  3. 良好的文档支持:结构化分析产生的文档可以作为项目过程中的关键参考资料,方便开发团队查阅和维护。

然而,随着面向对象方法和敏捷开发方法的兴起,结构化分析在某些情况下可能受到挑战。这是因为结构化分析关注的是过程和数据流,而面向对象方法关注的是类、对象和它们之间的交互。

结合不同方法以适应不同场景

为了权衡不同方法的优缺点,在实际项目中可能需要根据具体需求和团队经验来选择合适的分析方法。在某些情况下,结构化分析和面向对象分析甚至可以结合使用,以充分利用两种方法的优势。

例如,在需求分析阶段使用结构化分析,以帮助团队更好地理解和组织系统功能;在设计阶段使用面向对象方法,以便更好地抽象和建模类、对象和它们之间的关系。通过灵活地使用和结合不同的分析方法,软件工程师可以更好地应对各种项目挑战,提高软件质量和开发效率。

总结

结构化分析是软件工程领域中一种重要的自上而下分析方法,尤其在处理复杂问题时具有较好的适用性。虽然在某些情况下可能受到面向对象方法和敏捷方法的挑战,但结构化分析仍然在软件工程实践中发挥着重要作用。通过了解结构化分析的基本概念和方法,软件工程师可以更好地应对项目中的各种挑战,提高软件开发的质量和效率。

习题1:银行计算机储蓄系统

银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率、密码(可选)等信息,并印出存款单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
请用数据流图描绘本系统的功能,并用实体-关系图描绘系统中的数据对象。
数据流图:
基本模型:
在这里插入图片描述
第一级模型:
在这里插入图片描述
第二级模型:

在这里插入图片描述
E-R图1:
在这里插入图片描述
E-R图2:
在这里插入图片描述
E-R图3:
在这里插入图片描述

习题2:机票预定系统

为方便旅客,某航空公司拟开发一个机票预定系统。旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。
请用实体-关系图描绘本系统中的数据对象并用数据流图描绘本系统的功能。
解:
E-R图:

在这里插入图片描述

数据流图1:
在这里插入图片描述

数据流图2:
在这里插入图片描述

习题3:患者监护系统

目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请画出本系统的实体-关系图和数据流图
医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况,以形成患者日志。当某个病人的生理信号超出医生规定的安全范围时,向值班护士发出警告信息。此外,护士在需要时还可以要求系统打印出某个指定病人的病情报告。
解:
E-R图:
在这里插入图片描述

数据流图1:

在这里插入图片描述

数据流图2:

在这里插入图片描述

习题4:复印机的状态转换图绘制

办公室复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接收到复印命令则进入复印状态,完成一个复印命令的规定工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。
请用状态转换图描绘复印机的行为。

在这里插入图片描述

习题5:高校计算机教材购销系统

某高校计算机教材购销系统有以下功能。 学生购买书时,要先填写购书单,系统根据各班学生用表及售书登记表审查有效性,如果有效,系统根据教材库存量表进一步判断书库是否有书,如果有书,系统把领书单返回给学生,学生凭书单到书库领书,对短缺的教材,系统用缺书单的形式通知书库,新书购进书库后,也由书库将进书通知返回给系统。 请采用 SA 方法画出该系统的分层数据流图。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 7
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 优点和特点? 面向对象和结构化程序设计都是软件工程中常用的编程范式,它们有以下优点和特点: 1. 面向对象编程具有封装、继承和多态等特性,能够更好地实现代码的重用和扩展性,提高代码的可维护性和可读性。 2. 结构化程序设计强调模块化和层次化的程序设计,能够更好地控制程序的复杂度,提高代码的可靠性和可测试性。 3. 面向对象和结构化程序设计都能够提高程序的可重用性和可维护性,减少代码的冗余和错误,提高程序的效率和性能。 4. 面向对象和结构化程序设计都能够更好地实现软件工程的基本原则,如模块化、抽象化、信息隐藏、接口规范等,提高软件的质量和可靠性。 总之,面向对象和结构化程序设计都是软件工程中重要的编程范式,它们的优点和特点都能够更好地实现软件工程的基本原则,提高软件的质量和可靠性。 ### 回答2: 面向对象编程(Object-Oriented Programming,简称OOP)和结构化程序设计(Structured Programming)是软件工程领域中常用的两种编程范式。 面向对象编程是一种以对象为中心的编程方法。它的核心思想是将系统看作一组相互交互的对象,每个对象都有自己的属性和方法。相比于其他编程方法,面向对象编程具有以下特点: 1. 封装性:面向对象编程将对象的数据和操作封装在一起,通过对外提供接口来实现数据的访问和操作。这种封装性使得代码更加模块化和可复用。 2. 继承性:面向对象编程支持继承机制,即一个类可以继承另一个类的属性和方法。通过继承,可以实现代码的复用和扩展。 3. 多态性:面向对象编程支持多态机制,即同一种操作可以有不同的实现方式。这种多态性提高了代码的灵活性和可扩展性。 相比于面向对象编程,结构化程序设计是一种基于自顶向下的设计方法。它的核心思想是将程序的逻辑分解为一系列的模块,并通过顺序、选择和循环等结构来组织模块之间的执行流程。相比于面向对象编程,结构化程序设计具有以下特点: 1. 模块化:结构化程序设计将程序分解为多个相互独立的模块,每个模块具有明确的功能和输入输出。这种模块化使得程序更易于理解、测试和维护。 2. 自顶向下设计:结构化程序设计采用自顶向下的设计方法,即先定义高层次的程序框架,再逐步细化到具体的模块实现。这种设计方法使得程序的设计过程更加有条理和可控。 3. 顺序、选择和循环结构:结构化程序设计使用顺序、选择和循环等结构来组织程序的执行流程。这种结构化的执行流程使得程序更加逻辑清晰和易于调试。 总而言之,面向对象编程和结构化程序设计是软件工程中两种重要的编程范式。面向对象编程强调对象的封装、继承和多态,提高了代码的模块化、复用和扩展性;而结构化程序设计则通过模块化和结构化的执行流程,使得程序更易于理解、测试和维护。 ### 回答3: 面向对象和结构化程序设计都是软件工程的基础方法。 面向对象是一种以对象为基础进行软件设计和开发的方法。它将系统看作是一组相互协作的对象,每个对象都有自己的属性和行为,并且能够通过消息传递进行交互。面向对象的设计思想强调了模块化、封装、继承和多态等概念,使得系统具有可维护、扩展性强、可重用性高等特点。面向对象的设计方法能够更好地反映现实世界的问题和关系,使得软件开发更加灵活和易于理解。 结构化程序设计是一种在软件开发过程中采用自上而下的分解和模块化方法的设计思想。它强调程序结构的合理设计,将复杂的问题分解成较小的部分,并使用层次化和模块化的方式进行组织。结构化程序设计的目标是使得程序结构清晰、易于理解和修改,以提高软件的可维护性和可读性。结构化程序设计通常采用顺序、选择和循环等基本控制结构,使得程序逻辑更加清晰和可控。 在软件工程中,面向对象和结构化程序设计相互补充和互相影响。面向对象方法能够提供更好的抽象和封装能力,使得软件设计更加灵活和易于扩展。结构化程序设计则能够提供更好的程序组织能力,使得软件结构更加清晰和易于维护。综合运用这两种方法,能够在软件开发过程中保持既有的灵活性又不失结构性,提高软件的可维护性和可扩展性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐雨风栉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值