数据结构——算法设计实践
线性表NO.1 链表交叉逆序从1到n顺序排列的n个元素带头结点单链表L = {a1, a2, …, an},列表定义为 1234typedef struct L...

信息是可以**传输和处理**的数据和知识,是**管理和决策的重要依据**
除定义之外,信息在实践中还具有以下特点:
系统是内部相互依赖的各个部分,按某种规则,为同一目的的实现而结合在一起的,合理有序的组合。
提示
(如果你是一个管理科学或信息系统管理专业的学生,你应该已经或未来会听系统的定义和性质听到厌烦)
从定义种可以提取出来的系统的性质
这一时期是现代系统论的奠基时期,系统思想逐步形成了系统理论框架。
信息系统是由 人、技术、数据、过程和环境组成的相互关联的系统,用于收集、处理、存储和传播信息,从而支持决策和业务运作。
| 类别 | 功能 | 举例 |
|---|---|---|
| 事务处理系统(TPS) | 处理日常事务数据 | 银行自动柜员系统、订单处理系统 |
| 管理信息系统(MIS) | 为中层管理提供结构化信息 | 销售报告系统、库存管理系统 |
| 决策支持系统(DSS) | 支持非结构化决策 | 财务分析、风险评估模型 |
| 企业资源计划系统(ERP) | 集成企业各部门数据 | SAP、Oracle ERP |
| 办公自动化系统(OAS) | 提高办公效率 | 文档管理系统、电子邮件系统 |
| 客户关系管理系统(CRM) | 管理客户信息与关系 | Salesforce、Zoho CRM |
| 知识管理系统(KMS) | 管理组织知识资产 | 内部知识库、协作平台 |
信息系统就像一座高楼,既有严谨的结构,又可以从不同角度对同一个结构得出不同形式

信息系统的物理结构指的是信息系统的硬件系统的拓扑结构。
信息系统的物理结构主要有三种:集中式、分布式和混合式。


在信息系统开发过程中,我们往往使用 系统开发生命周期(SDLC)模型来指导整个开发过程。SDLC模型包括以下几个主要阶段:
系统规划:
系统分析:
系统设计:
系统实施:
系统维护:
系统规划是信息系统开发的第一步,主要包括以下内容:
开发信息的第一步就是确定系统需求,简单说就是 弄清楚要做什么。
需求分析的主要任务是识别和定义系统的 功能需求和 非功能需求。
功能需求:系统应该要做到的功能,是系统开发过程中最主要的需求部分。可以按照重要性分成“必须有”、“应该有”、“可选有”三类。
非功能需求:系统的 性能、 可靠性、 安全性、 可维护性、**界面可交互性**等方面的要求。比如系统响应时间、并发用户数、数据备份频率等。
获取需求的方法包括:
确定了系统的目标需求之后,分析人员就应该开始进行可行性分析,评估系统开发的可行性。
可行性分析主要包括两个方面: 必要性和 可能性。一个没有必要进行的项目是没有意义的,一个没有可能性的项目是无法成功的。
可能性分析可以从三个方面进行:
用于系统规划确定目标的方法包括 关键成功因素法(Critical Success Factors, CSF), 战略目标集转换法(Stragegy Set Transformation, SST) 和 业务系统规划法(Business System Planning, BSP)。
系统分析是信息系统开发的第二步,是“做什么”的进一步细化。其任务是 通过调查分析,对用户单位的业务流程进行详细分析,构建出新系统的 概念模型,锁定系统边界、功能、处理过程和信息结构。
常用的系统分析方法有 数据流图(Data Flow Diagram, DFD)、 实体关系图(Entity-Relationship Diagram, ERD)和 状态转换图(State Transition Diagram, STD)。
在这里我们介绍以下数据流图(DFD)
数据流图(DFD)是描述系统功能和数据流动的图形化工具。它通过图形符号表示系统中的 过程、 数据流、 数据存储和 外部实体,帮助分析人员理解系统的功能结构和信息流动。

