复习
软件工程:工程开发的过程
软件的输出物:
- 需求分析说明书(100+页)
1.1 、需求分析
1.2、背景分析
1.3、 功能分析
1.4 、规划模块
1.4.1 、子功能点
1.5 、附件
2.概要设计说明书
2.1 、软件版本(运行环境版本)
2.2 、架构设计
2.2.1、界面设计
2.2.2、数据表
2.2.3、程序骨架
2.2.4、流程图
2.3、编码规范设计
2.4、测试案例设计
2.5、交付设计
3.详细设计文档
3.1、算法设计
3.2、界面设计
3.3、数据库表结构(数据类型,表关联性,中间表设计)
学生表:t_student:id,name,sex,age,info
课程表:class:name,id
中间表:学生课程表:编号,学生id,课程编号
3.4、测试用例设计
3.5、综合测试设计(本公司的测试设计,外包出去的测试范围)
3.6、部署设计(部署服务器的软件版本,软件环境)
4.数据库设计
4.1、数据库选择、
mysql:轻量级数据库
limit
oracle:企业级数据库
伪列
4.2、数据来源设计
4.3、数据库表结构
5.源码
6.数据库脚本(xx.sql)
7.使用手册(一般由实施工程师、技术支持编写)
7.1、软件项目的搭建(从零----》运行)
7.2、软件使用演示(视频、现场展示 (实施、技术支持))
7.3、当前软件的缺陷(压力缺陷,临界值问题)
7.4、使用文档说明
新课内容
模块化
软件项目
版本控制软件:Git,SVN
Git:将代码保存到云端()GitHub, coding所有人从云端获取数据,每个人将当天
开发的代码直接传云端,自动进入代码整合(项目冲突)
一般每个人开发过程中,都是独立完成自己的功能模块,模块间没有藕连性
注意:代码保存在别人的服务器中,安全性有问题
SVN:在服务器上架设SVN服务器,将代码直接保存到SVN服务器
1.手机端客户端(APP-功能简单)
1.1、根据用户使用模块划分(个人)
1.2、根据功能划分(基本信息操作,存取功能,借款功能,金融功能)
1.3、根据部分划分(OA系统:市场部,项目部,总经办,咨询部)
2.模块化的要求
2.1、每个大的模块,需要进行模块细分
2.1.1、能直接编写代码,不考虑其他逻辑
2.1.2、减少模块间的关联性
2.1.3、模块间最好能独立测试
2.2、每个模块必须分配对应负责人
2.3、每个模块需要制定验收要求
子系统
如果项目过大,需要将项目划分为多个分支系统
为了项目的系统的逻辑保密,故意将整个项目划分为多个子系统,外包出去(银行类项目)
例如:中信银行--商贷平台---->
一个公司完成,这个公司的项目组成员一定会知道整个系统的运作原理
系统的保密性受影响
1.加密算法(密码不安全的)
2.商贷利率算法(后门---直接改利率)
一般会将整个系统划分为多个子系统
子系统划分规则
1.按照功能(没有关联性)划分----交由多个公司或项目组开发
2.按照部门划分
钉钉
OA:考勤,提报,文件审批
OA系统:公司的运作情况
例如:中小学兴趣班的培训后台系统
子系统1:
咨询部(新人员的信息录入(名字,所在学校,当前年级))
考核老师:入园考核
分配班级:将考核成功的人员分配到对应的班级
班级负责老师:审批同意
-----------新人员才算入班
2.1、功能部分
2.2、公共部分需要建立公共系统
2.2.1、考核审核
2.2.2、输出物(将数据导出成Excel、doc)
2.2.3、读取文件(Excel)
2.2.4、其他的公共功能
2.3、每个子系统约定:减少扇出,增加扇入
2.4、子系统大小需要适中
保证各个子系统的交付时间在一定范围内
2.5、子系统的功能必须按照需求文档进行设计
2.5.1、每一个子系统都会规定功能,输出情况,如果私自变更会导致其他的子项目衔接不上
电商:购物车(子系统),订单(子系统),支付(子系统)
订单(传入商品信息自动生成详单)
订单(传入商品详细信息(数量(能否购买),总价,用户信息))
2.6、设置子系统输出数据验证
2.7、耦合,内聚
耦合:子系统减少耦合(一个系统需尽量的减少与之相关联的子系统)
目的:当系统出现问题时,其他部分被=不会受很大影响
内聚:子系统内部,需要提高能效(代码精炼,逻辑紧凑)
界面设计
1.视觉效果设计
1.1、高级动画
1.2、性能消耗(计算机配置跟不上,高级动效变成ppt,还会卡电脑)
1.2.1、硬件情况(推荐配置)
1.2.2、算法
c语言(主策自学c语言编写),所有数据类型为String,所有动效加载是一定顺序的
和一个npc对话,刷新全地图npc(CPU占用率很高)
1.2.3、网络情况
如果数据量庞大,设计时,尽量在用户本地进行生成
1.3、小清新风格(所占资源少,运行速度快,网络数据获取快)
1.4、色彩饱和度(护眼色)
长时间使用,眼睛不会很干
1.5、显示大小(屏幕适配)
保证图片不能失帧(.9z.png)
2.线框的设计
-------轮廓图
2.1、简洁
2.2.1、保证有必要的功能区
2.2.2、每个模块数据能够显示
2.2.3、将扩展部分的区域进行预留
2.2、使用的工具
能做出思维导图的工具
2.3、需要添加注解
2.4、文字描述
3.着色
主题:主美定
1.一般由主美进行设计
2.下发给各个UI设计师,由主美审核
3.颜色对比度(减少用户使用的时候的落差感)
3.1 减少当前软件的意见
4.颜色不能太艳(保存小清新风格)
4.图片
4.1、不能压缩图片
4.2、尽量按照图片原大小显示(美工)
4.3、图片的层级(图片的组合------分辨率不高)
由多个图片组成的动效,不同的图片透明度不同
数据库设计
1.需求分析
1.1、数据类型及数据显示,员工编号:id,Int
1.2、数据间的关系(中间产物:中间表,外键设置)
1.3、数据的加工处理(处理算法)
1.4、数据量(分析:数据优化)
1.5、数据完整性,有效性
2.数据结构设计
1.数据所对应的实体类---对象,属性,联系
t_user:id,name,password,roleId
class User{
private int id;
private String name;
private String password;
private int roleId;
}
t_dis:地区表 id, name, pid
1, 四川, 0
2, 成都, 1
3, 华阳, 2
4, 锦江区, 2
5, 青羊区, 2
6, 德阳, 1
7, 什邡, 6
8, 重庆, 0
9, 重庆市, 8
1.四川下面直接的地区分类:select Id from t_dis where pid ='1'
2.select * from t_dis where pid in (select id from t_dis where pid = '1')
java递归:在一个方法中调用方法本身,称为递归写存储过程----递归查询
class Dis{
private int id; //地区编号
private String name; //地区名称
private int pid; //上级地区编号
private List<Dis> subList; //下级地区对象集合
}
注:查询当前类别下所有信息
2.数据库逻辑结构(表之间的关系)
1.外键(限制数据的录入)
t_user: id, username, password
1001, '张三' '123456'
t_user_info: id name age sex phone userId
10001 '张三' 20 '男' 1820133592 1002
t_user_info.userId <=> t_user.id
当录入一个不存在的于user表的数据时,会报错
2.数据库约束
主键,外键,唯一,非空,默认
3.函数,存储过程(DBA)
数据库分析设计
1.员工模块
员工表:员工编号,姓名,性别,电话,身份,登录状态,出勤状态,所需场馆,权重,头像,备注
场馆表:场馆编号,场馆名称,场馆所需地区
出勤状态表:正常,缺勤,休假,停职,停薪保岗,离职(辞退(n+1),劝退),复职
职位表:店长,教练,销售,财务,前台,管理员,设备管理员
外键-不常用:外键匹配时,耗时,消耗较大
使用下拉框进行选择,防止数据库攻击