结构化与面向对象

人类认识世界总是循序渐进的过程,软件工程也一样,从最开始的单兵作战,再到软件作坊,直到如今的大规模软件开发,软件工程从业者不断总结实践中存在的问题以及解决途径,逐渐形成了一系列的软件工程方法,而所有这些方法中,最为经典的当属结构化和面向对象的方法。本文将在认识两种方法的基础上探讨如何在软件工程过程中将这两种方法结合起来。

1 结构化方法

1.1 结构化方法的基本思想

面对复杂的问题,我们先要想办法让它变得简单。结构化方法的基本思想就是通过自顶向下、逐步求精、模块化的方法来让让复杂的软件开发过程变得简单。 

  • 自顶向下、逐步求精就是指把一个复杂的问题划分成若干小问题,然后再分别解决,将问题的复杂性降低到人可以掌握的程度。即将复杂的系统分解成若干个人们易于理解和分析的子系统。在分解过程中,被分解的上层就是下层的抽象,下层为上层的具体细节,即最高层的问题最抽象,而底层的则较为具体。
  • 模块化就是把程序划分成若干个模块,每个模块完成一个子功能,将多个模块组织起来实现整个软件系统的功能。模块化设计方法强调清楚地定义每个模块的功能和它们的输入/输出参数,而模块的实现细节隐藏在模块中,与 其他模块之间的关系是调用关系,因此,模块化程序易于调试和修改。
1.2 结构化软件工程过程

将上述思想融入到软件工程的各个过程,便是结构化软件工程过程。包括:

  • 结构化分析:应用结构化方法进行软件需求分析时,是基于数据流的。即通过数据流图的自顶向下逐层分解来建立目标系统的功能模型,通过数据字典来和E-R图构建数据模型,通过流程图状态转换图来构建行为模型,最后形成该阶段的里程碑文档:《需求规格说明书》,为下一步的软件设计提供依据。
  • 结构化设计:在结构化分析的基础上,采用面向数据流的设计方法,以数据流图为基础得到软件的模块结构,应用流程图PDL语言判定表或判定树设计代码逻辑,最后形成该阶段的里程碑文档:《软件设计说明书》,文档中还需要对各模块内部及模块间的接口(包括界面设计)做出说明,为软件实现阶段的工作提供依据。
  • 结构化程序设计:就是采用一种面向过程的程序设计语言,实现上述设计的系统。
1.3 结构化软件工程工具

如图所示,结构化方法主要是基于下面的工具来对系统进行建模。

1.3.1 数据流图
1.3.2 E-R图
1.3.3 数据字典
1.3.3 流程图

1.3.4 盒图

1.3.5 PAD图

1.3.6 状态转换图
1.3.7 PDL语言
1.3.8 判定表
1.3.9 判定树
1.3.10 模块图

1.3.11 层次图

1.3.12 HIPO图

1.3.8 面向过程的程序设计语言

2 面向对象方法

3 结构化与面向对象相结合的软件工程过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/409358.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZooKeeper--基于Kubernetes部署ZooKeeper

ZooKeeper 服务 服务类型: 无头服务(clusterIP: None),这是 StatefulSet(有状态集)必需的配置。 端口: 2181 (客户端): 用于客户端连接。 2888 (跟随者): 用于 ZooKeeper 服务器之间的连接。 3888 (领导者): 用于领导者…

Linux查看jvm相关参数以及设置调优参数

1、查看jvm相关参数 1.1、查看Java进程命令 jcmd会显示出来对应的Java进程id 1.2、查看堆内存各个区域的使用大小、具体大小和GC次数以及耗时 jstat -gc 4036145jstat -gc 进程id 各个参数的含义。 如上图,4036145的进程,FGCT是0.452,FGC是4.平均每次full gc耗时0.11秒。 …

Android13系统源码内置App并通过AIDL调用获取内置存储卡的真实大小

jix 进行从事Android系统源码开发不得不在原有的系统上内置自己的App。通过内置App一般都需要调用些系统才能访问的系统级App。App的部署和调试需要依赖源码系统。通过命令 : mm 来实现。 第三方App想调用内置的app需要通过跨进程调用。 这里通过AIDL来实现跨进程…

Qt第二十章 数据库操作

文章目录 Qt操作数据库QSqlDataBaseQSqlQuery执行SQL语句 QSqlRecordQSqlField数据库模型QSqlQueryModelQSqlTableModelQSqlRelationalTableModel 编译MySql驱动msvc版本MySql客户端程序部署 Qt操作数据库 需要在cmakelist加上Sql模块 QSqlDataBase 可以通过静态成员查看支持的…

苹果已删除照片的恢复方法有哪些?盘点几种实用办法

苹果设备上的照片往往是珍贵的回忆,但不小心删除照片的情况时有发生。幸运的是,苹果提供了几种方法来帮助用户恢复已删除的照片。本文将详细介绍几种有效的恢复方法,帮助您找回那些重要的照片。 方法一:通过“最近删除”文件夹恢复…

SQL-DCL-数据控制语言

