# 模块化网店应用的需求规范

从零开始构建一个软件应用程序需要多种技能，因为它不仅仅是写下代码。写下功能需求和勾画线框通常是这个过程中的第一步，特别是当我们正在为客户项目工作时。这些步骤通常是由开发人员以外的人完成的，因为它们需要对客户的商业案例、用户行为等有一定的洞察力。作为一个较大的开发团队的一部分，意味着我们作为开发人员，通常会得到需求、设计和线框，然后根据它们开始编码。自己交付项目，使得我们很想跳过这些步骤，独自开始动手写代码。更多的时候，这是一种没有成效的做法。放下功能需求和几个线框是一个值得了解和遵循的技能，即使自己只是一个开发人员。

在本章的后面，我们将介绍一个高级应用需求，以及一个粗略的线框。

在本章中，我们将涉及以下主题：

* 确定应用需求&#x20;
* 线框设计&#x20;
* 定义技术栈
  * Symfony 框架&#x20;
  * Foundation 框架

## 确定应用需求&#x20;

我们需要建立一个简单的，但响应的网店应用程序。为了做到这一点，我们需要列出一些基本需求。目前我们感兴趣的需求类型是那些触及用户和系统之间的交互的需求。在用户使用方面，指定需求的两种最常见的技术是用例和用户故事。用户故事是一种不那么正式但足够描述性的方式来概述这些需求。使用用户故事，我们封装了这里提到的客户和店长的行动。

客户应该能够做到以下几点：

* 浏览静态信息页面（关于我们，客户服务）
* &#x20;通过联系表格与店主取得联系&#x20;
* 浏览店铺类别&#x20;
* 查看产品详情（价格、说明）&#x20;
* 查看产品图片的大视图（放大）
* 查看正在销售的商品&#x20;
* 查看畅销产品&#x20;
* 将产品添加到购物车中&#x20;
* 创建一个客户账户&#x20;
* 更新客户账户信息&#x20;
* 找回丢失的密码&#x20;
* 结账&#x20;
* 查看订单总成本&#x20;
* 在几种付款方式中选择&#x20;
* 在几种运输方式中选择&#x20;
* 下单后收到电子邮件通知&#x20;
* 检查订单状态&#x20;
* 取消订单&#x20;
* 查看订单历史

一个店长应该能够做到以下几点：

* 创建一个产品（至少有以下属性：标题、价格、sku、url-key、描述、数量、类别和图片）
* 上传产品图片&#x20;
* 更新和删除产品&#x20;
* 创建一个类别（至少有以下属性：标题、url-key、描述和图片）
* 上传图片到一个类别&#x20;
* 更新和删除一个类别&#x20;
* 如果有新的销售订单被创建，会收到通知
* 如果有新的销售订单被取消，会收到通知
* 按状态查看现有销售订单&#x20;
* 更新订单状态&#x20;
* 停用客户账户&#x20;
* 删除客户账户

用户故事是记录应用程序需求的便捷高级方法。作为一种敏捷的开发模式，尤其有用。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ganymedenil.gitbook.io/php-7/mo-kuai-san/mo-kuai-hua-wang-dian-ying-yong-de-xu-qiu-gui-fan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
