对于一个的软工,做一个项目对项目的分析是很重要的一个步骤。项目分析清楚了才知道自己在做什么。写代码的时候自己心中也有轮廓。
这篇博客是分析一个医药管理平台系统。让我们跟着博客一步一步的分析这个系统吧。

1 项目背景
首先了解项目背景,项目的作用? 解决了什么问题?

医疗行业的问题:药价贵

10年前,由国家卫生部统一指导,以省为单位创建一个平台:

10年后,以省医药采购平台作为指导,作为基础,对乡、镇以下的医药单位(最小医疗单位)上网采购。

2 项目概述
药品集中采购系统是利用计算机信息网络技术为医药卫生行业服务的电子交易系统,实现医疗机构上网采购、药品经营企业上网销售、监督单位网上监管,实现药品交易过程的数字化、网络化、透明化。
本系统依托与省级医药招标采购平台,在省级医药集中采购思想的指导下建立的市级医药采购平台,由市卫生监督单位将省级药品目录应用在市平台上,在市卫生局及下属单位监督下,乡、镇以下的卫生室在市平台药品目录范围内进行集中药品采购。

3 用户角色

 监管单位:
市卫生局(药政科):负责通过采购平台进行监管,主要监管医院和供货商之间的业务交易情况。
卫生院:乡镇一级医疗单位,由市卫生局直管。负责审核医药下的采购单。

 医院
卫生室:最小的医疗单位,村卫生室(卫生所)。由由市卫生局直管。
通过平台上网进行药品采购。

 供货商

药品生产企业、企业销售代理(一级代理,二级代理),称为:药品供货商

接收卫生室药品采购,按时进行药品配送。
通过平台上网进行药品销售(供应药品)。

 系统管理员
系统维护、配置、系统备份等。

4 业务流程

不同用户共同完成一个业务流程。

5 业务功能模块

将相似或一致的功能组成一个模块,如下:

完整的系统功能如下:

 药品目录模块:
药品目录维护:由卫生局统一管理,记录平台使用药品的中标目录,卫生局在省级目录 的基础上进行添加、删除,来组成市级的药品目录。
企业供货目录 :供货商将自己供应的药品添加企业供货目录,表示供货商要供应这些药品。

 采购单管理
创建采购单:医院使用
采购单审核:卫生院使用。

 统计分析
主要给卫生局使用,卫生局通过统计分析功能进行监管。

也给医院、供货商使用,医院、供货商统计自己相关的数据。

 系统管理
给系统管理员使用。

外部接口:
省级药品目录 接口:将省级药品目录 导入到本系统。

系统管理接口:通过单点登陆系统进行用户认证,将第三方系统中区域管理、系统参数配置等功能接入本系统。

6 需求分析

用户需求的分析:
进行需求调研,一份用户需求调研报告.doc及用户需求文档,用于和用户交流使用。

系统的需求分析:
依据用户需求文档(原始用户需求),进行系统需求分析,成果:“系统需求规格说明书”。
系统需求规格说明书:
描述:
需求用例:功能描述、功能接口、前置条件(功能的约束条件)、后置条件(功能影响,主要是数据库操作)。事件流(功能操作流程)

程序员根据需求规格说明书进行开发。

7 项目配置情况
7.1 人员配置

7.2 开发周期
增量模型:(企业最常用)
企业中常用的模型的增量模型,当系统很大需要几次开发完成,每次开发给做一个版本,正常进行系统安装升级等工作。

原型模型:
当需求不明确,使用原型模型降低风险。

本系统采用瀑布模型
需求明确,项目周期不长。

7.3 系统正式运行的环境。

网络环境: 互联网
硬件平台: 两台服务器:
一台安装数据库(实际上线用的是oracle集群)
一台安装web服务
操作系统平台: Centos 6.5
数据库平台: Oracle10G
Java环境: Jdk1.6
Web服务: Tomcat 7

7.4 开发环境
网络环境: 局域网
硬件平台: 每人一台台式机或笔记本电脑
两台服务器:(作为系统集成使用,和生产环境一样)
一台安装数据库(oracle)
一台安装web服务
操作系统平台: Windows,linux Centos 6.5(集成环境)
数据库平台: Oracle10G
(企业中是将一台oracle服务器作为开发服务器)
Java环境: Jdk1.6
Web服务: Tomcat 7
项目构建: Maven3.2
应用软件: Eclipse4.3(安装maven插件)
Plsqldev(oracle客户端连接工具)
Ssh client(linux远程连接客户端)

