ATM+购物车基本原理分析
概要
主题:ATM+购物车
-
项目开发流程
-
项目需求分析
-
项目架构设计(重点)
-
项目结构搭建
-
编写具体功能
内容
项目开发流程
公司的项目流程一般都可以分为以下五个步骤
# 1.需求分析
产品经理带着开发部门老大(架构师、研发经理)去客户公司寻求客户的需求
见客户之前架构师和研发经理会先大致了解一下客户的需求
然后琢磨一套比较容易编写的流程
之后在与客户交谈时引导客户按照提前设想好的流程提出出我们的建议及需求
ps:这么做的目的是为了防止客户提出一些不合理的要求
# 2.架构设计
架构师会根据具体的业务需求选择:
开发的编程语言
项目需要的后端框架
项目说需要的数据库(主库、从库)
项目组织结构(软件开发目录规范、自定义结构)
项目功能划分(将一个大项目拆分成多个小项目)
项目的报价(开发人员数量 天数等:一个程序员一天按照1500+起步算)
还需要产品经理继续叠加报价(其他部分人员开销等)
# 3.分组开发
将项目拆分之后的多个小项目交给不同开发部门下的多个编程人员编写
每个人可能只会写很小的一部分(降低复杂度 提升开发效率 缩短开发周期)
ps:码畜>>>>码农
# 4.项目测试
交给测试部门全面测试
语法错误千万不要提交到测试部门才被发现 这样可能会扣绩效甚至三次之后会直接卷铺盖走人
ps:跟测试人员搞好关系 这样的话很多bug都不需要提交报告 私下提醒并修改即可
# 5.交付线上
将项目打包给运维人员运行维护即可
"""
小公司可能需要你一个人完成上面所有的事情
小公司很累 但是成长速度很快(整体参与)
大公司轻松 但是成长速度缓慢(只拧螺丝)
"""
需求分析
# 项目大致需求
— 额度15000或自定义
— 支持多账户登录
— 可以查看账户余额
— 可以体现(可自定义手续费比例)
— 提供还款接口
— 支持账户间转账
— 记录每月日常消费流水
— 实现购物上商城,买东西加入购物车、用户额度、调用信用卡接口转账
- 提供管理接口,包括添加账户,用户额度,冻结账户等
- ATM记录操作日志
- 用户认证操作日志
# 提炼项目
1.用户注册
2.登录功能
3.查看余额
4.余额体现
5.账户充值
6.余额转账
7.查看流水
8.添加购物车
9.查看购物车
10.结算购物车
11.管理员功能
# 项目大致技术栈
1.python基础核心编程
2.函数(装饰器)
3.常见内置模块
架构设计
"""
回顾编程经历
1.面条版(从上往下写代码)
2.函数版(开始封装代码)
ps:都是在一个py文件中写代码>>>>:类似于创业型公司 所有员工身兼数职
3.模块版(开始划分文件)
ps:根据功能的不同划分不同文件>>>>:类似于大型公司 所有员工部门精细化
疑问:
为什么大型公司需要分部门 分员工 分职责
答案:需要各自干各自最擅长的部分 提高开发效率 节省时间
如何体会到分文件的好处
将ATM机多敲几遍 自然会感觉到!!!
5遍起步后才慢慢会体会到
# 研究常见软件架构(非常重要)
百度:
百度账户登录
需要获取用户名和密码 然后校验用户名和密码
问:在哪里校验?
肯定不在你的电脑上(如果在 难道所有人的数据都在你的电脑上吗?)
是基于网络将用户名和密码发送到百度后台进行校验
后台去专门存储数据的地方校数据
# 大致分了三层
浏览器 后台 数据库
淘宝:
购物结算功能
商品价格的最终核算和账户在哪里完成
肯定不是在你当前计算机上
# 大致分了三层
浏览器 后台 用户数据库
ps:很多程序其实都是三层架构
第一层用户层只做简单的数据展示
第二层是整个程序的核心层 做具体业务逻辑
第三层是数据存取
其实我们刚刚分析的三层就是以后开发项目的固定结构
第一层其实叫做 前端
第二层其实叫做 后端
第三层其实叫做 数据库
基于上述架构分析 我们也应该将ATM分为三层架构
1.展示层 只展示功能选项 基本逻辑
2.核心逻辑层 所有的业务逻辑
3.数据层存取 给逻辑层提供数据存取
"""
############
ATM架构牛逼之处
程序的扩展性非常的强
比如
1. 展示层等我们以后学了前端可以直接替换成页面
展示层目前是cmd操作 可以换成页面
2. 核心逻辑层以后学了框架之后替换成框架
逻辑层目前是普通的python代码 可以替换成django框架
3. 数据存取层以后学了数据库直接替换成数据库
数据层目前是json文件 可以换成MySQL数据库
分组开发
# 1.搭建项目目录
针对启动脚本文件start.py可以放在bin目录下也可以直接放在项目根目录
将第二层分为三个文件(根据功能的不同)
start.py
conf
settings.py
lib
common.py
core
src.py
interface
user_interface
shop_interface
bank_interface
db
log
readme
# 2.功能框架搭建
利用空函数
# 3.注册功能
为了能够让你更加清晰的理解 我们先写面条版本
然后拆分