首页 > 其他分享 >系统分析与设计

系统分析与设计

时间:2024-04-25 18:34:47浏览次数:19  
标签:迭代 箭头 Scrum 系统分析 用例 版本 设计 主键

1 数据库设计

数据三要素:程序、数据、文档。

  • 1 NF 指的是表结构的原子性,不能再划分,比如 xx 市 xx 区 xx 路分开成多列。

  • 2 NF 消除部分依赖,比如下面这个表:

学生ID 学生姓名 课程名称 教师姓名 教师办公室
001 张三 数学 李老师 101室
001 张三 物理 王老师 102室
002 李四 数学 李老师 101室
002 李四 英语 赵老师 103室

其中学生 ID 和课程名称是联合主键,但是教师姓名和教师办公室只依赖于课程名称,称为部分依赖。学生 ID 主键确定不了教师姓名和教师办公室非主键字段。

2 NF 表中的任一主键可以确定除该主键外的所有的非主键值。

  • 3 NF 消除传递依赖,比如下面这个表:
学号 姓名 班级 班主任
001 小黄 一年级(1)班 高老师

其中学号是主键,能确定所有非主键字段,但是班主任也可以用班级推导出,称为传递依赖。

3 NF 不能存在某非主键字段 A 可以确定某非主键字段 B。

  • ER 图

矩形代表实体,菱形代表关系,椭圆代表属性。

关系分为 1 对 1,1 对 n,m 对 n。

ER 图存在三种冲突:属性冲突(有的部门把学号定为浮点型,有的整数型)、命名冲突(同名异义或异名同义)、结构冲突(属性当成实体,同一个实体在不同位置有不同属性,同一个联系有多种对应)。基本 ER 图要消除数据冗余(某个属性可以推导出来)、关系冗余(某个关系可以推导出来)。

  • 视图

CREATE VIEW 可以把表连接起来形成一个虚拟表,称为视图。它不存储物理数据,因此不会造成数据冗余。

但是视图不是缓存,建立的视图看上去像是把很多表连接起来了,但是实际执行时仍然用底层表逐步执行 SQL 语句。

  • 存储过程

CREATE PROCEDURE 类似编码中的“函数”,是预编译的 SQL 代码集合。使用一个存储过程相当于执行了一串 SQL 语句。

  • 触发器

TRIGGER 是一种特殊的存储过程,同样是预编译代码集合,但是它满足触发条件后会自动执行。

2 流图

流图即“流程图”。

数据流图 DFD 由四部分组成:

  • 实体:起止点,用正方形表示。(人员作为实体,子系统作为处理)

  • 处理:用圆形或圆角矩形表示。(第 0 层 DFD 用 1,2,3,第 1 层 DFD 用 1.1,1.2,1.3,如果已经有处理的“结果”就直接写箭头上)

  • 数据存储:用开口矩形表示。(D:Document / F:File,数字不要重复,比如应 D1,F2,F3)

  • 数据流:用箭头表示流动方向。(单向 / 双向,箭头上写流动事物)

控制流图 CFD 从 1 开始标号,每个节点代表一个基本块,即一段没有任何跳转或跳转目标的直线代码(可以是多行代码)。

业务流图 TFD(transaction)类似活动图,既可以只用矩形、菱形、箭头,也可以用泳道画法。

3 类图

箭头分类:

  • 泛化(继承):实线空心三角,子类完全继承父类的所有特性。

  • 接口(实现):虚线空心三角,子类必须实现接口中定义的方法。

  • 组合(整体由部分构成,整体消失部分不再存在):实线实心菱形,只涉及子类的生命周期与父类有关,不需要继承什么或者实现什么。

  • 聚合(整体由部分构成,整体消失部分仍然存在):实线空心菱形,它不管理成员对象的生命周期。

  • 关联(类成员变量包含关联的实参):实线箭头,仅表示对象之间的协作。

  • 依赖(调用的方法用到依赖的形参):虚线箭头,仅限于单个方法内暂时使用。

关系强弱排序:泛化 > 实现 > 组合 > 聚合 > 关联 > 依赖

4 用例图

用例本质上是事件流。

用例规约(用例描述)包括参与者,前置条件(启动用例之前必须满足的条件),后置条件(用例执行完成后应达到的状态),主事件流,备选事件流。

用例图是由小人 Actor 和椭圆 Use Case 以及它们之间的关系组成。

  • 包含:<<include>>

  • 扩展:<<extend>>

  • 泛化:实线空心三角

使用 UML 中的时序图(顺序图)可以图形化地表现出参与者和系统之间的交互。

5 版本控制

