高架学习笔记之系统分析与设计

news2024/11/13 8:04:45

目录

一、结构化方法(SASD)

1.1. 结构化分析方法(SA)

1.1.1. 数据流图(DFD)

1.1.2. 实体联系图(E-R图)

1.1.3. 状态转换图(STD)

1.1.4. 数据字典

1.2. 结构化设计方法(SD)

1.3. 结构化编程方法(SP)

二、面向对象方法(OO)

2.1. 面向对象分析(OOA)

2.2. 面向对象设计(OOD)

2.3. 面向对象编程(OOP)


一、结构化方法(SASD)

    结构化方法(Structured Analysis and Structured Design, SASD)是一种面向功能或者说面向数据流的方法,结构化方法包括针对需求分析阶段的结构化分析方法(SA)、针对软件设计阶段的结构化设计方法(SD)、针对软件开发阶段的结构化编程方法(SP)

1.1. 结构化分析方法(SA)

    结构化分析方法强调系统的模块化和层次化,通过数据流程图、数据字典等工具来描述系统的数据流动和处理过程,结构化分析的模型包括功能模型,数据模型和行为模型,其中功能模型一般通过数据流图进行建模,数据模型通过实体联系图进行建模,行为模型通过状态转换图进行建模。而数据字典则是配合各方进行相应的数据的解读的工具。

图片

1.1.1. 数据流图(DFD)

    数据流图(Data Flow Diagram,DFD)建模方法,也称之为过程建模或功能建模方法。用于描述系统的功能、数据流动和处理过程。DFD以图形符号的形式展示系统中的数据流、处理过程和数据存储,帮助分析师和设计师理解系统的功能和交互关系。DFD方法由四种基本元素组成:数据流、处理/加工、数据存储和外部实体。以下是一个简单的DFD结构图:

图片

    在上图中教务人员和学生作为外部实体,录入学生信息、录入课程信息、登记学生成绩及查询学生成绩为处理/加工过程,学生、课程、成绩则是数据存储,它们之间的连线代表数据流向,不同元素通过不同的图形来表示,上图只是一种示例,哪种元素使用哪种图形有不同的说法,我们需要根据DFD图分辨出它们属于哪种元素,而不是根据图形来分辨。

1.1.2. 实体联系图(E-R图)

   实体联系图(Entity-Relationshiop Diagram, E-R图)通过将实体和属性联系起来的方式来描述现实世界的概念模型,E-R图中包含实体,属性和联系三种元素,其中实体用矩形表示,属性用椭圆形表示,联系用菱形表示:

图片

1.1.3. 状态转换图(STD)

    状态转换图(State Transition Diagram,STD)用于描述系统中对象或系统的状态及其之间的转换关系。状态转换图通常用于对系统的状态机进行建模和分析,STD主要包含三种基本元素:状态、转移、事件

图片

1.1.4. 数据字典

    数据字典(Data Dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述。简而言之,数据字典是描述数据的信息集合,是对系统中所有的数据元素定义的集合。

  • 数据项={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据的逻辑关系}
  • 数据结构={数据结构名,含义说明,组成:{数据项或数据结构}}
  • 数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量}
  • 数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,组成:{数据结构},数据量,存取方式}
  • 处理过程={处理过程名,说明,输入:{数据流}, 输出:{数据流},处理:{简要说明}}

1.2. 结构化设计方法(SD)

    结构化设计是一种面向数据流的设计方法,它以软件需求规格说明书(SRS)和结构化分析(SA)阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下,逐步求精和模块化的过程。SD的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段。

  • 概要设计:确定软件系统的结构,对系统进行模块划分,确定每个模块的功能、接口和模块之间的调用关系。
  • 详细设计:为每个模块设计实现的细节。

    结构化的基本原则包括:

  • 信息隐蔽
  • 模块独立(高内聚,低耦合)
  • 保持模块的大小适中
  • 尽可能减少调用深度
  • 多扇入,少扇出
  • 单入口,单出口
  • 模块的作用域应该在模块之内
  • 功能应该是可预测的

    内聚和耦合的层级如下:

