Mandrian是个图书管理系统, 具体需求老师给出
这个项目的目的主要是管理过程和高层设计的学习和实践
11人小组, 路人局

成员调查

这里由于很多人我都不认识, 所以我提前发了一个能力调查表, 调查范围是代码,管理和设计能力.


结论(如果前后分离):

  1. 居然想去前端的人多, 前后人数比接近2:1, 如果不是胡选的话, 是个优势
  2. 后端主力语言应当是java
  3. 大家都不用git么..., 那么代码版本如何控制?如何多人协作开发?难道要用qq邮件合并代码么-_-

分析和设计流程

以下都是本人的经验, 主要是貌似没有一种固定的分析和设计方法? 还是说我又忘了?

分析: 对需求具体功能划分, 组织结构
设计: db设计, api设计, 开发模块设计, 架构设计, 框架选择

功能划分

目的见上图, 是为了下面的工作做铺垫
需要注意的是:

  1. 此处第一次划分只能大组长做, 或者PO们讨论, 因为组织结构还没定, 没有小组长可以分工
  2. 第一次划分最大的贡献是定组织结构
  3. 第二次划分最大的目的是定下开发的具体任务
  4. 开发过程中很可能发现功能划分不正确, 没办法, 我们是增量模型, 不像瀑布模型那样时间长且特别严谨
  5. 事实上此处有些像WBS, 这是我之后才接触的, 现在并不清楚WBS是干嘛的

组织结构


