Java系统分析与架构设计

Java系统分析与架构设计"

作者:肖海鹏王荣芝张天怡王化宇周洪翠
ISBN:9787302614142
定价:¥79
字数:千字
页数:
出版时间:2023.01.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

《Java系统分析与架构设计》面向软件工程项目实战,内容按照软件项目的生命周期展开,分别为软件项目需求分析、软件项目架构设计(开发架构模式为主)、软件项目模块设计、软件项目的持久层设计(关系型物理表设计、Redis设计、MongoDB设计)、软件项目的部署等。

  《Java系统分析与架构设计》共7章,第1章以大型企业项目“中国石油物资采购管理信息系统”为例,详细讲解需求分析技术,如流程图分解、UML用例图设计、UML状态图设计、概念模型分析等;第2章为“软件架构设计”,讲解架构设计五视图、Java EE架构模式、微服务架构模式、Dubbo 3架构模式、MOM架构模式等内容,同时结合大型分布式项目“电影院综合票务管理平台”进行详细的架构设计示范;第3章为“项目模块设计”,讲解UML类图、UML时序图设计方法,同时结合项目“新闻系统”与“物流管理系统”进行模块设计的项目实战示范;第4章为“持久层物理表设计”,讲解“三范式与反范式”设计方法,并总结13个真实企业级软件项目,进行物理表设计示范;第5章为“持久层Redis数据库设计”,结合“当当书城”项目进行Redis项目实战示范;第6章为“持久层MongoDB数据库设计”,结合“新浪微博”系统,进行MongoDB项目实战示范;第7章为“项目部署”,讲解了Nginx反向代理、Docker虚拟化部署以及Web服务器集群、MySQL集群部署、Redis集群部署、MongoDB集群部署。

  《Java系统分析与架构设计》提供大量项目实战代码示例,具体程序代码见本书配套资源,获取方式见前言。

  《Java系统分析与架构设计》适合作为高等院校计算机、软件工程专业高年级本科生、研究生的教材,也可供有一定编程经验的软件开发人员、广大科技工作者和研究人员参考使用。

前言

  

  

  

  

  

  

  

  

  Java软件项目基本有如下几种类型:大中型电子商务网站、大中型企业项目、政府项     目、移动客户端项目等。

  可以重复使用的软件项目会成为产品,如SAP、用友、金蝶的ERP企业资源管理系统等。产品的开发因为要面向的用户面宽、需求变化大,因此应该具有更好的可扩展性。

  企业和政府的软件项目开发基本流程如下:立项、项目招标、软件需求分析、软件架构设计、项目模块详细设计、软件测试、项目部署等。由于项目规模和项目管理者不同,项目流程中的个别环节会有差异,如有些项目无须招标、有些项目没有架构设计等。

  Java软件项目基本都是团队开发,为了协同项目组成员之间的代码共享,需要使用软件版本管理工具,如CVS、SVN、ClearCase、Git等。由于Git的提交代码在公网服务器上,便于异地办公的团队共享,因此目前最为流行。为了协同项目组成员之间的资源共享,需要使用maven等工具。

  本书介绍的项目案例,以企业项目为主,部分为电子商务和电子政务项目,后面会按照如图1所示的一个完整软件项目周期(立项→业务需求→软件需求分析→架构设计→模块设计→代码开发→软件测试→项目部署→系统维护),详细讲解软件项目的系统分析与架构设计技术。

     

图1  软件项目周期

   【内容特色】

  1. 案例生动易懂,读者容易入门

  国内外关于软件工程的图书基本都是围绕UML和设计理论展开的,结合具体的真实企业级软件项目,既讲解设计方法,又讲解设计经验的图书极少。本书结合了17个真实企业项目,抽取每个项目的设计精华部分,采用言简意赅的描述,可以使读者在短时间内快速提升软件项目的系统分析与架构设计能力。

  2. 原理透彻,注重应用

  本书对软件项目开发步骤与流程的相关理论分门别类、层层递进地进行了详细的叙述和透彻的分析,既体现了各知识点之间的联系,又兼顾了其渐进性。本书在介绍每个知识点时都给出了该知识点的应用场景,同时配合源代码进行分析。本书真正体现了理论联系实际的理念,使读者能够体会到“学以致用”的乐趣。

   【配套资源】

  本书提供书中涉及的程序代码,可以到清华大学出版社网站本书页面(或关注“人工智能科学与技术”微信公众号,在“知识”→“资源下载”→“配书资源”菜单)下载。

  限于编者的水平和经验,加之时间比较仓促,疏漏或者错误之处在所难免,敬请读者批评指正,有兴趣的朋友可发送邮件进行交流,联系方式见配套资源。

  

        编者    

  2022年9月于北京

II

III

目录

  

  

  

  

  

  

  

  

第1章  软件需求分析技术 1

     

