A paradox of requirements specifications as dominantly practiced in the industry is that they often claim to be object-oriented (OO) but largely rely on procedural (non-OO) techniques. Use cases and user stories describe functional flows, not object types. To gain the benefits provided by object technology (such as extendibility, reusability, reliability), requirements should instead take advantage of the same data abstraction concepts -- classes, inheritance, information hiding -- as OO design and OO programs. Many people find use cases and user stories appealing because of the simplicity and practicality of the concepts. Can we reconcile requirements with object-oriented principles and get the best of both worlds? This article proposes a unified framework. It shows that the concept of class is general enough to describe not only "objects" in a narrow sense but also scenarios such as use cases and user stories and other important artifacts such as test cases and oracles. Having a single framework opens the way to requirements that enjoy the benefits of both approaches: like use cases and user stories, they reflect the practical views of stakeholders; like object-oriented requirements, they lend themselves to evolution and reuse.
翻译:行业内主要采用的要求规格的一个自相矛盾之处是,这些规格往往声称是面向目标的(OO),但主要依赖程序(非OO)技术。使用案例和用户故事描述功能流动,而不是对象类型。为了获得物体技术(如扩展性、可重复性、可靠性)提供的好处,要求应该利用相同的数据抽象概念 -- -- 类别、继承、信息隐藏 -- -- 作为OO设计和O方案。许多人发现使用案例和用户故事由于概念的简单性和实用性而具有吸引力。我们能否将要求与面向目标的原则相调和,并获得两个世界的最好之处?本条提议了一个统一框架。它表明,类的概念很笼统,不仅在狭义上描述“目标”,而且描述诸如使用案例和用户故事以及试验案例和神器等其他重要文物等情景。如果有一个单一的框架,就可以满足既享受两种方法好处的要求:如使用案例和用户故事,它们反映利益有关者的实际观点;例如面向目标的要求,它们本身也有利于演变和再利用。