为什么设计成这样? 为什么不用按老师讲的三种功能分?

  • 首先按功能分的话, 有两个缺点

    • 编码效率低
      同时做某几个功能的话, 如果成员不了解多人合作, 很可能代码合并冲突
      而且前后不分的话, 很可能存在前后端来回改的情况, 怕是脑子转换不来
    • 成员学习成本高
      不了解框架或者语言的话, 一边后端一边前端, 谁吃得消啊
  • 如果按前后分离的路子, 我认为一点问题没有
    但是相较于按功能划分的话, 这个分工比较难把握文档写作等一系列课程上的事情, 也算是很无聊的原因吧
  • 主功能副前后的话, 会有几个很严重的问题
    • 相似功能的合并(比如login的api), 合并之后无论谁要实现这个功能, 都会出现组间的前后端依赖, 其实问题不大, 但这样的话公共部分得我写么?(吐血
    • api的设计, 像reader组和librarian组, 都有对reader的crud, 到底是谁写ReaderController? 我觉得要分离成SelfReaderController, LibReaderController, 这不是自找麻烦么?
  • 所以我们很可能是三个后端组合并, 分开写功能(ReaderController, AdminController等, 而非每个人按照功能个写个的)
    (注意我们的前后端在开发时是相当分离的, 这个等下再说, 关键词: 前端渲染, MockServer

db设计

关键词: 权限五张表(或许三张?)
todo: 日志如何解决? 统计信息如何?

api设计

RESTful API没跑了
很可能首先小组长定义, 出文档, 前后共用
后端先开发api, 前端首先模拟api(mock server), 然后写页面, 高度并行

模块划分

基于上述讨论, 脑子里还是老一套
mandrian-common: 数据访问, 工具类, 配置, 权限aop, 日志aop, 安全aop
mandrian-back: 主要是api (或许叫做mandrian-api?)
mandrian-front: 提供页面访问的url, 还有具体页面
待讨论吧

架构设计

注意到了邮件, 日志还有统计, 可能又要mq了?
待续

框架选择

前: bootstrap, jquery, template.js, (mock server)
后: spring boot, spring mvc, (spring data jpa+mybatis), thymeleaf(几乎静态的页面)
待讨论

吐槽

  1. 说起来为什么我不认识大家, 但是还是当了组长?
    原因是我们猜拳决定的组长, 这本来就够扯淡了, 但居然我还能输了10个人???

记项目管理大作业Web项目Mandrian的全流程[其一] 整体分析: 功能划分, 组织结构的更多相关文章

  1. 记一次JAVA WEB项目解决XSS攻击的办法(亲测有效)

    什么是XSS攻击 简单来说,XSS 攻击是页面被注入了恶意的代码,度娘一大堆的东西,不想说 系统架构主要是SSM框架,服务层另外使用了DubboX.   为啥说这个,因为SpringMVC对于Xss攻 ...

  2. java web项目使用ant编译将不同的功能代码打包成jar,进而分局点将项目打包成不同的tar.gz包进而部署

    使用ant可以轻松的将一个项目分离代码,直接打包成不同需求的tar.gz包使用 1.build.properties (属性) version.num=1.0 #版本信息 2.build.xml (a ...

  3. 远程服务器上的weblogic项目管理(一)项目部署与更新流程

    最近接手了项目组的服务器管理工作,服务器以linux系统为主,项目则搭建在weblogic上面,也算是积累了一些远程管理服务器的心得,决定稍微整理一下: windows系统要如何方便地连接到远程服务器 ...

  4. web项目中的执行流程参数传递详解

    还是从这个图开始讲解: struts2中有一个存放数据的中心:值栈.(值栈里面有map和对象栈) 首先:值栈的作用范围是一个请求:request作用域(一个请求是代表的一个过程,即页面点击到数据返回到 ...

  5. 在web项目中使用shiro(记住我功能)

    第一步,添加“记住我”复选框,rememberMe要设置参数 第二步,配置shiro的主配置文件 注意 rememberMeCookie对应的bean中要声明 <constructor-arg ...

  6. 64位系统web项目导出excel问题分析及解决方法汇总

    最近在web项目中做了一个导出Excel功能.在导出的时候报错:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败. 一 ...

  7. 一款基于SSM框架技术的全栈Java web项目(已部署可直接体验)

    概述 此项目基于SSM框架技术的Java Web项目,是全栈项目,涉及前端.后端.插件.上线部署等各个板块,项目所有的代码都是自己编码所得,每一步.部分都有清晰的注释,完全不用担心代码混乱,可以轻松. ...

  8. 在eclipse中公布maven的多模块web项目到tomcat上及单步debug模块jar

    1.在eclipse中公布maven的多模块web项目到tomcat eclipse和maven及tomcat的部署略去,还有maven的基础知识和使用在此处略去. 依照例如以下的步骤操作: 将lib ...

  9. IDEA将Java Web项目打war包

    准备工作 1.IntelliJ IDEA开发工具 2.可以正常运行的Java Web项目 打war包流程 1.使用快捷键Ctrl+Alt+Shift+s 或者 鼠标点击选中项目名按F4 打开 Proj ...

随机推荐

  1. 解决Android Studio 升级时提示 Connection failed. Please check your network connection and try again问题

    一,问题: 无论mac还是windows可能都会出现这个问题,解决方案大同小异,就是修改VMOptions而已. 解决方案: Windows: 在\Android Studio\bin目录下找到 st ...

  2. Android关闭通知栏后toast无法提示的解决方案

    https://github.com/getActivity/ToastUtils PS:release版本注意加上混淆规则

  3. 一百零七:CMS系统之权限和角色模型定义

    模型与权限关系映射表 class CMSPersmission: """ 权限管理映射 """ # 255的二进制方式来表示 1111 11 ...

  4. Servlet(2):Requset/Response Encoding and Filter

    Requset/Response Encoding 表单提交分GET和POST,接下来分开讨论. (1)GET/URL提交的数据 在 Tomcat中,默认情况下使用"URIEncoding& ...

  5. 《精通并发与Netty》学习笔记(04 - Google Protobuf介绍)

    一 .Google Protobuf 介绍 protobuf是google团队开发的用于高效存储和读取结构化数据的工具,是Google的编解码技术,在业界十分流行,通过代码生成工具可以生成不同语言版本 ...

  6. 【C/C++开发】__stdcall,__cdecl,__fastcall的区别

    __stdcall和__cdecl的区别 __stdcall和__cdecl是两种函数名字修饰.(注意是连续的两个下划线) Windows上 windows上不管是C还是C++,默认使用的都是__st ...

  7. 关于JavaScript的词法作用域及变量提升的个人理解

    关于JavaScript的作用域,最近听到一个名词:“词法作用域”:以前没有听说过(读书少),记录一下对此的理解,加深印象. 词法作用域:在JavaScript中,一个函数的作用域,在这个函数定义好的 ...

  8. 23.安装php和echarts进行结合展示图表

    数据展示 http://echarts.baidu.com/index.html 是一个图像展示 可以到官方实例中选择各种图 通过下载例子 新建echartdome.php <!DOCTYPE ...

  9. [转帖]Breeze部署kubernetes1.13.2高可用集群

    Breeze部署kubernetes1.13.2高可用集群 2019年07月23日 10:51:41 willblog 阅读数 673 标签: kubernetes 更多 个人分类: kubernet ...

  10. [转帖]Kubernetes CNI网络最强对比:Flannel、Calico、Canal和Weave

    Kubernetes CNI网络最强对比:Flannel.Calico.Canal和Weave https://blog.csdn.net/RancherLabs/article/details/88 ...