图片

1.3. 结构化编程方法(SP)

    结构化程序设计方法将系统划分为若干功能模块,各模块按要求单独编程,在组合构建成相应的软件系统。结构化程序设计采用自顶向下、逐步求精的设计方法,各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口和一个出口。结构化程序设计中程序=(算法)+(数据结构)。结构化程序设计的原则可以归纳为:自顶向下,逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成。

二、面向对象方法(OO)

    面向对象方法(Object-Oriented,OO)认为客观世界是由对象组成的对象由属性和操作组成,对象可按其属性进行分类,对象之间的联系通过消息实现,对象具有封装性、继承性和多态性。面向对象开发方法是以用例为驱动的、以体系结构为中心的、迭代和渐增式的开发过程。主要包括需求分析,系统分析,系统设计和系统实现4个阶段,与结构化开发方法不同的是,面向对象方法的各个阶段是迭代进行的。

2.1. 面向对象分析(OOA)

    面向对象分析方法(Object-Oriented Annaltsis, OOA)中模型由5个层次(主题层、对象类层、结构层、属性层、服务层)和5个活动(定义主题、标识对象类、标识结构、定义属性、定义服务)组成。在这种方法中定义了两种对象类之间的结构:分类和组装结构。

    OOA的原则包括:

  • 抽象:抽象的目的在于从不同的事物中抽取共同的、本质的特性以形成概念。抽象包括过程抽象和数据抽象两个方面。其中类是对象的抽象;数据成员是事物静态特征的抽象;成员函数是事物动态特征的抽象。
  • 封装:封装就是把对象的属性和服务结合为一个不可分的单位,并尽可能隐藏内部细节,而仅暴露出需要的方法作为入口。调用者只需要知道可以做什么,而不需要知道具体的实现方式。
  • 继承:继承是指后代的实例具有其祖先的所有属性与服务,并可以在其祖先的基础上改写或补充一些属性或服务。另外,后代的实例可以用于任何祖先被声明使用的地方并代替其祖先的作用,这也是多态的重要基础。
  • 分类:分类就是将由相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。
  • 聚合:聚合又称组装,就是把一个复杂的事物看成是多个简单的事物的组装体。
  • 关联:关联表示两个或多个类之间的联系和互动,描述了它们之间的关系。关联通常用于描述不同类之间的连接和交互,表明它们之间存在某种关联性。例如,学生类和课程类之间可以建立关联关系,表示一个学生可以选择多门课程,而一门课程也可以被多个学生选择。
  • 消息通信:指对象之间只能通过消息来进行通信,而不允许在对象之外直接存取对象内部的属性,这也是由于封装原则引起的。
  • 粒度控制:指考虑全局时,只注意其大的组成部分而不考虑细节;考虑某部分的细节时,则不考虑其余部分。
  • 行为分析:指对对象的行为和操作进行分析和描述,以便理解对象的功能和作用。通过行为分析可以确定对象如何响应消息、执行操作以及与其他对象交互。

    OOA的基本步骤为:确定对象和类、确定结构、确定主题、确定属性、确定方法

2.2. 面向对象设计(OOD)

    面向对象设计方法(Object-Oriented Design, OOD)是OOA的延续,基本思想包括分抽象、封装、可扩展性;其中可扩展性通过继承和多态来实现。在OOD中类可以分为3种:

  • 实体类:实体类通常用于表示系统中的业务实体或领域对象,它们是对现实世界中的事物进行建模的抽象。实体类通常包含属性和方法,用于描述对象的状态和行为。实体类通常与数据库中的表或文档对应,负责存储和操作数据。在面向对象编程中,实体类是面向对象设计的核心部分。
  • 控制类:控制类通常用于协调系统中的各个组件之间的交互,负责接收用户输入、处理业务逻辑并调用相应的服务或方法。控制类通常位于系统的顶层,负责接收请求并将其分发给合适的处理器。控制类通常不包含具体的业务逻辑,而是将请求委托给其他类来处理。
  • 边界类:边界类通常用于处理系统与外部环境之间的交互,例如处理用户界面、网络通信等。边界类负责将外部输入转换为系统可处理的格式,并将系统输出转换为外部可接受的格式。边界类通常位于系统的边界处,负责处理系统与外部环境的交互。

