APP下载

结构化与面向对象分析设计方法研究

2021-03-13刘智董世都张金荣张宜浩

现代信息科技 2021年15期
关键词:案例分析

刘智 董世都 张金荣 张宜浩

摘  要:针对系统分析与设计综合性、实践性强的特点,文章以学生熟悉的图书馆管理系统为对象,采用案例分析和横纵向对比分析方法,梳理结构化与面向对象分析设计方法之间的本质与差异,分析它们之间的不同思想和建模实践,从而加深初学者对系统分析和设计方法的理解,进而提升学生系统建模的理论水平和针对实际项目的分析设计能力。

关键词:结构化分析与设计;面向对象分析与设计;案例分析;图书馆管理系统

中图分类号:TP311.5                   文献标识码:A文章编号:2096-4706(2021)15-0001-04

Abstract: In view of strong comprehensive and practical characteristics of system analysis and design, taking the library management system that students are familiar with as research object, the methods of case analysis and horizontal and vertical comparative analysis are used in this paper to sort out the essence and differences between structured analysis & design method and object-oriented analysis & design method, analyze the different ideas and modeling practices between them, so as to deepen the beginners’ understanding of system analysis & design methods, and improve the students’ theoretical level of system modeling and the ability of analysis and design for practical projects.

Keywords: Structured Analysis & Design; Object Orient Analysis & Design; case analysis; library management system

0  引  言

作者一直从事软件类课程的教学及相关项目的开发工作,对程序设计、数据库技术、数据结构、系统分析与设计、软件项目管理等内容有一定的认识。经过多年的授课发现,“系统分析与设计”课程综合性很强,授课时需引入其他课程的知识进行实践讲解才能融会贯通,无论是教和学,都具有较大的挑战性。随着软件技术的发展,“系统分析与设计”课程也经历了从结构化到面向对象的系统分析与设计技术的演化,给学生的学习、理解带来了更大的模糊性。本文将基于具体案例分析,直观地展示结构化与面向对象分析设计方法之间的本质与差异,期望学生在具有一定的编程基础后能通过对比更好地理解系统分析与设计过程,加深对系统分析设计的理解和掌握,并能够对具体项目进行合理的分析与设计。本文既可作为软件工程类专业学生学习“系统分析与设计”课程的参考资料,也可为软件公司系统分析与设计人员提供理论指导。

1  系统分析与设计概述

系统分析与设计是软件工程专业的核心课程,它们都是高级别抽象,是联系紧密、承前启后的两个过程,在进行软件开发时,分析人员和设计人员需要密切合作,共同制定一个基础技术框架[1,2]。

系统分析是通过任务分解的方式将用户的想法分析成软件开发过程能够理解的需求,是为系统建立一个概念模型,并尽可能多地捕获现实世界的语义,解决目标系统“做什么”的问题,它不考虑具体实现语言和实现方式。系统设计是设计出能够满足用户需求的系统,它描述如何一步一步地实现系统的过程和步骤,解决目标系统“怎么做”的问题。系统分析的目的是确定系统应做成什么的设想,而系统设计的目的是将这些设想转化为可实施的步骤,它是基于特定的语言和实现方式的[3]。

2  两大方法本质及对比

系统分析与设计主要有结构化和面向对象分析与设计方法。结构化方法基于功能分解设计系统结构,它从内部功能上模拟客观世界。而面向对象方法[1,3]对问题域进行自然分割,以更接近于人类思维的方式建立问题域模型。与结构化方法严格划分分析与设计阶段不同,面向对象方法基于迭代的思想,分析阶段的成果可逐步细化迭代到设计阶段。图1给出了两种方法的过程对比图。

2.1  业务调研

