软件工程——快速掌握结构化开发方法

2024-01-12 20:58

本文主要是介绍软件工程——快速掌握结构化开发方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一个案例

小王在一家IT公司担任项目经理,主要负责IT项目的开发。公司老板找到小王,要求小王开发一个名片自动识别APP产品,人们用手机扫描一下名片,名片上的信息就能自动识别并存储起来,当然需要使用者登录APP才可以。老板要求小王带领团队尽快完成名片自动识别APP产品的系统分析、设计和编码,让产品早日上线。小王决定使用他熟悉的结构化开发方法来开发该产品。在后面的叙述中,名片自动识别APP产品也称为系统或项目。

 

结构化开发方法的阶段

一般来说开发方法都会将开发过程分为几个阶段,结构化开发方法将开发过程分为系统规划阶段、系统分析阶段、系统设计阶段、系统实施阶段和系统维护阶段,这五个阶段也是软件项目的开发生命周期,面向对象开发方法也遵循这五个阶段。在结构化开发方法中,系统分析阶段也称为结构化分析,系统设计阶段称为结构化设计,系统实施阶段称为结构化编程。

系统规划阶段主要是从技术、资金、市场前景等方面确定软件是否可做,该怎么做的问题?例如,课程案例产品涉及到图像识别技术,项目团队是否有足够的技术力量完成图像识别的研发,如果没有图像识别的技术力量,该如何做,是否可以考虑对接百度的AI接口。

在结构化分析阶段主要是确定软件要解决哪些问题?用什么方式来解决这些问题? 软件最终提供哪些功能。 例如,在课程案例中,老板只是提到了用手机扫描名片,至于具体怎么扫描、用户操作流程、识别名片哪些信息、对识别的名片有无质量要求,这些问题都需要小王调研和细化需求,并最终确定软件的功能。

在结构化设计阶段主要是确定软件的技术架构、功能模块、用户界面、数据构成等内容,软件采用何种技术架构?功能模块是如何划分的?用户看到的软件是什么样子?数据库有哪些表?这些都是要在结构化设计阶段完成的。

在结构化编程阶段主要确定软件开发平台的选型、软件产品的测试计划、软件部署等内容。例如,在课程案例中,APP开发肯定要选择Java平台,如果要支持iPhone手机的话,还要选择IOS平台;在编码过程中,为保障编码质量,还需要确定测试计划,对产品进行单元测试和集成测试;部署软件时是选择阿里云,还是腾讯云。

系统维护阶段主要完成系统维护,虽然经过严格测试,系统在运行过程中,依然会出现各种各样的问题需要维护,同时新的需求也要求系统不断地升级版本。

公司老板让小王尽快带领团队对项目进行系统分析、设计和编码。因此小王只需注重结构化开发方法的结构化分析、结构化设计和结构化编程三个阶段就可以了。

 

结构化分析阶段

系统分析阶段也称为结构化分析,该阶段定义系统需要做什么(功能需求),系统需要存储和使用哪些数据(数据需求),需要什么样的输入和输出,以及如何把这些功能结合在一起来完成任务。在系统分析阶段使用的主要图形模型是数据流图(DFD),它显示了系统的输入、处理、存储和输出以及它们如何在一起协调工作。

小王首先要做的工作是做详细的系统需求调查,搜集系统数据流动和业务处理过程的资料和数据,以便深入了解系统中数据的流动、业务处理过程和方法,为建立系统分析阶段的模型提供充分的依据。在课程案例中,小王需要调查用户对自动识别名片这个产品的看法和需求,用户对产品的期望,有哪些类型的名片,名片上具体有哪些信息,用户希望怎么管理名片等内容。

在系统需求调查中,小王通过识别引起系统以某种方式做出响应的所有事件,来识别系统功能需求,关于事件在需求分析课程会详细讲述。下表是名片自动识别APP产品功能需求的主要事件。

 

该项目的主要事件是命名识别事件,触发器是用户使用系统APP扫描名片,事件的来源是由用户发起,事件的目的是将识别的名片信息存储到数据库,事件的响应是系统识别名片并获取名片的信息,该事件的前置条件是使用者要登录系统,技术要求是,一是调用手机摄像头拍摄名片,二是调用百度AI接口识别名片信息,三是只能识别印刷体的名片,事件的性能要求是在通用情况下,请求响应事件小于2秒。

小王将识别的事件(功能需求)使用数据流图建立系统功能需求模型。数据流图的建模一般是自上而下,最顶层的是系统的概括模型,然后逐步分解为第一层数据流图、第二层数据流图、……、第N层数据流图。

 

图 1 名片自动识别APP数据流图顶层图

 

图 2 名片自动识别APP数据流图一层图