2.3. 面向对象编程(OOP)

    面向对象编程(Object-Oriented Programming, OOP)是一种计算机编程架构,OOP达到了软件工程的三个主要目标:重用性,灵活性和扩展性。OOP=对象+类+继承+多态+消息。其基本特点有:

  • 封装:封装指的是将数据(属性)和行为(方法)封装在一个类中,并对外部隐藏对象的内部实现细节,只暴露必要的接口供外部访问。通过封装,可以实现数据的隐藏和保护,提高代码的安全性和可维护性。封装还可以帮助简化代码逻辑,降低耦合度,提高代码的复用性。
  • 继承:继承允许一个类(子类)继承另一个类(父类)的属性和方法。通过继承,子类可以复用父类的代码,并可以在不修改父类的情况下添加新的功能或修改已有功能。继承可以帮助减少重复代码,提高代码的可维护性和扩展性。
  • 多态:多态指的是同一个方法可以根据调用对象的不同而表现出不同的行为。多态可以通过继承和接口实现,使得代码更加灵活和可扩展。多态可以提高代码的可读性和可维护性,同时也能够实现代码的动态绑定,使得程序在运行时可以根据实际情况选择合适的方法进行调用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python Flask框架 -- 加载静态文件

在项目中,一般都会把静态文件放在 static 目录下,如 images、css、js 等,html 放在 templates 目录下。 .py: from flask import Flask, render_templateapp Flask(__name__)app.route(/static) def static_demo():return rend…

初识C++(一)

目录 一、什么是C 二、关键字: 三、命名空间 : 1. C语言存在的问题: 2. namespace关键字: 3. 注意点: 4.使用命名空间分为三种: 四、输入输出: 五、缺省函数: 1. 什么是缺省…

2024年【山东省安全员C证】考试试卷及山东省安全员C证复审模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 山东省安全员C证考试试卷是安全生产模拟考试一点通生成的,山东省安全员C证证模拟考试题库是根据山东省安全员C证最新版教材汇编出山东省安全员C证仿真模拟考试。2024年【山东省安全员C证】考试试卷及山东省…

《妈妈是什么》笔记(二) 让孩子自己做选择

经典摘录 孩子也会需要独立的空间做事情,求独立、求空间、求私隐 对于不管因为什么,别人在受到肯定和赞赏的时候,会对我们自己的心理带来因“比较”而产生的不适感甚至嫉妒感,进而在行为上影响了我们自己的节奏,产生一…

STL 容器元素减少但内存没有下降且不会自动释放,如何在运行时释放多余内存?【C++】

STL 容器元素减少但内存没有下降且不会自动释放,如何释放多余内存? 前言利用 swap 和匿名对象的性质进行收缩内存 前言 C程序里面我们经常会用到STL容器,容器在运行过程中可能会增长,导致它们分配的内存比实际存储的元素所需的内…

Linux源码包安装

目录 一、transmission源码包安装 二、 nginx源码包安装 一、transmission源码包安装 1、下载编译环境所需的软件包依赖 2、下载transmision源码包到用户主目录下 https://github.com/transmission/transmission/releases/download/4.0.5/transmission-4.0.5.tar.xz 3、解压…

python第三次项目作业

打印课堂上图案 判断一个数是否是质数(素数) 设计一个程序,完成(英雄)商品的购买(界面就是第一天打印的界面) 展示商品信息(折扣)->输入商品价格->输入购买数量->提示付款 输入付款金额->打印购买小票&a…

java 调用window操作系统文本转语音并生成播放文件

一、完整资源直接看这里&#xff1a; java调用window操作系统文本转语音并生成播放文件资源-CSDN文库 二、所需材料 材料一&#xff1a;最关键的&#xff0c;需要引用jacob包&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project x…

