系统分析与设计

系统分析与设计_系统分析


1. 需求分析概述

开发分析:需求工程阶段,需求分析

1.1 需求工程

软件需求:是指用户对系统在功能、行为、性能、设计约束等方面的期望

软件需求分为需求开发和需求管理两大过程

1.2 需求分类

按需求内容可分为业务需求、用户需求、系统需求


  • 业务需求:由客户提出的一个宏观的功能需求
  • 用户需求:设计员去调查需求中设计的每个用户的具体需求
  • 系统需求:经过整合,形成最终的系统需求,包括功能、性能、设计约束


– 功能需求:软件必须完成的基本工资
– 性能需求:说明软件或人与软件交互的静态或动态数值需求
– 设计约束:受其他标准硬件限制等方面的影响


从客户角度可分为基本需求、期望需求、兴奋需求


  • 基本需求:需求明确规定的功能
  • 期望需求:客户任务理所应当包含在内的其他功能
  • 兴奋需求:客户未要求的其他功能需求

2. 结构化需求分析

考点分析:结构化需求分析特点,三大模型,数据流图,数据字典,E-R图,状态转换图

结构化需求分析自顶向下,逐步分解,是面向数据的,强调分析对象的数据流

系统分析与设计_系统分析_02



  • 数据流图(功能模型):描述数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模
  • 数据字典:用来定义在数据流图中出现的符号或名称的含义
  • E-R图(数据模型):实体联系图
  • 状态转换图(行为模型):通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。状态图还指明了作为特定事件的结果系统将做哪些动作

3. 面向对象需求分析

考点分析:面向对象基本概念,UML事务,关系,图分类

3.1 面向对象基本概念

  • 对象:基本的运行实体,为类的实例,封装了数据和行为的整体
  • 类:是对象的抽象,定义了一组大体相似的对象结构,定义了数据和行为
  • 消息:对象之间进行通信的一种构造
  • 继承:父类和子类之间共享数据和方法的机制
  • 覆盖:子类在原有父类接口的基础上,用适合自已要求的实现去置换父类中相应的实现
  • 函数重载:与子类父类无关,且函数是同名不同参数
  • 多态:不同对象收到同一个消息时产生完全不同的反应
  • 静态成员:不同对象之间共享数据的方式,值可修改
  • 静态类型:指一个对象的类型在编译时就确定
  • 动态类型:指对象类型在运行时才能确定
  • 静态绑定:基于静态类型的,在程序执行前方法以及被绑定
  • 动态绑定:基于动态类型的,运行时根据变量实际引用的对象类型决定调用哪个方法
  • 封装:一种信息隐蔽技术,目的是使对象的使用者和生产者分离
  • 类的属性和方法:分为public(所有类都可访问)、private(仅本类内部可以访问)、protect(本类内部可访问、继承子类也可以访问)

3.2 UML

统一建模语言(Uinfied Modeling Language,UML)和程序设计语言并无关系,UML结构包括构造块、规则和公共机制三个部分


  • 构造块:有三种基本的构造块,分别是事务、关系和图。事务是UML的重要组成部分,关系把事务紧密联系在一起,图示多个相互关联的事物的集合
  • 规则:是构造块如何放在一起的规定
  • 公共机制:是指达到特定目标的公共UML方法

4. 系统设计

考点分析:系统设计内容及步骤,结构化设计组成及原则,内聚和耦合分类及特点,面向对象设计原则

4.1 系统设计概述

  • 系统设计目的:为系统指定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法
  • 系统设计方法:结构化设计方法、面向对象设计方法
  • 系统设计主要内容:概要设计、详细设计


– 概要设计:总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图
– 详细设计:模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计、编写详细设计说明书、评审


4.2 结构化设计

结构化设计主要包括以下体系结构设计、数据设计、接口设计、过程设计四个部分

结构化设计基本原理:抽象化、自顶向下逐步细化、模块化、模块独立

结构化设计原则:


  • 保持模块的大小适中
  • 尽可能减少调用的深度
  • 多扇入,少扇出
  • 单入口,单出口
  • 模块的作用域应该在模块之内
  • 功能应该是可预测的

内核和耦合:模块的设计要求独立性高,就必须高内聚,低耦合。内聚是指一个模块内部功能之间的相关性,耦合是指多个模块之间的联系

4.3 面向对象设计

面向对象设计原则:


  • 单一职责原则:设计目的单一的类
  • 开放 – 封闭原则:对扩展开放,对修改封闭
  • 李氏(Liskov)替换原则:子类可以替换父类
  • 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
  • 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
  • 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
  • 迪米特(Demeter)原则:一个对象应当对其他对象有尽可能少的了解