业务调研是需求阶段从用户的角度来描述系统,目标是发现系统用户并掌握用户所涉及的业务及流程。结构化方法通过调查企业组织结构来发现用户或角色,面向对象方法仍然需要先识别企业的组织结构才能更好地识别参与者。结构化方法用业务流程图[4-6]对各部门业务进行描述,如图2所示。而面向对象的方法是以用例图和用例描述对系统进行建模。从本质上讲,结构化方法中的“业务”和面向对象方法中的“用例”都是对用户所完成的相对完整、有意义事情的描述,属于同一个范畴,只是在文字描述、图形绘制工具和表达方面有些差异。无论是对业务还是用例的抽象,其粒度抽象的大小均应该予以权衡,太大则很难对其进行清晰描述,太小则会丢失其中的流程信息。例如在图书馆管理系统中,“借书”是一个完整并且有意义的事情,将其抽象为一个用例或业务是合理的,无论是使用如图3所示的面向對象方法中的活动图,还是使用结构化方法中的业务流程图都能够很清晰地描述出借书的整个过程。但借书还包括“检查借书证”“检查借书情况”“书目扫描”“借书登记”等多个子过程,如果直接将这些子过程抽象为用例或业务,并分别对它们进行描述,则无法描述这些子过程之间的流转关系,丢失了流程信息。

2.2  需求分析

需求分析的目标是将系统从“用户”角度逐渐过渡到“计算机”的角度进行描述,完成该工作需要从系统如何实现该业务或用例如何实现的角度去分析。软件开发最根本的任务是能够对数据进行加工处理,实现系统的处理需求和数据需求。根据这一特性,结构化方法从如何让计算机处理数据的角度出发,采用数据流程分析[7]方法,用数据流程图和数据字典来描述当前系统中的处理和数据。而面向对象的方法则是从用例如何实现的角度,采用鲁棒分析的方法抽象出每一个用例中的界面类、控制类和实体类,形成系统初步的总体类图。图4、图5从实现的角度给出了“借书”业务(用例)的数据流程图和鲁棒分析图。结构化方法中,经過数据流程分析,可逐渐将系统中的处理(圆角矩形)和数据存储(开口矩形)抽象出来,而面向对象方法中,经过鲁棒分析,可抽象出系统中的边界类(带T符号圆圈)、控制类(带箭头圆圈)和实体类(带下划线圆圈)。

2.3  概要设计

概要设计最主要的两个部分是概念模型和功能结构。结构化方法中,通过依次剖析底层数据流图中处理所涉及的数据存储,并结合数据字典中对业务规则的描述,可以抽象出系统中的所有实体以及实体之间的关系,一般用实体关系图(Entity Relationship Diagram, ERD)进行描述,图6给出了图书馆管理系统的E-R图;而面向对象的方法则通过鲁棒分析方法,抽象出实体类、边界类、控制类并结合用例描述来得到系统的实体类图。两种方法都是通过分析处理所涉及的数据并结合业务规则得到概念模型。E-R图和实体类图的本质都是描述实体以及实体之间的关系,相对来说,实体类图描述的语义更丰富,细节更清晰。

2.4  详细设计

详细设计是针对功能结构中的每一个功能从界面设计、输入/输出项、流程、算法、接口等方面进行描述,图7给出了面向对象方法中图书馆管理系统“借书”功能中的判断读者状态和获取已借书籍列表的流程描述。合理完善的设计能指导程序编写人员完成系统的实现,尽量减少实施环节中设计人员的参与。

综上,无论是面向对象方法还是结构化系统分析设计方法,其主流程和分析设计过程所涉及的思想和方法都是一致的。两大方法的主流程都包括从业务建模、分析、概要设计到详细设计四个主要环节,各个环节的建模思想及方法的思想基本相同。

3  面向对象与结构化系统分析设计的差异

虽然结构化和面向对象的分析设计方法的实施过程在思想上基本一致,但这两种方法在实际建模活动中仍有一定差异,因而二者分别适用于不同特点项目的开发。

3.1  建模语言、方法

