软件系统分析与设计

系统分析与设计

  • 建模本质
  • 系统分析与设计
    • 建模前问题分析定义
      • 问题分析
      • 问题定义
    • 需求分析与设计
      • 需求分类
      • 如何进行系统设计
      • 系统设计文档
    • 面向结构化分析与设计
      • 结构化分析
      • 结构化设计
      • 模块设计原则
    • 面向对象化分析与设计
      • **概念**
      • **分析与设计**
    • 面向领域分析与设计

建模本质

对问题进行梳理(抽像、归类、关系)并形成结构化的模型,可以对需求、数据、业务、架构进行建模。建模从需求阶段就开始了。

1.概念建模:站在用户角度进行抽像、归类、关系梳理后的模型

2.逻辑建模:将概念阶段的模型转换为具体某个产品所支持模型,比如具体数据库

系统分析与设计

为什么要分析,为什么要设计。
1.分析是为了确定要做什么、条件约束是什么
2.设计是为了解决怎么去做

建模前问题分析定义

为什么要在建模前进行问题的定义br> 一个系统的本质是为用户解决问题,在建模前需要做到问题的分析与定义并归结模型,最终得到更真实的模型,并为这些问题给出解决方案。

问题分析

1. 在问题定义上达成共识
开发团队与用户需求的理解达成共识,使系统开发向着合理的方向进行

2. 理解问题的本质
每一句描述夹带着叙述者的个人理解,透过表面深进理解问题背后的问题,常用方法采用鱼骨图,将问题写在方框中,原因写在鱼骨上。

包括功能性
功能是否正确,需求有没有二义性

非功能性

需求分析与设计

本节描述需求分析与设计的理轮,具有代表性的分析与设计参考 结构化分析与设计、面向对象分析与设及、领域分析与设计。

需求的本质是确认软件的功能、性能、数据、界面。分下面4个阶段

  • 识别问题
    发现需求、描述需求,包括功能性需求、性能需求、安全性需求、可靠性需求、环境需求等以确定系统达成的目标
  • 分析问题
    对问题进行分析,常用方式有SA
  • 编写需求说明书
    对已确认的需求进行文档化描述,也就是编写需求规格说明书
  • 需求评审
    对需求功能的正确性、完整性、清晰性进行评价

需求分类

  • 软件需求
    • 功能性 :系统必须完成的功能
    • 非功能性:性能、可靠性、安全性、响应时间、吞吐量、容错、扩展、可维护、可修改等
    • 设计约束性:也就是限制,比如限制只能用国产数据库
  • 用户需求:站在用户角度的需求
  • 系统需求:站在系统角度上描述的需求,如功能、非功能、约束、质量属性
  • 业务需求:业务本身的的需求

如何进行系统设计

设计者拿到需求后怎么去进行系统设计呢br> 1.在各系统目标之间找平衡点既在预算内又能满足用户
2.多参考其他目标系统进行舍取形成新的系统设计

参靠:
(1)组件的独立性。审视自己设计的系统,是否做到了高内聚、低耦合br> (2)例外的识别和处理。谁能保证系统使用者都精确按照使用说明书使用br> (3)防错和容错。当 络中断、数据库崩溃这样的灾难性事件发生时,系统也跟着崩

系统设计文档

概要设计:高层设计,将软件需求转化为数据结构和软件的系统结构
详细设计:低层设计,将对结构表示进行细化,得到详细的数据结构与算
法。

面向结构化分析与设计

结构化分析

自顶向下逐层分解
结构化分析步骤

  1. 数据流图:画出系统的数据流图,说明输入、输出数据的情况,数据经过哪些加工处理
  2. 建立系统逻辑模型 :将数据流图转换成系统等价的逻辑模型
  3. 划清人机关系:哪些是机器完成,哪些是人工完成

数据流图DFD

基本元素
过程:也称为加工,一步步地执行指令,完成输入到输出的转换。
外部实体:也称为源/宿,系统之外的数据源或目的。
数据存储:也称为文件,存放数据的地方,一般是以文件、数据库等形式出现。
数据流:从一处到另一处的数据流向,如从输入或输出到一个过程的数据流。
实时连接:当过程执行时,外部实体与过程之间的来回通信。

UML基础

1.用例图

从用户角色描述系统的功能。并指出功以的执行者。本质上是功能分解、支持领域建模、面向对象用例驱动。关系有:关联、扩展、泛化、包含

2.静态图

类图:描述系统静态结构,包括,继承、聚合、关联、依赖等关系
对象图:是类的实现,反应某一个时间内对象的活动
包图:描述系统的分解结构,继承、构成、依赖

3.行为图

  • 交互图:顺序图(对象间消息发送时间序列)、合作图(对象间的状态协作)
  • 状态:描述对象的状态行为
  • 活动:描述系统某一项的执行操作序列,可以并发、同步,包含控制流和信息流动作状态、活动状态
  • 泳道:根据活动的职责划分所有的活动,每个泳道带表一个责任区,所关心的是职责 分支:branch
    分叉汇合:fork join 对象流

4.实现图:构建图、部署图
5.构建图:构建之间的依赖
6.部署图:系统结构的部署

UML设计说明
依赖(Dependency)
【依赖关系】:是一种使用的关系, 即一个类的实现需要另一个类的协助, 所以要尽量不使用双向的互相依赖.
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者

聚合(Aggregation)
聚合关系】:是整体与部分的关系, 且部分可以离开整体而单独存在. 如车和轮胎是整体和部分的关系, 轮胎离开车仍然可以存在.如微服务A 微服务B 聚合合微服务AB。但A、B都是可独立使用的
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体

泛化(Generalization)
具体描述建立在一般描述的基础之上,并对其进行了扩展。在java中用来表示继承的关系

面向领域分析与设计

分析阶段
在分析阶段的领域模型中,我觉得主要描述领域实体及关系,可以辅助领域名词解释(可以是业务字典形式)、以及约束(业务规则),而业务实体(域实体)仅描述主特征即可。用例分析法

设计阶段
聚合根
领域服务
领域事件
边界上下文

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年9月21日
下一篇 2020年9月21日

相关推荐