Programming a Software Requirements-Specification Process

S. Sutton, H. Ziv, D. Heimbigner, H. Yessayan, M. Maybee, L. J. Osterweil, Xiping Song
{"title":"Programming a Software Requirements-Specification Process","authors":"S. Sutton, H. Ziv, D. Heimbigner, H. Yessayan, M. Maybee, L. J. Osterweil, Xiping Song","doi":"10.1109/ICSP.1991.664341","DOIUrl":null,"url":null,"abstract":"Software-process programming is a comparatively new approach to the speci cation of software processes. It has attracted widespread interest but has not yet received general acceptance. For process programming to be accepted the issues involved must be better understood and its feasibility must be demonstrated. To these ends we have undertaken the development of REBUS, a prototype process program for the speci cation of software requirements. Through the development of REBUS we hoped to acquire knowledge about basic issues in process programming. In the REBUS program we hoped to o er an example of a plausible process program. In this introduction we review the advantages of process programming and argue that prototyping is an appropriate way to advance the state of the art; in the remainder of the paper we report on REBUS. A software-process program is the encoding of a software process in a formal, process-programming language [Ost87]. Software-process programming is the activity of developing software-process programs from requirements, through design, to code, followed by testing, analysis, use, and maintenance. Process programming is thus modeled after conventional programming. Processprogramming languages (i.e. process coding languages) are analogous to conventional programming languages, and process programs are analogous to conventional application programs. The di erence is that processprogramming languages and process programs apply to the domain of software processes and products. Software processes present new and challenging aspects not found in most conventional applications, for example, the need to accommodate both manual and automated activities and the need to manage highly complex, diverse, and interrelated persistent objects. The goal of process programming is to bring increased rigor and consistency to the representation and application of software development methodologies. Software development methodologies are intended to improve software development by specifying the products to be created, describing the activities to be performed, and guiding the execution of these activities and the use of the products. Examples include the Waterfall model [Roy70], Spiral model [Boe88], Jackson System Development [Jac83, Cam86], Booch Object-Oriented Design [Boo83, Boo86], Structured Analysis and Modeling [RJ77, GS86, BBD77, EFRV86], and Structured Design [Mye78, Ber78]. Several problems prevent current software methodologies from being fully and generally successful. The speci cations of software processes and products are too often semi-formal or informal (if speci ed at all), the processes rely on manual interpretation and control, and the products may be managed and accessed haphazardly. A process may not be clearly understood, and to the extent that it is understood it may be di cult to modify e ectively. Consequently, software processes are often executed uncertainly and inconsistently, and software products are more likely to be incomplete, invalid, or incorrect. The potential advantages of process programming derive from the formality of process-programming languages and process programs. Process-programming languages are de ned by formal syntax and precise semantics; process programs are thus amenable to analysis and veri cation and should facilitate communication and education. Process programs are also potentially machine-executable. This would enable them to be executed in a consistent way, and allow them to be e ectively tested, debugged, and reused. Finally, it may be possible to apply conventional tools and techniques to","PeriodicalId":309190,"journal":{"name":"Proceedings. First International Conference on the Software Process,","volume":"36 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1991-10-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"35","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings. First International Conference on the Software Process,","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/ICSP.1991.664341","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 35

Abstract

Software-process programming is a comparatively new approach to the speci cation of software processes. It has attracted widespread interest but has not yet received general acceptance. For process programming to be accepted the issues involved must be better understood and its feasibility must be demonstrated. To these ends we have undertaken the development of REBUS, a prototype process program for the speci cation of software requirements. Through the development of REBUS we hoped to acquire knowledge about basic issues in process programming. In the REBUS program we hoped to o er an example of a plausible process program. In this introduction we review the advantages of process programming and argue that prototyping is an appropriate way to advance the state of the art; in the remainder of the paper we report on REBUS. A software-process program is the encoding of a software process in a formal, process-programming language [Ost87]. Software-process programming is the activity of developing software-process programs from requirements, through design, to code, followed by testing, analysis, use, and maintenance. Process programming is thus modeled after conventional programming. Processprogramming languages (i.e. process coding languages) are analogous to conventional programming languages, and process programs are analogous to conventional application programs. The di erence is that processprogramming languages and process programs apply to the domain of software processes and products. Software processes present new and challenging aspects not found in most conventional applications, for example, the need to accommodate both manual and automated activities and the need to manage highly complex, diverse, and interrelated persistent objects. The goal of process programming is to bring increased rigor and consistency to the representation and application of software development methodologies. Software development methodologies are intended to improve software development by specifying the products to be created, describing the activities to be performed, and guiding the execution of these activities and the use of the products. Examples include the Waterfall model [Roy70], Spiral model [Boe88], Jackson System Development [Jac83, Cam86], Booch Object-Oriented Design [Boo83, Boo86], Structured Analysis and Modeling [RJ77, GS86, BBD77, EFRV86], and Structured Design [Mye78, Ber78]. Several problems prevent current software methodologies from being fully and generally successful. The speci cations of software processes and products are too often semi-formal or informal (if speci ed at all), the processes rely on manual interpretation and control, and the products may be managed and accessed haphazardly. A process may not be clearly understood, and to the extent that it is understood it may be di cult to modify e ectively. Consequently, software processes are often executed uncertainly and inconsistently, and software products are more likely to be incomplete, invalid, or incorrect. The potential advantages of process programming derive from the formality of process-programming languages and process programs. Process-programming languages are de ned by formal syntax and precise semantics; process programs are thus amenable to analysis and veri cation and should facilitate communication and education. Process programs are also potentially machine-executable. This would enable them to be executed in a consistent way, and allow them to be e ectively tested, debugged, and reused. Finally, it may be possible to apply conventional tools and techniques to
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
编写软件需求规范过程
软件过程编程是一种相对较新的软件过程规范方法。它引起了广泛的兴趣,但尚未得到普遍接受。为了使过程规划被接受,必须更好地理解所涉及的问题,并且必须证明其可行性。为了达到这些目的,我们开发了REBUS,这是一个用于说明软件需求的原型过程程序。通过开发REBUS,我们希望了解过程编程的基本问题。在REBUS程序中,我们希望提供一个合理的过程程序的例子。在这篇引言中,我们回顾了过程编程的优点,并认为原型是一种适当的方式来推进艺术的状态;在本文的其余部分,我们将报道REBUS。软件过程程序是用正式的过程编程语言对软件过程进行编码[Ost87]。软件过程编程是开发软件过程程序的活动,从需求、设计到编码,然后是测试、分析、使用和维护。因此,过程编程是在传统编程之后建模的。过程编程语言(即过程编码语言)类似于传统的编程语言,过程程序类似于传统的应用程序。不同之处在于过程编程语言和过程程序应用于软件过程和产品领域。软件过程呈现了在大多数传统应用程序中没有的新的和具有挑战性的方面,例如,需要适应手动和自动活动,需要管理高度复杂、多样和相互关联的持久对象。过程编程的目标是增加软件开发方法的表示和应用的严谨性和一致性。软件开发方法旨在通过指定要创建的产品,描述要执行的活动,并指导这些活动的执行和产品的使用来改进软件开发。例子包括瀑布模型[Roy70],螺旋模型[Boe88],杰克逊系统开发[Jac83, Cam86], Booch面向对象设计[Boo83, Boo86],结构化分析和建模[RJ77, GS86, BBD77, EFRV86]和结构化设计[Mye78, Ber78]。有几个问题阻碍了当前软件方法的全面和普遍成功。软件过程和产品的规范常常是半正式或非正式的(如果有的话),过程依赖于人工解释和控制,并且产品可能是随意管理和访问的。一个过程可能没有被清楚地理解,并且在理解的程度上,它可能无法有效地修改。因此,软件过程的执行常常是不确定的和不一致的,软件产品更有可能是不完整的、无效的或不正确的。过程编程的潜在优势源于过程编程语言和过程程序的形式化。过程编程语言是由形式化语法和精确语义构成的;因此,过程程序易于分析和验证,并应促进沟通和教育。进程程序也可能是机器可执行的。这将使它们能够以一致的方式执行,并允许对它们进行有效的测试、调试和重用。最后,有可能将传统的工具和技术应用于
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
A Support to Large Software Development Process Software Process Modeling Support for Management Planning and Control Meta-Operations in the Process Model Hfsp for the Dynamics and Flexibility of Software Processes Defining a Corporate-Wide Software Process Extending a Tool Integration Language
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1