本文主要是介绍软件工程——快速掌握结构化开发方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一个案例
小王在一家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图建立数据模型。
这篇关于软件工程——快速掌握结构化开发方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!