一、 DCL-管理用户 二、DCL-权限控制 一、 DCL-管理用户,主要是DBA数据库管理员使用,开发使用较少 # 1、查询用户 use mysql; show tables; desc user; select * from user; # host为主机地址, 主机地址和用户名确定唯一性# 2、创建用户 create user itcastlocalh…

【AD9361 数字基带】多片基带内FPGA补偿 I/Q Rotation

I/Q 旋转 Rotation 在许多多通道射频系统中,如 AD-FMCOMMS5,甚至在 AD-FMCOMMS2、AD-FMCOMMS3 上,都需要测量或校正两个复数 (I/Q) RF 信号之间的相位差。 从纯粹的数学描述来看,单个正弦波没有相位&…

【数学建模】趣味数学模型——等额还款数学模型

问题 在银行贷款中,通常采用等额还款。假定银行贷款的年利率为 p,贷款 k 元,分 m 年采用每月等额还款方式还清。问每月还款多少钱?总共还的钱是多少?每月还款中还本金和利息各是多少元? 如果考虑每月等额…

VTK随笔一:初识VTK(QT中嵌入VTK窗口)

VTK(Visualization Toolkit)是一个用于可视化和图形处理的开源软件库。它提供了一系列的算法和工具,可以用来创建、渲染和处理二维和三维的图形数据。VTK可以在多个平台上运行,并支持各种编程语言,包括C、Python和Java…

基于Springboot + vue + mysql 车辆充电桩管理系统 设计实现

目录 📚 前言 📑摘要 1.1 研究背景 📑操作流程 📚 系统架构设计 📚 数据库设计 💬 E-R表 3.4.2 数据库具体设计 系统功能模块 系统首页 用户注册 充电桩 个人中心 用户后台管理模块 用户登录…

完成课题ssrf实现.SSH未创建写shell,同时完成其他漏洞复现

SSRF 一种网络安全漏洞,发生在服务器端应用程序中,允许攻击者通过服务器向任意网络资源发送请求,而无需用户直接参与。这种漏洞通常源于程序设计错误,例如当应用程序使用用户的输入作为URL请求的一部分,而没有适当的验…

Ansible初识

ansible初识 Ansible是一种自动化工具,用于配置管理、应用程序部署和任务自动化。它基于Python语言开发,使用SSH协议进行通信,并且不需要在被管理的主机上安装任何客户端。Ansible使用简单的YAML语言来描述任务和配置,使得操作简…

Vue3的三种样式控制及实现原理

你好,我是沐爸,欢迎点赞、收藏和关注。个人知乎 Vue3中一共有三种样式控制,分别是全局样式控制、局部作用域样式控制和深度样式控制,今天我们一起看下这三种样式控制的使用,以及实现的原理是什么。 一、全局样式控制…

NRK3301语音识别芯片在汽车内饰氛围灯上的应用方案解析

随着智能汽车的快速发展,车载语音交互技术逐渐成为提升驾驶体验的关键技术之一。传统的汽车内饰氛围灯语音识别系统往往依赖于手动操作,不仅操作繁琐,而且在驾驶过程中容易分散驾驶员的注意力。因此,开发一种高效、便捷的汽车内饰…

SpringBoot集成Redis

目录 12.1 配置文件12.2 防火墙12.3 Jedis(一般不用了,了解即可)1.介绍2.步骤3.写YML4.主启动5.业务类 12.4 Lettuce1.介绍以及和Jedis的区别2.步骤1.改pom2.业务类 12.5 Redis Template(推荐)1.连接单机1.改pom2.写YML3.业务类3.1配置类3.2 service3.3 controller测…

Stable Diffusion的微调方法原理总结

在深度学习领域,Stable Diffusion作为一种强大的生成模型,正逐渐成为图像和视频生成领域的热门话题。它不仅能够模拟复杂的自然和人工系统中的随机演化行为,还通过一系列微调方法,显著提升了模型在特定任务上的性能。本文旨在深入…

开放式耳机别人能听到吗?开放式的防漏音效果到底好不好?

开放式耳机的设计是允许一部分声音泄露出来,所以当您使用开放式耳机听音乐或通话时,周围的人可能会有所察觉。具体别人能听到多少,取决于几个因素: 音量大小:如果音量设置得比较高,那么周围的人更容易听到…

多线程面试常问

一、创建线程的几种方式 1、继承Thread类并重写run()方法。 public class MyThread extends Thread {Overridepublic void run() {System.out.println("通过集成 Thread 类实现线程"); } } // 如何使用 new MyThread().start() 2、实现Runnable接口并重写run()方法…

Linux文件系统及常见快捷键

Linux文件系统及常用快捷键 (只是对linux简单的介绍,新手常用的快捷键) 1、Linux文件系统结构 windows文件系统 Windows操作系统将硬盘进行分区,然后用 A 、 B 、 C 、 D 、等符号标识。存取文件时一定要清楚存放在哪个磁盘的哪个目录下。 Linux 文件系统结构 …

基于FPGA的SD NAND Flash数据读写实现

1、存储芯片分类 目前市面上的存储芯片,大致可以将其分为3大类: ① EEPROM EEPROM (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器,是一种掉电后数据不丢失的存储芯片。EEPROM 可以在电脑上或专用设备…