软件的任何组成部分(源代码、数据、文档、硬件、各种环境)都可以随着软件生命周期中的时间而更新。

  • 软件配置管理(SCM):追踪和控制软件的变化。

  • 供应链管理:包括修订控制和建立基线。

  • 软件配置项(CI):软件中发生变化的基本单元(如文件)。

  • 基线:软件持续变化过程中的“稳定时刻”(如对外发布的版本),不仅是稳定的产品。

  • CMDB:配置管理数据库存储软件的各配置项随时间发生变化的信息和基线(如 repository,包含完整版本历史)。

  • HEAD:程序员正在其上工作的版本(如 HEAD 指向 master)。

版本控制系统分为本地(在本地磁盘上维护文件的不同版本)、集中式(CVCS,如 SVN,一个中央服务器来存储所有文件的版本历史,每个副本只包含最新版本)、分布式(DVCS,如 Git,每个副本都包含完整的版本历史)。

  • git clone:远程操作的第一步,通常是从远程主机克隆一个版本库。该命令会在本地主机生成一个目录,与远程主机的版本库同名,默认克隆全部历史。

  • git pull:取回远程主机某个分支的更新,再与本地的指定分支合并。

  • git push:用于将本地分支的更新,推送到远程主机(全流程是从本地目录 add -> commit -> push 到远端仓库,从远端仓库 clone/fetch -> checkout 到本地目录)

Git 文件分为三类:已追踪的(tracked)、被忽略的(.gitignore,常常是 asset 类大文件)以及未追踪的(untracked)。

Git 的每个提交包含了一个指针,指向它的“父提交”(parent commit,指向早期的),从而能够查看历史变化。

6 杂项

系统:如果对象集至少包含两个元素,且元素间按照一定方式联系,则称之为系统。

软件系统:在一定的软件开发与应用环境下,为了达到某一目的而相互联系、相互作用的若干个软件要素所组成的有机整体。

客户需求:分为基本型、期望型、兴奋型需求,应交给用户对需求排序。需求分析的三步大致为:拆解归纳、去伪、定优先级。

项目经理(Project Manager):处理用户需求。

经典三层架构:表示层、业务逻辑层、数据访问层。

CMM:现在已经被更先进的 CMMI 替代。CMM:初始级、可重复级、已定义级、已管理级、优化级;CMMI:初始级、管理级、定义级、量化管理级、优化级。

用户故事:改进需求分析文档的缺点。“作为 xx 我希望 xx 以便于 xx”,多个用户故事可以拼成故事地图,通常包括将所有用户故事按照用户的活动流程(大故事,从左到右表示时间或优先级的顺序)和实现的优先级(小故事,从上到下表示优先级)进行排列。

用户故事原则:Independent(高内聚)、Negotiable(可协商)、Valued(有价值)、Estimable(可评估)、Sized Appropriate(大小适中)、Testable(可测试)。

DevOps:主要是为了开发和运维的沟通,采用持续集成(CI)持续部署(CD),一旦写完代码就自动构建部署减少错误,解决了“在我的机器上能运行”的问题。

敏捷:核心是增量和迭代,包括 Scrum、XP 开发模型等。敏捷是大类,Scrum 是其中一种实践。

敏捷宣言:

  1. 个体和互动 高于流程和工具

  2. 可工作的软件 高于详尽的文档

  3. 客户合作 高于合同谈判

  4. 响应变化 高于遵循计划

鱼骨图:包括一个主线(鱼的脊椎)指向一个特定的问题,其余的“鱼骨”分支则代表导致该问题的各种原因(也称“因果图”)。以风险分析为例,鱼骨分支可以是技术风险、进度风险、需求风险、人员风险,分别再衍生出更细的鱼骨等。

组织功能矩阵:公司的主要功能部门(如市场营销、销售、开发等)作为行,关键的业务流程作为列,单元格内详细说明了特定部门在特定业务流程中的责任和任务。

功能数据类矩阵(Use/Create 矩阵):矩阵中的行表示功能(如财务计划、销售、会计、发运等),列表示数据库(如成本、加工、计划、客户),C表示这类数据由相应功能产生,U表示这类功能使用相应的数据类。整理、移动某些行或列,把字母 C 尽量靠近 U/C 矩阵的对角线,可得到 C 符号的适当排列。

工程网络图(PERT):每一个结点用圆表示,圆的左侧是事件序号,右上方是最早开始时间,右下方是最晚开始时间,箭头上写事件持续时间。关键路径上的最早开始时间与最晚开始时间相等。注意只能有一个起点,一个终点,不满足的需要引入虚作业。

MVC、SOA(Service Oriented Arch)、微服务架构:Model(核心业务逻辑)、View(用户界面)、Controller(接受从用户界面的输入,决定使用哪个模型来处理数据,然后选择一个视图显示模型输出)构成,用户面对的是 View。SOA 强调的是大服务,相当于一个 API 用多件事,一个“客户服务”就是一个 SOA 服务。微服务是一种小型的 SOA。

