2021-10-26 孤尽训练营D1笔记

关键字:需求分析、设计原则、架构与架构图

一、需求分析

(一)分析:边界、用户故事、用户路径(我们和系统的任何触点都是一个用户路径)

分析背后的人性:人性是提出需求的本源

做任何系统都要从用户的诉求出发

(二)伪需求:没有调研、没有目标、没有逻辑的无脑需求

 应对:1.用数据化结果否定需求合理性(是否有做PMF)

           2.用正反案例来说明需求需要改进的地方

           3.用户路径和触点推演需求合理性

(三)权利需求:老板或者是强势业务方的需求

  应对:1.先肯定需求价值再提出需求实现的成本

             2.给出更好地需求替代方案

             3.从数据和案例角度说明需求快速上限危害性

(四)问题的分层

  • (本源问题)用户问题:“我想支付”
  • (经营视角)业务问题:支持一切可以支付的第三方支付工具
  • (体系结构)产品问题:支付需要逆向流程、异常流程、对账模块等
  • (架构代码)技术问题:高并发、可用性,实现第三方支付的链路

(五)KISS原则(Keep it simple and smile)

        架构的理念是大道至简:解决问题

  • 如何让我们的系统有可扩展性和可维护性
  • 如何让我们的系统能够恰到好处地解决问题
  • 如何让我们的系统能够运行3-5年不重构

(六)DRY原则(Don't Repeat yourself)不重复原则

(七)七大设计原则

 共同点:提升软件的可扩展性,可维护性,是抽象思维和归纳思维的集中体现

1.单一职责:

  • 高内聚、低耦合;
  • 属性和行为向着模块预先定义的功能内聚;
  • 模块的名字非常重要

2.里式代换原则:父类能够出现的地方,子类一定能够出现

   子类出现的地方,父类若出现了,一般都有问题

3.接口隔离原则

接口的粒度尽可能地小同一接口的方法强内聚于同一特征

4.组合复用原则(可避免接口污染)

  • 组合产生的对象,方法暴露的少;
  • 继承产生的对象,继承路线上的所有方法全部暴露出来;

5.依赖倒置原则

细节依赖抽象;底层依赖于高层

6.迪米特原则——互相了解的信息,尽可能地少(知识最少原则)

你使用一个接口,你只关注:输入和输出,你不需要关注具体代码实现

7.开闭原则

  • 对扩展开放,对修改关闭
  • 扩展能力主要是对需求继续变化的适应能力
  • 代码最大的稳定性,一旦成功运行,就应该改具体的代码扩展
  • 通过依赖倒置,实现增加类,或模块的方式,实现需求的变化
  • 任何变化的点,都是需要被隔离出来的

(八)熵增定律

熵减最重要的是形成开放性——开放性设计,开闭原则是熵减

扩展性设计是一种开闭原则的思维

二、架构

(一)什么是架构

  • 架构 = 组成 + 决策
  • 组成 = 模块结构 + 模块关系
  • 决策 = 约束 + 设计原则 + 演化方向

(二)架构的目的

  • 确定系统边界,在技术层面上做与不做
  • 明确非功能性需求
  • 确定系统里各模块之间的依赖关系与模块的宏观输入与输出
  • 使后续的子系统或模块设计在一个既定的框架内和技术方向上继续演化

(三)如何画架构图

1.搞清楚要画的架构图的类型

2.确认架构图中的关键要素(比如产品、技术、服务)

3.梳理关键要素之间的关联:包含、支撑、同级并列等

4.输出关联关系清晰的架构图

什么是架构图?——水平层面上的业务模块加垂直层面上的技术依赖形成的逻辑结构图

(四)架构图的好坏

1.布局:图形的上下左右前后6个方向的位置关系

2.颜色:视觉中心在哪里,哪些元素被忽略

3.逻辑:组件之间的依赖,业务实现的可行性

(五)架构图的分类

  • 业务架构
  • 应用架构
  • 数据架构——系统需要什么样的数据?如何存储这些数据?如何进行数据架构设计?
  • 技术架构

(六)传统架构图4+1

物理视图、逻辑视图、开发视图、处理视图、

场景视图:需求分析技术,通常采用UML的用例图进行设计

(七)UML(Unified Model Language)统一建模语言

U:说明以前不统一;M:建模往往需要抽象;L:交流,定义共同的协议

分类:

  • 静态结构图:类图、对象图、包图、组件图、部署图;
  • 动态行为图:状态图、时序图、活动图、协作图

UML类图六大关系:

  • 泛化关系:即继承关系
  • 实现关系:实现接口
  • 聚合关系:业务上整体与部分可以分开,是关联关系的特例
  • 组合关系:业务上整体与部分不可以分开,是关联关系的特例(黑色)
  • 依赖关系:只要在类中用到了对方,就存在依赖关系
  • 关联关系:体现的是业务逻辑的关系,是依赖关系的特例,具有导航性&多重性

架构上为何要区分组合与聚合?原因:组合解耦难;分解任务的时候不要在组合的地方进行分解

组合与聚合的理解与区分例子:

  • 人-车是聚合 车-轮子是组合
  • 看在业务内独立存在的话有没有价值。
  • 生命周期不一样,可以同时存在的,是聚合关系;生命周期一样,同生共死的是组合关系

(八)类图(属性与行为)

(九)时序图——通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作

(不关注逆流程、异常流程)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值