软件需求分、架构设计与建模最佳实践

软件需求分、架构设计与建模最佳实践

  • cxx 2019-04-13
一、为什么要详细设计,价值?
  1. 在多人团队环境中,详细设计驱动开发可实现明确交付的目标和标准
  2. 可复用的设计成果
  3. 提高代码的可维护性
  4. 可对交付进行工作量和质量的评估
  5. 实现知识传承,提高软件生命周期
二、控制软件复杂性的基本方法
  1. 分解法
  2. 抽象法
三、UML有哪些元素
  • 结构
  • 行为
四、基于用户目标的需求组织形式
  • 交互式需求
  • 清晰的责任
  • 场景化

    文档的五大功效

  • 有助于编写使用手册
  • 测试用例转化:帮助开发人员设计测试用例
  • 需求用例
  • 利于详细设计时序图的设计
  • 组件设计:功能复用
五、分析要点。。。
  1. 定性
  2. 定量
  3. 场景
  4. 约束需求
    • 并发
    • 数据量
    • 带宽
六、用户体验的指令
  1. 功能性体验
  2. 易用性体验
  3. 性能体验
  4. 可靠性体验
七、设计用例
  • 识别执行者(*)

? 确定系统边界,避免需求膨胀

? Actor:人,系统,时间,温度、阈值

? 系统外:必须和它交互:主Actor(需求行为的发起者),辅助Actor(需求行为的参与者)【边界、接口】

? 直接交互

? 有意义的交互

? 任何事物

  • 识别执行者 (宁多不少)

    谁使用系统主要功能--潜在会员、会员

    谁改变--会员、货管员、经理

    谁获得信息--潜在会员、会员、货管员、经理

    谁需要系统的支持完成日常工作

    谁负责维护、管理

    系统需要应付那些硬件设备

    系统需要和那些外部系统交互

    谁对系统产生结果感兴趣

    有没有自动发生事件--检查账户

下午:

识别用例:

  • 选择执行者
  1. 用例的直接交互者
  2. 角色可以抽象泛化
  3. 主执行需要辅助执行者
  • 基本定义
  1. RUP:用例实例:系统中执行的一系列动作(步骤),这些动作将生成特定执行者可见的价值结果(价值)。
  2. 执行者通过该系统所要达成的目标。
书写用例文档--用例模板

前置条件、后置条件

用例交互四部曲
  1. Actor发起请求
  2. 系统验证请求
  3. 系统处理请求
  4. 系统响应请求

编一个用例

用例名称:申购单笔基金

模板:

第二天、架构设计及详细设计、设计原则、模式

日期:2019-04-14

1、架构设计
  • 标识领域范围

    从需求规格说明书入手

    通过遗留的软件增强认识

  • 输出模块组件接口

    模块分解系统

    组件实现复用

    接口解决耦合

  • 模块划分方法
    1. 业务领域

      同种类型行为

    2. 基于角色

      相同的角色

    3. 组织架构
    4. 组织架构+领域(ERP)

      生产管理,客户关系、人力资源

? 系统->子系统->模块

  • 组件

    复用型、服务型、展显型

  • 接口

    用组件图来画

    类型 图形
    模块 包图
    组件 组件图
    接口 组件图
2、OOAD建模

UC开发迭代

v1->80%

V2->90%

V3->100%

边做设计,便进行coding

敏捷:TDD

MDA:Model-Driven Architecture

PIM: Platform Independent Model,作为分析阶段的产物--平台独立的

3、UML建模流程

ICONIX

Use Case Model->Domain -> Sequence Diagram

  • 技术责:文档、代码、测试用例
  • 注释先行,思维进入设计状态
  • dofige

类图

? 以功能进行组织类,数量10~20之间

识别类熟悉

? 基于用例进行分析

? 先在白纸上进行绘图

下午

closeDoor()

class Door{}

class People{}

class Wind{}

基本原则:函数放在那个类中,函数操作属性主要由那个类提供

类和类之间关系:关联、泛化、组合、聚合

Actor和Actor之间关系:泛化

Use Case和Use Case之间关系:泛化、包含、扩展

顺序图-时序图

需要用例文档、类图

开源代码去重工具:SonarQube---代码质量管理平台

右键-高级-转换为实例

高内聚、低耦合

高内聚:

? 描述模块内各元素的紧密结合程度

? 开源工具sourcemoitor扫描代码复杂度

? 函数》80-100行 类》1000-1500行

顺序图---重要

活动图:

? partition,inition,final,activity,分支decision,send,receive

练习:

? 160页,活动图练习1

状态图:

? 分析》》》Excel

无预订 部分预订 预订完 预订关闭
无预订
部分预订
预订完
预订关闭

时间序列图:timing,定时图

原文地址:https://www.cnblogs.com/windlog/p/12348621.html

时间: 2025-01-12 05:24:43

软件需求分、架构设计与建模最佳实践的相关文章

领域驱动设计之单元测试最佳实践(一)

