尚未开发软件的人不知道软件开发人员需要知道什么。不能期望他们自己产生需求规范和用例。您需要应用需求启发技术来获取您需要了解的信息。与客户(最好是来自各种角色的用户样本)一起工作,以确定他们需要或想要的东西。常见的技术是访谈和/或用户观察,识别用例和用户案例以及原型。
我强烈建议在这种情况下应用迭代和增量开发技术,因为您的需求含糊,不完整或理解不深。查看用于解决生命周期规划的各种敏捷方法以及螺旋模型。
首先获得驱动该软件开发的业务目标。采访客户和用户,如果可以的话,观看他们的工作情况。尝试确定他们要解决的问题。查看他们当前正在使用哪些工具以及如何使用它们,以便您可以改善他们当前的工作方式。利用此机会学习域及其语言-如果软件开发人员和客户/用户都说相同的语言(并且不希望客户/用户以软件的方式讲),交流将变得更加容易。
一旦了解了目标是什么,就可以开始使用已有的UI设计模型,并根据各种屏幕的组合情况对它们进行“反向工程”用例和用户案例。用户故事格式可能会很好地解决非技术受众。解决方案的格式As a <user type>, I want to <action> so that <reason>
取决于使开发人员和客户/用户说相同的语言。一旦您可以了解用户故事,就可以采用原型开发方法。
我认为我会通过使用原型来解决这个问题。您可以从进化原型或一次性原型的角度来解决这个问题,但是我将首先考虑一种进化原型方法。从您最熟悉并经过验证的用户案例开始,然后开始实施它们。在实施它们时,请从客户那里获得反馈,并开发新的用户案例,用例并解决误解。
另外,不要将其视为“使用具有其下的功能的用户界面”。相反,可以将其视为垂直的薄片。不要一次实现所有用户界面,然后再担心功能。而是使用用户界面模型来标识功能和其他要求,然后实现从UI到业务逻辑和数据存储的垂直切片。对每个垂直切片重复此操作。您还应该根据需求和可用性原则随意提出建议以改进UI。
我建议阅读Karl Wiegers撰写的两本书:“ 软件需求”和“关于软件需求的更多信息”。我认为这些将帮助您解决该领域的需求工程和最佳实践。