Vue2(七):超详细vue开发环境搭建(win7),nodejs下载与安装,安装淘宝镜像(报错已解决),配置脚手架

一、安装node.js 本来想粗略写一下的&#xff0c;但是搭建脚手架的时候&#xff0c;遇到了很多问题&#xff0c;浪费快两天时间&#xff0c;记录一下自己的解决办法希望对你们有帮助&#xff01; 1.下载nodejs 安装包下载链接【CNPM Binaries Mirror】 下载我划线的这个&am…

Linux(openEuler)部署SpringBoot前后端分离项目(Nginx负载均衡)

假如数据库在本地&#xff0c;没有放在Linux中 1.先把数据库中root的主机改成% 2.项目中的数据库链接配置换成本机ip 3.打包 4.把打包好的jar包放到Linux中 一般把jar包放到opt下 5.把前端部分拷贝到Linux的nginx中 5.1在package.json中修改build的值为图中这样 5.2同时由于在…

外包干了10天,技术倒退明显

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

SpringMVC 简介及入门级的快速搭建详细步骤

MVC 回顾 MVC&#xff0c;即Model-View-Controller&#xff08;模型-视图-控制器&#xff09;设计模式&#xff0c;是一种广泛应用于软件工程中&#xff0c;特别是Web应用开发中的架构模式。它将应用程序分为三个核心组件&#xff1a; Model&#xff08;模型&#xff09;&#…

经纪人资格认证考试资料

一、名词&#xff1a; 1. 自然人、个体工商户、演出经纪人、演出经纪单位、演出市场主体、演出市场客体、 2. 营业执照、行政许可证 3. 居间、代理、行纪&#xff1a;演出经纪机构、个体经纪人分别有哪些权限&#xff1f; 4. 自行举办&#xff1a;文艺表演团体、个体演员&am…

Shell脚本学习-if循环

最小化的if语句 无实际用途 if [ ] ;then echo fi 脚本解释 if 判断 [ ] 里面的条件是否成立 后面跟then&#xff0c;代表条件成立 如果在一行则使用分号隔离&#xff08;;&#xff09; 如果不在一行使用则直接在下一行驶入then即可。 如果条件成立则输出echo 后面…

罐头鱼AI视频矩阵运营获客系统|视频批量混剪

智能化运营&#xff0c;助力视频营销——AI视频矩阵运营系统全面解析 随着数字营销时代的到来&#xff0c;视频已成为各行业推广和营销的重要手段之一。为了更好地管理和发布视频内容&#xff0c;我们推出了全新的AI视频矩阵运营系统&#xff0c;集成了多项智能功能&#xff0c…

张桥社区组织“平安大讲堂”企业应急救护及消防主题培训

为进一步加强园区商户的平安生产意识&#xff0c;提升应急救护能力&#xff0c;在襄阳市民政局的指导和支持下&#xff0c;襄阳市和时代社会工作服务中心依托襄阳市“光明谷”社会组织助力共同缔造项目&#xff0c;联合樊城区红十字会、樊城区点爱志愿者协会在张桥社区“美世界…

第十二届蓝桥杯省赛CC++ 研究生组

十二届省赛题 第十二届蓝桥杯省赛C&C 研究生组-卡片 第十二届蓝桥杯省赛C&C 研究生组-直线 第十二届蓝桥杯省赛C&C 研究生组-货物摆放 第十二届蓝桥杯省赛C&C 研究生组-路径 第十二届蓝桥杯省赛C&C 研究生组-时间显示 第十二届蓝桥杯省赛C&C 研究生组…

Unity---Lua语言

Lua Binaries Download 13.2 逻辑热更新——Lua1-3_哔哩哔哩_bilibili nil表示空 只有false和nil为false&#xff0c;其他值都为true ..连接两个字符串

基于Springboot的疫情物资管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的疫情物资管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

阿里云2核4G云服务器ECS和轻量应用服务器价格表

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…