领域驱动设计之单元测试最佳实践(二) 一直以来,我试图找到一种有效的单元测试模式,使得“单元测试”真正能够在团队中流行起来,让单元测试不再是走过场,而是让单元测试切切实实成为提高代码质量的途径. 本文将描述一种以EF Code First模式实现的领域驱动项目实施单元测试的方案. 在描述这一方案之前,让我们看看这一最佳实践源于何种考虑和最终实现的目标: 1.以MVC项目为例,如果将单元测试的重心放在如何测试一个Controller或Action将收效甚微,原因有二: 从原则上讲Controlle

20个设计数据库的最佳实践指南

数据库设计看上去很简单,但是如果不经意随意设计,可能会为日后维护拓展或性能方面埋下祸根.以下是20个设计数据库的最佳实践指南: 1. 使用完整的一致的数据表名称和字段名,如:School, StudentCourse, CourseID 2.数据表名称使用单数,比如使用StudentCourse 而不是StudentCourses,数据表代表实体的一个集合,因此没有必要使用复数名称. 3. 数据表名称不要使用空格,比如StudentCourse 比Student Course更好. 4.数据表名

【转】Flume(NG)架构设计要点及配置实践

Flume(NG)架构设计要点及配置实践 Flume NG是一个分布式.可靠.可用的系统,它能够将不同数据源的海量日志数据进行高效收集.聚合.移动,最后存储到一个中心化数据存储系统中.由原来的Flume OG到现在的Flume NG,进行了架构重构,并且现在NG版本完全不兼容原来的OG版本.经过架构重构后,Flume NG更像是一个轻量的小工具,非常简单,容易适应各种方式日志收集,并支持failover和负载均衡. 架构设计要点 Flume的架构主要有一下几个核心概念: Event:一个数据单元

领域驱动设计之单元测试最佳实践(二)

领域驱动设计之单元测试最佳实践(一) 介绍完了DDD案例,我们终于可以进入主题了,本方案的测试代码基于Xunit编写,断言组件采用了FluentAssertions,类似的组件还有Shouldly.另外本案例使用了Code Contracts for .NET,如果不安装此插件,可能有个别测试不能正确Pass. 为了实现目标中的第二点:"尽量不Mock,包括数据库读取部分”,我尝试过3种方案: 1.测试代码连接真实数据库,只需要将测试数据库配置到测试项目中的web.config中,即可达到这一目

App 后台架构设计方案 设计思想与最佳实践

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/53933096 做App做的久了,就想研究一下与之相关的App后台,发现也是蛮有趣的.App后台的两个重要作用就是 远程存储数据 和 消息中转.这里面的知识体系也是相当复杂,做好一个App后台也是需要长期锤炼的.本篇文章从 App 后台架构 的角度介绍.好了,下面进入正题: 说起架构,我们先看一下何为架构,百度百科是这样说的:架构,又名软件架构,是有关软件整体结构与组件的抽象描述,

jQuery插件的编写相关技术 设计总结和最佳实践

原文:http://www.itzhai.com/jquery-plug-in-the-preparation-of-related-technical-design-summary-and-best-practices.html 1.声明插件名称: 添加一个函数到jQuery.fn(jQuery.prototype)对象,该函数的名称就是你的插件名称: jQuery.fn.myPlugin = function() { // Do your awesome plugin stuff here

软件面向对象的架构设计基本原则

1,单一职责原则 要求:对象职责明确,一个对象只做好一件事情,必须专注,职责过多容易引起变化的原因就多,程序就不够稳定. 2,开放封闭原则 要求:需求变化时尽量少的修改类的设计,而是通过扩展来完成.即封闭修改,开放扩展. 3,依赖倒置原则 要求:基于接口编程,高层模块调用接口,底层模块实现接口,防止底层变化直接影响高层. IOC,AOP等技术框架最早的成熟应用源自JAVA企业开发,现在.NET领域发展也非常迅速,常见的框架有如下等: Autofac下载地址:http://code.google.

高可用架构设计与实践

第一课:高可用架构知识原理篇 什么架构的高可用? 架构高可用的重要性? 架构高可用的常用手段都有哪些? 架构高可用评价维度是什么? 架构高可用的考核如何分级? 架构高可用的涉及环节都有哪些? 第二课:高可用架构设计之总体架构篇 高可用架构为什么需要分层? 高可用架构分层设计原则是什么?如何架构分层? 高可用架构分层最佳实践: 我们的实践案例: 第三课:高可用架构设计之硬件篇 如何选择硬件?选择什么样的硬件? 高可用架构硬件层面如何保证? 硬件层面高可用架构保证的最佳实践是什么? 我们的实践案例:

架构设计的方法学

约公元前25年,古罗马建筑师维特鲁威说:"理想的建筑师应该既是文学家又是数字家,他还应通晓历史,热衷于哲学研究,精通音乐,懂得医药知识,具有法学造诣,深谙天文学及天文计算."(好难哪,软件构架设计师的要求呢?大家好好想想吧.)   本文目录   一.与构架有关的几个基本概念:   二.构架设计应考虑的因素概揽:   三.程序的运行时结构方面的考虑:   四.源代码的组织结构方面的考虑:   五.写系统构架设计文档应考虑的问题   六.结语   一.与构架有关的几个基本概念:   1.模