7.4.1 数据库环境

8 系统设计
包括:
系统概要设计(必须要做)
设计内容:主要系统框架、系统内外部接口
内部接口:本平台各各子系统之间的接口,模块之间接口。
外部接口:和其它系统的接口。
网络部署。
成果:“系统概要设计文档”

系统详细设计(不是必须要做)
成果:“系统详细设计文档”
设计内容:类、接口、及方法描述
程序员参考此文档进行编码。

8.1 系统模块划分
就是系统概要设计中一部分。

这里划分是系统技术架构的模块。依据业务模块进行划分。

8.1.1 以技术架构的纵向拆分方法

依据javaEE分层进行模块划分:

优点:分层清晰,方便程序员开发。

企业中常见将系统功能进行抽取组成一个子系统,比如系统管理功能,将系统管理的功能抽取出来组成一个子系统,让其它系统公用该子系统。

缺点:进行系统抽取时需要从各各层拷贝代码,如果有其它功能依赖该抽取功能代码,系统报错
模块重用困难,要想在另外一个系统重用模块必需将每个层的代码拷贝出去,模块之间耦合度高。

8.1.2 以业务模块的横向拆分方法

优点:按模块分包更加清晰,方便开发维护,对中大型项目可以采用。
缺点:虽然按模块将包创建,但模块和模块共存与一个工程,每个模块运行都必需将其它模块同时编译、部署,开发效率不高。

最大的问题:模块之间的依赖没有规范的管理。

8.1.3 以maven作为架构进行模块划分

Maven是一个优秀的项目管理工具,提高项目管理效率。

使用maven将模块工程化开发,将每个模块创建为一个maven工程。

Maven提供规范的依赖管理,依赖方将被依赖方的GAV三坐标。(依赖于某个系统的jar包)

将模块的jar发布到仓库之前 ,maven会执行编译、测试 ,通过后将jar发布到仓库,解决了一些编译的错误。
如果将测试做的完善,运行阶段错误基本也可以避免。

优点:每个模块单独创建不同的工程,单个模块运行无需编译其它代码,开发效率提高。模块之间采用maven依赖管理,只要配置好模块之间的依赖由maven进行管理。
按照maven规范运行整个系统达到一步构建,方便系统部署、测试、运行。

缺点:由于将模块分开多个工程,对于小公司由于人力不够,如果采用此模式开发反而会降低开发效率,一个人同时维护多个工程肯定比维护一个工程耗费经历。所以对于小项目不建议采用此模式开发。

8.2 系统架构
本系统采用maven进行模块划分。

本系统技术架构:springmvc3.1.4+mybatis3.2.3+oracle

8.2.1 技术架构模块
包括:springmvc3.1.4+mybatis3.2.3的jar包
不需要开发。

8.2.2 系统主工程模块

Base系统基础模块

包括:系统管理功能,其它业务功能依赖于该base模块
base模块依赖技术架构模块

business系统业务模块

business业务模块依赖于base模块。

8.2.3 常用工具类模块

将常用的工具抽取出来组成一个单独的maven工程。
Base模块依赖工具模块。

8.2.4 架构图:

系统架构及开发规范参考:

为了方便学习,将base和business合并为一个工程。

最终要构建三个maven工程:

系统主工程模块:yycgproject

系统工具类模块:yycgutil

技术架构模块:springmybatis