结构化方法使用业务流程图、数据流程图和数据字典、实体关系图、功能结构图、盒状图、IPO图等来对系统进行建模。而面向对象的方法则使用统一建模语言(Unified Modeling Language, UML)对系统进行建模,主要是用例图、活动图、鲁棒分析图、类图、状态图和序列图。不同的建模语言其描述行为会存在一定的差异。例如在业务阶段,面向对象的方法使用用例图将系统中所有业务用例组织起来,如图8所示,然后分别对每一个用例进行描述,可使用如图3所示的活动图来描述用例的基本路径和扩展路径;而结构化方法先进行组织结构调查,通过对每个部门的业务进行建模,从而保证需求覆盖系统所有业务。

3.2  依赖环境及设计详细程度

结构化方法不依赖于具体的开发环境,专注于对系统的描述,它不假设系统实施所使用的开发框架和技术,给开发人员更自由的发挥空间,当然也给开发人员提出了更高的要求。而面向对象的方法遵循rational统一过程定义,在设计前已经确定所使用的软件架构及框架,应该以框架为基础进行设计,因此面向对象的方法中在详细设计阶段可以对功能描述得非常清楚,层次非常清晰。图7给出了图书馆管理系统中“借书”功能的详细流程描述,从图中可以看出,该详细设计不仅对界面、控制、实体类给出了具体定义,而且给出了它们之间的调用关系及成员函数。根据该图进行程序的开发,程序员基本不需要自由发挥,可以将详细设计按一定的规则翻译为最终代码。

3.3  分析设计思想及可复用程度

结构化方法采用瀑布模型的思想,对分析和设计进行阶段式建模。前后相邻阶段使用的建模工具及方法是互相孤立的,前一阶段的建模成果不能为后续阶段所用。而面向对象的方法,采用Rational统一过程的思想,使用迭代式方法,从分析到设计整个过程使用UML进行建模,后续阶段的任务可以通过对前序阶段的成果进行迭代得到,因而可以充分利用前序阶段的成果,大大提高了分析设计过程的复用程度。

4  结  论

从建模方法、思想和解决问题的过程来看,面向对象和结构化方法本质上是趋同的,结构化方法的分析设计人员在熟练掌握面向对象思想并获得一定的平台开发经验后很快便能够使用面向对象的方法进行分析和设计。相对于面向对象的方法,结构化系统分析设计独立于开发框架,给开发人员更大的自由空间,同时对开发人员的技术也提出了更高的要求;而面向对象的方法在分析设计时以具体的软件架构和框架为基础,通过逐步迭代,完成分析、设计甚至是代码编写,大大提高了各阶段成果的复用性,使用面向对象的分析设计可以很容易做到设计和编码的分离。

参考文献:

[1] 肯德尔.系统分析与设计 [M].北京:机械工业出版社,2020.

[2] 杨选辉,郭路生,王果毅.信息系统分析与设计:第2版 [M].北京:清华大学出版社,2019.

[3] 谭云杰,大象Thinking in UML:第2版 [M].北京:中国水利水电出版社,2012.

[4] 艾萍,施展.业务建模技术综述 [J].计算机应用与软件,2012,29(7):127-132.

[5] 丁明,张书玲,张琛.业务流程建模与测试方法研究 [J].西安交通大学学报,2016,50(3):127-133.

[6] 黄颖,李康顺,李伟,等.一种基于本体语言的业务流程建模算法 [J].系统仿真学报,2017,29(10):2282-2290.

[7] 黄贻望,徐松金,冯在文,等.基于数据流约束的可配置业务流程分析与验证 [J].计算机集成制造系统,2017,23(8):1797-1808.

作者简介:刘智(1977.09—),男,汉族,江西高安人,副教授,博士,研究方向:视频分析、图像处理、机器学习、软件工程与理论。

3008500338214

猜你喜欢

案例分析
中学数学中的解题教学及案例分析
以实践教学为主体的创业教育模式研究
高校办公自动化系统建设案例分析
“互联网+”下的商业模式创新案例分析
科技劳动视角下的超额剩余价值来源探析
父亲缺失案例分析
冷库建筑火灾特点及调查方法研究
利用数据流进行电控故障诊断的案例分析
高校图书馆阅读推广案例分析
让语文课堂评价语绽放异彩