我们的客户希望我们构建一个基于网络的富互联网应用程序来收集软件需求。基本上,它是一个基于网络的案例工具,遵循特定的流程来获取利益相关者的需求。我是项目经理,我们仍处于项目的早期阶段。

我一直在考虑使用形式化方法来帮助我的客户和开发人员澄清该工具的要求。我所说的形式化方法是指某种形式的建模,可能是基于数学的建模。我读过并正在考虑的一些事情包括 Z (http://en.wikipedia.org/wiki/Z_notation)、状态机、UML 2.0(可能带有扩展,例如 光学显微镜), 培养皿网, ,以及一些编码级别的东西,例如合同和前置条件和后置条件。还有什么我应该考虑的吗?

开发人员经验丰富,但根据所使用的形式主义,他们可能需要学习一些数学。

我正在尝试确定我是否值得在这个项目上使用正式方法,如果值得的话,值得到什么程度。我知道“这取决于”,所以对我来说最有帮助的答案是是/否和支持论据。

如果您参与这个项目,您会使用正式方法吗?

有帮助吗?

解决方案

  

我一直在考虑使用正规的方法来帮助阐明了我的两个客户端和开发工具的要求。

极少数开发商有正规的方法的经验。我已经看到了正式的训练方法,客户唯一的一次是在ZUG的成员时,我们被移植的的Windows操作系统。

  

通过正规方法我的意思是某种形式的造型,可能是一些数学为主。有些我已经阅读并正在考虑的事情包括Z( http://en.wikipedia.org/维基/ Z_notation ),状态机,UML 2.0(可能具有扩展名,如OCL),Petri网,和一些编码层次的东西等的合同和前,后的条件。还有什么我应该考虑?

有Z之间非常大的差距,这是一个正规的方法,以在其基础集合论,和UML,这与标记上的一些半正式符号(状态机)一非正式的符号。

一些技术的客户,比如你希望找到使用软件需求工具,与UML很舒服。

有可能会创造价值域的Z型,并有可能在创建客户端和服务器(或Petri网之间的消息传递的pi演算模型的价值,但我觉得pi是更简单,更强大)。

你的域的Z型将给是一个实现独立设置的类型约束,表现比任何共同实现语言的类型系统更有力。

你的消息的正式模型会给你是运行分析设施,以确保您不会失去更新或获取冲突或死锁。

什么UML模型给你是用于将大系统分成功能区(包图),显示在这些区域如何类的符号彼此相关静态(类图),表示这些类的如何实例涉及动态(序列,活性和交互图),并且示出包如何部署(组分和部署图)。这些是在团队沟通非常有用,并获得灵感跃然纸上了一下,但没有正式定义的语义,允许非常复杂的分析。

我在90年代工作在Z专家认为Z中荒谬指定CASE GUI的想法。创造这样的GUI UML模型是常见的。

我没有使用正规的设计,由合同签订前和后置条件,虽然我有时在评论添加它们,并经常在断言,我和单元测试条件,可能会违反他们。

其他提示

在真正要问的问题这里就不是否使用与否,而是什么得与失。

请问生产力和结果得不偿失学习所需的复杂性和?

在一般你应该使用什么样的团队是舒服。随着新项目存在将是一个学习曲线,这意味着将要作出有关的过程和错误的问题。您的开发时间表的一部分将被用来纠正这些问题,如果你不打算使用它们与这个团队的未来,真的,你不会有通过引入一些新的长期收益。变化过程需要很长的时间和大量的工作。

如果你估计足够的时间来处理这些问题,你可能是好的.....如果你的估计是正确的。考虑到你还没有与这些人的工作(至少那是什么您的帖子听起来像),那么你的时间表是不会那样准确,因为它应该这意味着你可能没有分配足够的时间来完成这个项目更不用说引入一个新的进程。

你必须问你自己的另一个问题是“怎么舒服你想要实现的过程是你吗?”我从来没有试图在一个项目上引进一个新的进程,除非我知道我可以拉队通过它,如果我不得不这样做。从时间尝试新事物时是好的,但是你需要有一个团队,你是舒服知道如何导航出的紧张局面。

我一直在研究几种“轻量级”形式化方法,适用于可能是关键任务但不是生命/安全关键的应用程序。一些想法:

有使用ACSL(ANSI C规范语言)的一些成功的例子,其具有成熟的工具集其中大部分是开放源码如为什么平台,邮资-C。对于Java类似的技术称为JML(Java的建模语言)。我认为无论是用于小型到中型项目的嵌入式应用,他们帮助一些保障添加到您的代码,但不是针对验证规范。 Z是绝对不人性化,缺乏足够的工具支持恕我直言。

其中,可以在规范阶段使用我会研究了基于B-方法罗丹平台商业工具。

在这里游戏后期,但你可能会考虑像检验的架构,通过萨瓦拉中,我们使用许多项目其中存在组件之间的通信或交互的优势。这是最常见于任何SOA后端到web前端。

据正式pi演算接地,你并不需要了解pi演算来使用它。

我和汤姆完全同意,并问同样的问题,

请问生产力和结果得不偿失学习所需的复杂性和?

在我,除非系统的意见/软件可以被认定为“安全关键”形式化方法是不必要的。

什么安全关键均值:

当一个计算机系统的故障可能导致灾难性的后果,如人类生命的损失,对环境的破坏,或损坏系统本身,这样的系统被称为“安全关键”。

我同意汤姆和Abufardeh - 生产率和结果将得不偿失的复杂性和学习需要。

此外,对于获取开发前的各项要求,该收作方法初探更好(AMD确保这些要求都被明确定义和可测试)?让所有的质量要求第一好像常识,但节目有很大比例在平行思维做的事情是没有问题后得到一些要求。要求蠕变是一场噩梦!电影“五角大楼战争”是一个大开眼界人谁不同意。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top