1.1  案例:中国石油物资采购管理信息系统软件需求分析 2

1.1.1  项目概述 2

1.1.2  业务需求概述 7

1.1.3  业务流程分解 11

1.1.4  功能需求描述 16

1.2  业务流程图的重要性 17

1.2.1  基本流程图 17

1.2.2  复杂流程分解 19

1.2.3  角色参与流程 19

1.3  UML与软件需求 20

1.3.1  UML介绍 20

1.3.2  UML用例图 21

1.3.3  UML状态图 24

1.3.4  UML活动图 27

1.4  软件需求概念模型 28

1.4.1  实体与属性 29

1.4.2  实体之间的关系 30

第2章  软件架构设计 32

2.1  架构设计五视图 32

2.2  开发架构模式选择 33

2.3  软件三层架构 34

2.4  MVC架构 38

2.5  AJAX架构 41

2.6  前后台分离架构 43

2.7  Java EE架构 45

2.7.1  Java EE架构介绍 45

2.7.2  创建EJB项目 47

2.7.3  编写EJB服务 47

2.7.4  Web站点调用EJB服务 53

2.8  Web服务架构 54

2.8.1  Web服务与RPC 54

2.8.2  创建Web服务 56

2.8.3  编写Web服务 57

2.8.4  Web站点调用Web服务 58

2.9  微服务架构 59

2.9.1  Spring Cloud Netflix介绍 59

2.9.2  Spring Boot与Spring Cloud 60

2.9.3  注册服务器Eureka 61

2.9.4  服务提供者 63

2.9.5  服务消费者 65

2.9.6  微服务异常传递 68

2.10  Dubbo架构 70

2.10.1  Dubbo 3介绍 71

2.10.2  Dubbo 3新特性 73

2.10.3  Dubbo注册中心 76

2.10.4  Dubbo服务提供者 78

2.10.5  Dubbo服务消费者 80

2.10.6  Dubbo交互协议 83

2.11  MOM架构 85

2.11.1  JMS与MOM 86

2.11.2  ActiveMQ服务器搭建 87

2.11.3  发送点对点消息 88

2.11.4  主动接收点对点消息 90

2.11.5  监听接收点对点消息 91

2.11.6  发送主题消息 93

2.11.7  主动接收主题消息 93

2.11.8  监听接收主题消息 93

2.11.9  多用户同时接收点对点消息 94

2.11.10  多用户同时接收主题消息 95

2.11.11  消息生命期 96

2.11.12  会话与消息确认模式 96

2.11.13  案例:JTA与MOM实现用户异步注册 100

2.12  案例:电影院综合票务管理平台架构设计 105

2.12.1  票务平台业务需求 105

2.12.2  票务平台行业规范 106

2.12.3  票务平台整体架构设计 109

2.12.4  院线票务系统架构设计 110

2.12.5  网络代售系统架构设计 111

2.12.6  院线票务系统与授权管理平台接口设计 112

2.12.7  院线票务系统与影院管理系统接口设计 115

2.12.8  院线票务系统与网络代售系统接口设计 116

2.12.9  院线票务系统消息通知设计 122

2.12.10  自动取票接口设计 123

第3章  项目模块设计 124

3.1  UML与逻辑设计 124

3.1.1  UML类图 124

3.1.2  UML时序图 130

3.1.3  UML协作图 131

3.2  新闻系统模块设计 132

3.2.1  新闻系统功能描述 132

3.2.2  新闻系统开发架构 133

3.2.3  新闻系统主页设计 133

3.2.4  新闻列表页设计 136

3.2.5  新闻页设计 139

3.2.6  新闻评论页设计 141

3.2.7  新闻发布设计 143

3.3  物流管理系统模块设计 145

3.3.1  物流管理系统需求分析 145

3.3.2  物流管理系统模块设计 148

第4章  持久层物理表设计 155

4.1  持久层设计原则 156

4.1.1  三范式原则 156

4.1.2  反范式原则 158

4.1.3  BASE与ACID原则 160

4.1.4  事务隔离级别 162

4.1.5  CAP原则 164

4.1.6  内存一致性 165

4.2  PowerDesigner与物理模型 165

4.2.1  PowerDesigner功能介绍 166

4.2.2  PowerDesigner概念数据建模 167

4.2.3  PowerDesigner逻辑数据建模 167

4.2.4  PowerDesigner物理数据建模 168

4.3  案例:ERP系统员工与用户表设计 169

4.3.1  项目功能需求 169

4.3.2  物理表设计 170

4.4  案例:业务系统权限表设计 171

4.4.1  简单业务系统的权限表设计 171

4.4.2  中型业务系统的权限表设计 172

4.4.3  Spring Security权限设计 177

4.4.4  大型业务系统的权限设计 181

4.5  案例:学校设备管理系统表设计 184

