Software prototyping: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Add: s2cid. | Use this bot. Report bugs. | Suggested by Abductive | #UCB_toolbar
m Reverted 1 edit by 2400:9800:6E1:CD7C:1:0:2C41:A7F8 (talk) to last revision by KH-1
 
(15 intermediate revisions by 14 users not shown)
Line 15:
The practice of prototyping is one of the points [[Frederick P. Brooks]] makes in his 1975 book ''[[The Mythical Man-Month]]'' and his 10-year anniversary article "[[No Silver Bullet]]".
 
An early example of large-scale software prototyping was the implementation of NYU's Ada/ED translator for the [[Ada (programming language)|Ada programming language]].<ref>{{cite journal |title=The NYU Ada Translator and Interpreterbook |first1=Robert B. K. |last1=Dewar |first2=Gerald A. |last2=Fisher Jr. |first3=Edmond |last3=Schonberg |first4=Robert |last4=Froelich |first5=Stephen |last5=Bryant |first6=Clinton F. |last6=Goss |first7=Michael |last7=Burke |journaltitle=ACMProceeding of the ACM-SIGPLAN Noticessymposium on ProceedingsAda ofprogramming thelanguage ACM- SIGPLAN Symposium'80 on|chapter=The theNYU Ada Programmingtranslator and Languageinterpreter |volume=15 |issue=11 |pages=194–201 |date=November 1980 |isbn=0-89791-030-3 |doi=10.1145/948632.948659|s2cid=10586359 }}</ref> It was implemented in [[SETL]] with the intent of producing an executable semantic model for the Ada language, emphasizing clarity of design and user interface over speed and efficiency. The NYU Ada/ED system was the first validated Ada implementation, certified on April 11, 1983.<ref>{{cite web |url=http://oai.dtic.mil/oai/oai?verb=getRecord&metadataPrefix=html&identifier=ADA136759 |title=Ada Compiler Validation Summary Report: NYU Ada/ED, Version 19.7 V-001 |author=SofTech Inc. |date=1983-04-11 |access-date=2010-12-16 |archive-date=2012-03-12 |archive-url=https://web.archive.org/web/20120312080046/http://oai.dtic.mil/oai/oai?verb=getRecord&metadataPrefix=html&identifier=ADA136759 |url-status=dead }}</ref>
 
==Outline==
Line 23:
#:Determine basic requirements including the input and output information desired. Details, such as security, can typically be ignored.
# Develop initial prototype
#:The initial prototype is developed that includes only user interfaces. (See [[#Horizontal Prototypeprototype|Horizontal Prototype]], below)
# Review
#:The customers, including end-users, examine the prototype and provide feedback on potential additions or changes.
Line 102:
'''Reduced time and costs''': Prototyping can improve the quality of requirements and specifications provided to developers. Because changes cost exponentially more to implement as they are detected later in development, the early determination of ''what the user really wants'' can result in faster and less expensive software.<ref name=Overmyer/>
 
'''Improved and increased user involvement''': Prototyping requires user involvement and allows them to see and interact with a prototype allowing them to provide better and more complete feedback and specifications.<ref name=Crinnion1991p18/> The presence of the prototype being examined by the user prevents many misunderstandings and miscommunications that occur when each side believe the other understands what they said. Since users know the [[___domain (software engineering)|problem ___domain]] better than anyone on the development team does, increased interaction can result in a final product that has greater tangible and intangible quality. The final product is more likely to satisfy the user's desire for look, feel and performance.
 
==Disadvantages==
Line 196:
 
===Screen generators, design tools, and software factories===
[[Screen generator|Screen generating programs]] are also commonly used and they enable prototypers to show user's systems that do not function, but show what the screens may look like. Developing [[Human–computer interaction|Human Computer Interfaces]] can sometimes be the critical part of the development effort, since to the users the interface essentially is the system.
 
[[Software factory|Software factories]] can generate code by combining ready-to-use modular components. This makes them ideal for prototyping applications, since this approach can quickly deliver programs with the desired behaviour, with a minimal amount of manual coding.
Line 208:
 
===Requirements Engineering Environment===
"The Requirements Engineering Environment (REE), under development at [[Rome Laboratory]] since 1985, provides an integrated toolset for rapidly representing, building, and executing models of critical aspects of complex systems."<ref name="AcostaBurnsRzepkaSidoran1994">Dr. Ramon Acosta, Carla Burns, William Rzepka, and James Sidoran. Applying Rapid Prototyping Techniques in the Requirements Engineering Environment. IEEE, 1994. [https://web.archive.org/web/19990421115836/http://www.stsc.hill.af.mil/CrossTalk/1994/oct/xt94d10g.html]</ref>
 
Requirements Engineering Environment is currently used by the United States Air Force to develop systems. It is:
Line 227:
 
===PSDL===
PSDL is a prototype description language to describe real-time software.<ref>{{cite journal|last=Luqi|author2=Berzins, Yeh |title=A Prototyping Language for Real-Time Software|journal=IEEE Transactions on Software Engineering|date=October 1988|volume=14|issue=10|pages=1409–1423|doi=10.1109/32.6186|hdl=10945/39162 |s2cid=35348234 |url=https://calhoun.nps.edu/bitstream/10945/39162/1/inc_Luqi_a_prototyping_1988.pdf}}</ref>
The associated tool set is CAPS (Computer Aided Prototyping System).<ref>{{cite journal|last=Luqi|author2=Ketabchi |title=A Computer-Aided Prototyping System|journal=IEEE Software|date=March 1988|volume=5|issue=2|pages=66–72|doi=10.1109/52.2013|hdl=10945/43616 |s2cid=15541544 |hdl-access=free}}</ref>
Prototyping software systems with hard real-time requirements is challenging because timing constraints introduce implementation and hardware dependencies.
PSDL addresses these issues by introducing control abstractions that include declarative timing constraints. CAPS uses this information to automatically generate code and associated real-time schedules, monitor timing constraints during prototype execution, and simulate execution in proportional real time relative to a set of parameterized hardware models. It also provides default assumptions that enable execution of incomplete prototype descriptions, integrates prototype construction with a software reuse repository for rapidly realizing efficient implementations, and provides support for rapid evolution of requirements and designs.<ref>{{cite journal|last=Luqi|title=Software Evolution through Rapid Prototyping|journal=IEEE Computer|date=May 1989|volume=22|issue=5|pages=13–25|doi=10.1109/2.27953|hdl=10945/43610|s2cid=1809234|url=https://zenodo.org/record/1232144|hdl-access=free}}</ref>
 
==References==