7 Scrum

敏捷开发中一般迭代称为 iteration。Scrum 是一种最常见的敏捷开发模型,这里的迭代周期称为 Sprint。

Scrum 的产品负责人(Product Owner)、教练(Scrum Manager)与开发团队(Team):如果比喻为一个龙舟,PO 相当于在后面掌舵指明方向,教练相当于在前面加油协调成员,团队成员相当于划桨手。

MVP(Minimum Viable Product):是每个迭代后的最小可行产品,其中只包含足以满足早期采用者的核心功能,指导未来产品的完善和迭代。

Backlog:分为产品待办列表(Product Backlog,由 PO 管理,列出全部需求)和迭代待办列表(Sprint Backlog,由开发团队管理,教练更多是一个促进者而不直接决定)。

三种会议:迭代计划会议(迭代 backlog)、迭代评审会议(决定迭代成功与否)、迭代回顾会议。

8 模型

Scrum 流程:

业务流程建模:

数据流程建模:

用例建模:

实体关系设计:

故事地图设计:

标签:迭代,箭头,Scrum,系统分析,用例,版本,设计,主键
From: https://www.cnblogs.com/Arcticus/p/18156832

相关文章

  • 信息安全之SDL安全设计概述
    文章前言众多频发的网络安全事件表明当下很多的安全问题都是由于产品自身的代码业务逻辑判断不严谨、输入校验不严格、身份校验缺失、异常处理不合理、访问控制缺失以及不安全的配置等众多的因素引起的,而导致这样的安全问题发生的根本原因是由于在软件开发生命周期中缺乏对业务安......
  • 顺序栈的接口设计
    /***********************************************************************************************************该程序实现顺序栈元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以顺序栈中元素的*数据类型为DataType_t,用户可以根据实际情况修改顺序......
  • 链栈的接口设计
    #include<stdio.h>#include<stdbool.h>#include<stdlib.h>//指的是顺序栈中的元素的数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造记录顺序栈SequenceStack各项参数(栈底地址+栈容量+栈顶元素的下标)的结构体typedefstructLinkStack{DataTyp......
  • pcba方案开发——智能血氧仪解决方案研发设计
    智能血氧仪芯片是一种集成化的电子元件,主要用于测量人体血氧浓度。目前市场上的血氧仪芯片具有以下特点:1.高精度:血氧仪芯片采用专业的光学传感器,能够精确地测量人体血氧浓度。2.低功耗:血氧仪芯片通过优化电路设计和功耗管理,能够实现长时间的使用。3.便携式:血氧......
  • 数据库设计 外键设计 关联表查询 linq efcore
    数据库的设计实体之间的关系图实体EleOrderRowItem.cspublicclassEleOrderRowItem:EleEntity{publicstring?Xxx{get;set;}//外键:一个rowItem属于一个rowpubliclongRowId{get;set;}publicrequiredEleOrderRowRow{get;set;}}......
  • 记录一次责任链设计模式使用低级错误
    记录一次责任链设计模式使用低级错误目录记录一次责任链设计模式使用低级错误背景流程发现问题解决方案总结背景提供一个服务支持语音转写成文本,以及历史转写备份数据的简单服务。提供一个接口批量上传,一次最大1000条(分表)落库之后同时发送到消息队列并更新数据状态消费......
  • 软件工程基础-实验一-原型设计-作家助手
    实验要求一:对比分析对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点。一丶墨刀墨刀是一款在线的产品设计协作软件,可以解决产设研团队中存在的项目管理权限不明、版本管理混乱、协作低效等诸多问题。优点:功能强大:可满足产品经理、设计师、开发在产品设......
  • 前端使用 Konva 实现可视化设计器(7)- 导入导出、上一步、下一步
    请大家动动小手,给我一个免费的Star吧~这一章实现导入导出为JSON文件、另存为图片、上一步、下一步。github源码gitee源码示例地址导出为JSON文件提取需要导出的内容getView(){//复制画布constcopy=this.render.stage.clone()//提取mainlayer......
  • 文本语音互相转换系统设计
    title:文本语音互相转换系统设计date:2024/4/2421:26:15updated:2024/4/2421:26:15tags:需求分析模块化设计性能优化系统安全智能化跨平台区块链第一部分:导论第一章:背景与意义文本语音互相转换系统的定义与作用文本语音互相转换系统是一种能够将文本信息......
  • 双向循环链表及各功能函数设计
    双向循环链表/***@filename:双向链表接口设计*@brief*@authorni456xinmie@163.com*@date2024/04/24*@version1.0:版本*@property:*@note*CopyRight(c)2023-2024ni456xinmie@163.comAllRightReseverd*/构造双向循环链表的结点//指的是双向循......