上图是数据流图的一层图,一层图是对顶层图的任务分解,从一层图可以看出,任务被分解为使用者注册、使用者登录、扫描名片、识别名片四个模块,外部实体有使用者、名片、百度AI接口,存储的信息有使用者信息、名片信息。

数据模型根据系统需要存储信息的事物类型来创建(实体)。例如,在表格1所示的事件中,系统需要知道使用者、名片的细节信息。这种模型被称为实体—联系图(ER图),实体—联系图中实体对应于数据流图中的需要存储信息的事务。

 

图 3 纸质名片识别入库ER图

 

结构化设计阶段

该阶段主要完成系统的技术架构、各模块的功能设计、数据项以及UI界面设计等内容。技术架构主要描述系统的结构组成,包括系统的各个模块、模块间的关系、系统的对外接口等内容。在结构化分析方法中,技术架构可以由分层的数据流图转换而来,技术架构的主要模型是结构图。

 

图 4 名片自动识别APP结构

上图是项目的技术架构图,项目分为四个模块,分别是使用者注册、使用者登录、扫描名片、识别名片,图中用虚线表示的模块为第三方公司提供的模块,百度AI接口由百度公司提供。识别名片模块调用百度AI接口完成名片图像的信息识别。

在结构化设计阶段,模块的功能设计主要模型是每个模块详尽的数据流图(包括数据字典)、业务流程图、界面图。下面给出使用者注册模块的数据流图和数据字典。

 

使用者注册模块数据流图

 

图 5 使用者注册数据流图

使用者在注册页面填写注册信息,使用者提交注册信息后,注册模块将注册信息存储到数据库。

数据字典

 

数据字典是对数据流图的数据进行详细的说明,这是注册模块数据流图中使用者信息的数据字典,通过数据字典可以看出使用者信息主要有用户名和用户登录密码两个数据项,数据类型都是字符串,用户名的有效范围为3至50个字符,用户登录密码的有效范围为20个字符以内。

结构化编程阶段

结构化编程主要完成系统编码、系统测试、项目部署等相关工作。系统编码主要采用结构化编程技术,在结构化设计阶段划分的每个模块都可以作为一个子程序,子程序内部采用顺序、选择、重复三种基本控制结构。系统测试和项目部署工作同其它开发方法都基本相同,这里就不再详细说明。

 

总结回顾

1、结构化开发方法是使用结构化分析、结构化设计、结构化编程技术的系统开发方法。结构化分析帮助开发人员定义系统需要做什么(功能需求),系统需要存储和使用哪些数据(数据需求),需要什么样的输入和输出,以及如何把这些功能结合在一起来完成任务;结构化设计采用自顶向下的程序设计,把复杂的程序分解为多个程序模块;结构化编程将复杂的程序分解为多个子程序,每个子程序只有一个入口和一个出口,在子程序内部采用顺序、选择、重复三种基本控制结构。

2、在结构化开发方法中。首先要调查并识别系统需求,使用事件描述系统功能需求是常用的方法;然后使用数据流图建立功能需求模型,建模一般是自上而下,最顶层的是系统的概括模型,然后逐步分解为第一层数据流图、第二层数据流图、……、第N层数据流图;数据流图中的实体或需要存储信息的事务可以使用ER图建立数据模型。

这篇关于软件工程——快速掌握结构化开发方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/599141

相关文章

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

v0.dev快速开发

探索v0.dev:次世代开发者之利器 今之技艺日新月异,开发者之工具亦随之进步不辍。v0.dev者,新兴之开发者利器也,迅速引起众多开发者之瞩目。本文将引汝探究v0.dev之基本功能与优势,助汝速速上手,提升开发之效率。 何谓v0.dev? v0.dev者,现代化之开发者工具也,旨在简化并加速软件开发之过程。其集多种功能于一体,助开发者高效编写、测试及部署代码。无论汝为前端开发者、后端开发者

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

CentOs7上Mysql快速迁移脚本

因公司业务需要,对原来在/usr/local/mysql/data目录下的数据迁移到/data/local/mysql/mysqlData。 原因是系统盘太小,只有20G,几下就快满了。 参考过几篇文章,基于大神们的思路,我封装成了.sh脚本。 步骤如下: 1) 先修改好/etc/my.cnf,        ##[mysqld]       ##datadir=/data/loc

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

UE5 半透明阴影 快速解决方案

Step 1: 打开该选项 Step 2: 将半透明材质给到模型后,设置光照的Shadow Resolution Scale,越大,阴影的效果越好

快速排序(java代码实现)

简介: 1.采用“分治”的思想,对于一组数据,选择一个基准元素,这里选择中间元素mid 2.通过第一轮扫描,比mid小的元素都在mid左边,比mid大的元素都在mid右边 3.然后使用递归排序这两部分,直到序列中所有数据均有序为止。 public class csdnTest {public static void main(String[] args){int[] arr = {3,