需求分析和概念原型
前言:
本篇博客主要对软件工程课上所学“从需求分析到软件设计”相关知识,结合工程实践项目,对其进行用例建模和业务领域建模,以及数据建模,最终形成概念原型及其工作过程。
一 需求分析
二 项目介绍
我的工程选题是设计一个高并发的秒杀系统。该系统主要是针对库存来设计的系统,用户在规定时间内可以对商品进行抢购,同时系统要防止出现超卖和少卖等情况的出现。系统的主要功能就是记录用户购买的明细和对库存及时响应做到减库存等,实现大流量下的高并发场景。
系统的大体业务流程如下:

•第一步,从需求表述中找出用例,往往是动名词短语表示的抽象用例;
•第二步,描述用例开始和结束的状态,用TUCBW和TUCEW表示的高层用例;
•第三步,对用例按照子系统或不同的方面进行分类,描述用例与用例、用例与参与者之间的上下文关系,并画出用例图;
•第四步,进一步逐一分析用例与参与者的详细交互过程,完成一个两列的表格将参与者和待开发软件系统之间从用例开始到用例结束的所有交互步骤都列举出来扩展用例。
•其中第一步到第三步是计划阶段,第四步是增量实现阶段。
4.准确提取用例的基本方法
•第一步,从需求中寻找业务领域相关的动名词和动名词短语,比如做什么事、什么事情必须被完成,或者执行某任务等;
•第二步,验证这些业务领域相关的动名词和动名词短语到底是不是用例。验证业务领域相关的动名词或动名词短语是不是用例的标准是满足四个必要条件:
• 必要条件一:它是不是一个业务过程
• 必要条件二:它是不是由某个参与者触发开始
• 必要条件三:它是不是显式地或隐式地终止于某个参与者
• 必要条件四:它是不是为某个参与者完成了有用的业务工作
如果以上四个必要条件都满足的话,那么该业务领域相关的动名词或动名词短语就是一个用例。
5.用例建模实践
秒杀系统中主要有两个角色:商家seller和购买用户user。因此需要对商家和购买用户分别进行用例建模。
商家seller用例图如下:

买家用户user用例图如下:

四 业务领域建模
1.业务领域建模的基本步骤
- 第一步,收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料(用例建模仅仅考虑功能需求);
- 第二步,头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
- 第三步,给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系。
- 第四步,将结果用 UML 类图画出来。
2.对选题进行业务领域建模
系统中业务领域的信息有:
- 购买用户登陆注册进入系统后,查看感兴趣的秒杀活动商品,在有库存时可以进行抢购下单。
- 商家对秒杀活动进行管理,对数据库中的商品管理,对订单信息进行管理等操作
包含的类和属性有:
- 用户:用户id,账号,密码,邮箱,电话,地址信息等
- 商家:商家id,商家名称,商品数量,商品价格等
- 秒杀商品:商品id,秒杀价格,库存数量,秒杀开始时间,秒杀结束时间
- 订单信息:用户id,商品id,收获地址id,商品数量,商品单价,订单创建时间,支付时间
关系:
商家发布秒杀活动和商品信息,用户登录系统后选择商品进行下单购买,创建出订单信息,数据库进行相关商品的减库存操作。
3.UML类图

五 数据建模
1.概念数据模型
概念数据模型(Conceptual Data Model),简称概念模型,是面向数据库设计的现实世界的模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据库管理系统(Database Management System,简称DBMS)无关。
2. E-R图表示概念数据模型
系统的E-R图如下:

3.物理数据模型
在数据库中进行相关表的设计,对概念模型进行具体实现和表示。
系统中相关的数据表如下所示:

user:买家用户表

属性说明:
| uid | username | password | phone | address | |
| 用户id | 用户名 | 密码 | 邮箱 | 电话 | 地址信息 |
sellers:商家信息表

属性说明:
| seller_id | seller_name | count | price |
| 商家id | 商家名称 | 库存数量 | 价格 |
product:商品信息表

| id | goods_id | miaosha_price | stock_count | start_date | end_date |
| 商家id | 商品id | 秒杀价格 | 库存数量 | 秒杀开始时间 | 秒杀结束时间 |
orderitem:订单信息表

| item_id | user_id | goods_id | goods_count | goods_price | create_time | pay_date |
| 订单id | 用户id | 商品id | 数量 | 单价 | 订单创建时间 | 支付时间 |
miaosha_order:秒杀订单表

| id | user_id | order_id | goods_id |
| 秒杀订单id | 用户id | 订单id | 商品id |
六 概念原型
1.什么是概念原型
概念原型是一种虚拟的、理想化的软件产品形式。
概念原型 = 用例 + 数据模型
2.概念模型工作过程
在本实践项目中,有买家用户user用例和商家seller用例;数据模型有:买家用户表、商家信息表、商品信息表、订单信息表和秒杀订单表。因此,概念模型的工作过程可以概括为如下:
商家创建秒杀活动信息,对相关商品设置秒杀开始结束时间和秒杀价格以及商品数量;用户需要注册登录系统后,再对感兴趣的秒杀商品进行查看信息,如果还有库存的情况下,用户可以对商品进行抢购,同时数据库中的相关商品库存会做出及时的改变。用户创建订单后,需要在规定的时间内进行付款操作,否则,库存中的商品会还原对应的数量。用户付款后,商家会核实订单信息,然后将商品发货给用户。
七 总结
以上对秒杀系统根据需求分析,进行了初步的用例建模和业务领域建模,以及数据建模,最终形成概念原型及其工作过程,对项目整体有了很好的理解和抽象,为接下来设计项目的实现提供了基础。学习到了软件工程中从需求到软件设计的整个过程和方法,并应用于实践中,加深了对概念的理解。
参考: https://gitee.com/mengning997/se/tree/master/ppt
end~
浙公网安备 33010602011771号