一个软件项目开始应该怎么入手分析,搭建相关推荐

  1. 一个软件项目的总纲性的测试计划叫什么?

    一个软件项目的总纲性的测试计划叫什么名字?项目测试计划?测试策略?测试方案? 是不是要包括测试点分析?是不是要包括测试用例? @张克强-敏捷307: 每家公司可能有不同说法,征集大家习惯的说法-你们是 ...

  2. 如何对一个软件项目的成本进行评估或估算?

    在对一个软件项目进行成本估算或评估时,应该包括从项目立项直至项目研发活动结束所花费的资源总和,并且可以按阶段进行估算或测量. 软件成本估算的基本过程是什么呢? 软件成本估算的过程可分为:估算规模.估算 ...

  3. 下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示活动,边的权重表示活动的持续时间,则里程碑(7)在关键路径上,活动GH的松弛时间是(8)。...

    2014年下半年 网络工程师 上午试卷 综合知识   下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示活动,边的权重表示活动的持续时间,则里程碑(7)在关键路径上,活动GH的松弛时 ...

  4. 【活动图】下图是一个软件项目的活动图,其中顶点表示项目里程碑,链接顶点的便表示包含的活动,边上的数字表示完成该活动所需的天数。求关键路径长度。

    1. 下图是一个软件项目的活动图,其中顶点表示项目里程碑,链接顶点的便表示包含的活动,边上的数字表示完成该活动所需的天数.则关键路径长度为____,若在实际项目进展中,在其他活动都能正常进行的前提下, ...

  5. 如何做一个软件项目经理? ----写给公司所有的开发人员

    第一部分:软件项目经理的要求 首先是一个管理者,其次熟悉某些工具,某几种语言,行业背景,项目管理技能. 软件项目经理面临的恶劣环境,我们绝大部分软件企业运行在相对混乱的状态(CMM一级),组织不大可能 ...

  6. 如何写好一个软件项目的技术标书?

    技术标书作为一个初期评价软件供应商的重要标准之一,需要覆盖多方面的考虑因素,从需求的理解,到系统的设计,到项目的实施与管理,以及项目的验收与后期支持.那么我们如何来编写一个高质量的技术标书呢? 1.理 ...

  7. 一个软件项目经理的心得和经验

    从自身经历的角度谈谈企业信息化软件项目经理的能力和主持项目时应关注的问题和焦点,不足之处请广大同行指点,大家一起交流共同进步. 我国的软件企业大部分是以接项目的形式做为生存和发展的途径,项目有大有小, ...

  8. 一个软件项目的组成成员及分工

    目录 模块设计师 需求分析师 数据库设计师 架构师 系统分析师 项目组长 项目经理 软件开发工程师 美工 系统分析员 出模块设计师 需求分析师 数据库设计师 架构师 系统分析师 项目组长 项目经理 软 ...

  9. 一个软件项目如何做成本预估

    作为项目经理,除了要确保项目在计划的时间内完成,还要确保在计划的预算范围内完成,项目超支,可能直接导致项目失败.项目规划过程中,如何制定预算非常重要. 对于软件开发项目,项目成本包括人力成本和非人力成 ...

最新文章

  1. isContinuous 反色处理
  2. 整理第十六届全国大学智能车竞赛比赛数据
  3. java 图像膨胀与腐蚀程序_膨胀和腐蚀 - 解决图像缺陷问题
  4. Docker 简介以及构架剖析
  5. python打地鼠游戏代码100行_PythonStudy_打地鼠游戏代码
  6. Document for the hackthon
  7. CodeForces - 1220E Tourism(边双缩点+树形dp)
  8. sublime3运行python_sublime中按ctrl+B调用python3运行
  9. KubeSphere配置集(ConfigMap)的使用
  10. 分享一篇获取键盘数值的js(限制在IE浏览器)
  11. 计算机网络基础知识点
  12. hbase二级索引解决方案
  13. 钓鱼网站制作 ---- Setoolkit 克隆web页面钓鱼
  14. Codeforces GYM 100962J: Jimi Hendrix 题解
  15. 别让你的mongodb宕机了
  16. docker基础(11):自定义tomcat镜像启动与访问
  17. PHP7 Windows10环境搭建
  18. 2022年阿里全球数学竞赛中的集福活动(附代码解答)
  19. 紫外线传感器用于天然气燃烧火焰探测
  20. python hydra库

热门文章

  1. Linux gcc getcwd()的实现 zhuan
  2. js原生DOM属性值查找 getAttribute,设置setAttribute,移除removeAttribute
  3. 单词快速记忆 day7
  4. C语言中变量存储类别——自动变量,寄存器变量,静态外部链接;
  5. 【嵌入式】STM32/μVision中的报错问题及解决办法
  6. 【flutter 溢出BUG】right overflowed by 14 pixels
  7. SJCAM发力CES展 推出可触摸屏4K运动相机
  8. IDEA快速创建module模块
  9. 有关c语言的课程的评价,C语言程序设计精品课程建设与评价研究.doc
  10. matlab 双边带幅度调制,幅度调制(AM调制、DSB(双边带)调制、SSB、VSB)