4.5.1  项目功能需求 184

4.5.2  物理表设计 184

4.5.3  项目核心代码参考 185

4.6  案例:企业会议室预订系统表设计 187

4.6.1  项目功能需求 187

4.6.2  物理表设计 188

4.6.3  项目核心代码参考 190

4.7  案例:网上订餐系统表设计 192

4.7.1  项目功能需求 192

4.7.2  物理表设计 192

4.8  案例:当当书城系统表设计 195

4.8.1  项目功能需求 195

4.8.2  物理表设计 195

4.8.3  项目核心代码参考 198

4.9  案例:户外旅游网系统表设计 201

4.9.1  项目功能需求 201

4.9.2  物理表设计 203

4.9.3  项目核心代码参考 206

4.10  案例:新闻系统表设计 208

4.10.1  项目功能需求 208

4.10.2  物理表设计 208

4.10.3  项目核心代码参考 210

4.11  案例:物流管理系统表设计 210

4.11.1  项目功能需求 210

4.11.2  物理表设计 210

4.12  案例:学生在线考试系统表设计 212

4.12.1  项目需求用例分析 212

4.12.2  项目需求流程分解 213

4.12.3  项目总体设计 214

4.12.4  项目物理表设计 219

4.13  案例:影院管理系统表设计 221

4.13.1  项目需求与设计 221

4.13.2  物理表设计 223

4.13.3  项目核心代码 224

4.14  案例:分布式连锁酒店管理系统表设计 226

4.14.1  项目需求与设计 227

4.14.2  物理表设计 230

4.14.3  项目核心代码 233

4.15  案例:中国石油物资采购管理信息系统表设计 237

4.15.1  项目功能需求与设计 237

4.15.2  物理表设计 240

4.15.3  项目核心代码 244

第5章  持久层Redis数据库设计 247

5.1  Redis功能介绍 247

5.2  Redis应用场景 248

5.3  Redis下载与安装 248

5.4  案例:当当书城Redis实战 250

5.4.1  Jedis连接Redis服务器 250

5.4.2  图书缓存和排序 251

5.4.3  统计图书访问次数 253

5.4.4  图书评论 255

5.4.5  图书评论点赞 257

5.5  Spring整合Redis管理HTTP Session 258

第6章  持久层MongoDB数据库设计 261

6.1  集合与文档 261

6.2  MongoDB应用场景 262

6.3  MongoDB下载与安装 264

6.4  系统数据库与用户库 266

6.5  权限管理 267

6.6  文档的CRUD操作 269

6.7  内嵌文档 270

6.8  索引 272

6.9  查询分析 274

6.10  案例:新浪微博MongoDB实战 276

6.10.1  微博项目分析 276

6.10.2  Java连接MongoDB 278

6.10.3  微博项目代码实现 279

第7章  项目部署 286

7.1  中型项目部署架构 286

7.2  Nginx 287

7.2.1  Nginx介绍 287

7.2.2  Nginx下载与安装 288

7.2.3  Nginx文件服务器配置 289

7.2.4  Nginx反向代理服务器配置 291

7.3  Docker虚拟化 293

7.3.1  Docker容器与镜像 293

7.3.2  Docker下载与安装 294

7.3.3  Docker常用命令 296

7.3.4  Docker搭建Tomcat集群 299

7.3.5  项目部署到Tomcat集群 301

7.3.6  Nginx路由Tomcat集群 302

7.4  MySQL集群部署 302

7.4.1  Master Slave Replication 303

7.4.2  MHA Cluster 304

7.4.3  Galera Cluster(PXC) 305

7.4.4  MGR Cluster 307

7.4.5  NDB Cluster 308

7.5  Redis集群部署 309

7.5.1  Master Slave Replication 309

7.5.2  哨兵模式 309

7.5.3  Redis Cluster 310

7.6  MongoDB集群部署 312

7.6.1  主从集群 312

7.6.2  副本集 312

7.6.3  分片集群 314

IV

V

作者简介

编辑推荐

1. 案例生动易懂,读者容易入门

本书结合了十多个真实企业项目,抽取每个项目的设计精华部分,采用言简意赅的描述,使读者在短时间内快速增长软件项目的系统分析与架构设计能力。

2. 原理透彻,注重应用

按照一个完整的软件项目周期:立项→业务需求→软件需求分析→架构设计→模块设计→代码开发→软件测试→项目部署→系统维护,深入浅出地讲解了需求分析技术、软件开发架构设计、关系型物理表设计、Redis应用实战、MongoDB开发与应用、Web服务器与数据库的集群部署等内容。

本书在介绍每个知识点时都给出了该知识点的应用场景,同时配合源代码分析;真正体现了理论联系实际的理念,使读者能够体会到“学以致用”的乐趣。

作者寄语

电子资料

www.luweidong.cn

下一个