如何快速确认 function and non-functional requirement

大家好,我最近在准备系统面试。
发现自己的一个缺点就是花费很长时间确认 functional/non-functional requirement。

比如上周面试就碰到一个问题:给一个卖票网站设计一个系统使得所有的实体卖票点都能够共享所有的卖票信息。

我从来都没有见过这个题目所以根本不知道题目的设计重点在哪里。请问大家都是怎么在 3min + 3min钟的情况下快速把 functional/non-functional requirement确认下来的呢?

1 个赞

功能性需求:确认你的系统需要实现哪些功能。比如,这个卖票网站卖的是什么样的票?电影票?还是演唱会的票?是线下卖票还是线上线下都有?共享卖票信息的目的是什么?每个实体卖票点只卖自己所在区域的票还是能卖所有的票?
非功能性需求:考虑以下的这些要求在这道题里的含义。Scalability, Reliability, Availability, Consistency, Latency, Efficiency.

1 个赞

感谢。
好像有点明白了。功能性更强调What can be done/what needs to be done。
非功能性更能体现怎么做出tradeoff,因为并不是所有的非功能性的要求都可以被同时满足的。根据面试官的偏好,最后选择了哪些非功能性需求是会影响具体的架构设计的。针对这个题目根据业务的特点可能会选择consistency over availability。

scalability的含义: 可能出现同一时间需要售出大量的票。所以需要处理bursting traffic。
reliability的含义:售出的票不能重复, 一个位置只能对应一张票
availability: 这个售票的服务需要能够在线。
consistency: 当票从其中的一个窗口售出之后,另外的窗口需要及时正确反应剩余的票。
latency: 整个服务从接收到request(list, issue_new)到执行完毕需要在大约1s左右完成。
efficiency: ???

你理解得对。Scalability 除了你说的,也包括允许大量的人同时浏览卖票网站。