数据流图是层次结构的,通常首先绘制**上下文图**(Context Diagram),然后逐步细化为**一级图**(Level 1 DFD)、**二级图**(Level 2 DFD)等。
在绘制过程中需要注意,一个数据流从始终是从一个实体(外部实体或数据存储)流向一个过程,从一个过程流向下一个过程(如果中间的数据不需要存储或分发),或者从一个过程流向一个实体(外部实体或数据存储)。数据流不能直接连接两个实体或两个数据存储。如果一个数据流连接了两个实体,那么你可能省略的其中的处理过程。
在数据流图中,描述了系统的分解,系统由什么组成,数据从哪里来,流向哪里,经过什么处理,但是没有描述数据的内容和结构。因此, 数据字典是数据流图的一个重要补充。
数据字典是对系统中所有数据元素、数据流、数据存储和外部实体的详细描述和定义。它提供了数据的结构、格式、含义和约束条件,帮助分析人员和开发人员理解和使用数据。
数据字典包括六类条目 数据元素、 数据流、 数据存储、 外部实体、 过程和 数据结构。
数据元素是系统中最小的数据单位,通常是一个字段或属性。数据元素应有一个唯一的名称和描述,说明其含义、格式、长度和约束条件等等信息。
示例,以下是几个数据元素:
| 名称 | 描述 | 格式 | 长度 | 约束条件 |
|---|---|---|---|---|
| id_stu | 学生的唯一标识符 | 字符串 | 10 | 必须唯一,不能为空 |
| name_stu | 学生的姓名 | 字符串 | 50 | 不能为空 |
| birth_stu | 学生的出生日期 | 日期 | – | 不能为空,必须是有效日期 |
| id_course | 课程的唯一标识符 | 字符串 | 10 | |
| name_course | 课程的名称 | 字符串 | 100 | 不能为空 |
| mark_stu | 学生的课程成绩 | 数值 | – | 0-100之间的整数 |
数据流是系统中数据的流动路径,表示数据在系统中的传输和处理。数据流应有一个唯一的名称和描述,说明其来源、去向、内容和格式等信息。必要的话,还可以包括数据流的频率、传输方式和安全要求等。
示例,以下是几个数据流:
| 名称 | 描述 | 来源 | 去向 | 内容 | 格式 |
|---|---|---|---|---|---|
| student_info | 学生信息数据流 | 学生管理系统 | 成绩管理系统 | 包含学生的ID、姓名、出生日期等信息 | 结构化数据 |
| course_info | 课程信息数据流 | 课程管理系统 | 成绩管理系统 | 包含课程的ID、名称、学分等信息 | 结构化数据 |
| grade_report | 成绩报告数据流 | 成绩管理系统 | 教师、学生 | 包含学生的课程成绩和评语等信息 | 结构化数据 |
| enrollment_request | 学生选课请求数据流 | 学生管理系统 | 课程管理系统 | 包含学生的选课请求信息 | 结构化数据 |
| attendance_record | 学生考勤记录数据流 | 学生管理系统 | 成绩管理系统 | 包含学生的考勤记录信息 | 结构化数据 |
数据存储是系统中数据的存储位置,表示数据在系统中的保存和管理。数据存储应有一个唯一的名称和描述,说明其内容、格式、容量、访问权限以及相关数据流。
示例,以下是几个数据存储:
| 名称 | 描述 | 内容 | 格式 | 容量 | 访问权限 | 相关数据流 |
|---|---|---|---|---|---|---|
| student_db | 学生信息数据库 | 包含所有学生的ID、姓名、出生日期等信息 | 关系型数据库 | 大 | 读写权限 | student_info |
| course_db | 课程信息数据库 | 包含所有课程的ID、名称、学分等信息 | 关系型数据库 | 大 | 读写权限 | course_info |
外部实体是系统外部与系统交互的对象,表示系统的边界。外部实体应有一个唯一的名称和描述,说明其角色、功能和相关数据流。
处理过程是系统中的功能或活动,表示系统对数据的处理和转换。处理过程应有一个唯一的名称和描述,说明其功能、输入输出数据流以及相关数据存储。
数据结构是系统中数据的组织和表示方式,表示数据的层次关系和组成部分。数据结构应有一个唯一的名称和描述,说明其组成元素、层次关系和约束条件。
示例,以下是一个数据结构条目:
| 名称 | 描述 | 组成元素 | 层次关系 | 约束条件 |
|---|---|---|---|---|
| student_record | 学生记录数据结构 | id_stu, name_stu, birth_stu | 平面结构 | id_stu必须唯一,name_stu不能为空 |
系统设计阶段要完成的是 怎么做的问题。这一阶段需要在系统分析的 逻辑模型上进一步构建 物理模型,给出系统实施方案。
系统设计的目标是从保证系统的适应性入手,设计出一个易于理解、容易维护的系统。其任务大体上可以分成: 概要设计(总体设计)和 详细设计。
系统的设计是自顶向下的,在概要设计时基本进行:
详细设计为具体模块任务选择技术手段和处理方法。基本内容包括:
系统实施阶段的主要任务是根据系统设计提出的物理模型和实施方案,完成一个可以实际运行的信息系统。在实施过程中,遵循 自顶向下原则,先完成上层模块,逐步向下。
这一阶段的四个主要任务:
测试阶段的目的是尽可能地找出系统的错误,以供后续修改,建造更加高质量的系统。
作为一个多次学习管理学原理的学生,要时刻记住每一项业务都应该以 高效率、 高质量为目标,所以测试阶段不光要找出尽可能多的、以前从未发现的错误,还要权衡好测试成本。
测试任务的对象:
考虑到群集现象,如果在测试阶段发现了很多的的错误,那么系统中实际存在的错误会更多。因此可以根据测试阶段发现软件错误的多少,为系统软件构建一个可靠性模型,预测系统修复已发现错误后的可靠性。
静态测试:不实际运行系统,主要针对被测试程序的编程代码进行评估,检查逻辑、结构等;
动态测试:在计算机上使用测试用例运行被测试程序,检验程序的动态行为和结果的正确性;
黑盒测试(功能测试):不考虑程序内部结构和特性,只测试程序的输入和输出接口,从用户角度出发,测试程序使用的功能性、舒适性等;
白盒测试:将程序中的所有独立分路全部至少运行一次。在所有逻辑判断中,每一个情况至少运行一次,每个循环都分别在边界情况和一般情况下运行一次,测试程序内部数据结构的有效性;
单元测试:对系统设计中每一个模块单独进行测试;
集成测试:将测试后的模块集成在一起进行测试,考虑是否完成了系统设计时的要求;
确认测试:考虑需求分析时的系统功能,测试是否完成项目初期定下的目标;
系统测试:将测试后的软件、硬件、网络集合起来测试,得到可以运行的完整系统。
上一篇更回味

线性表NO.1 链表交叉逆序从1到n顺序排列的n个元素带头结点单链表L = {a1, a2, …, an},列表定义为 1234typedef struct L...
下一篇更精彩

六大常见话题类: 环境类 政府类 教育类 媒体类 社会生活类 犯罪类 名词环境类 高频词汇 同义词/替换表达 pollution contamination, ...
评论区
预览: