Algebraic Specification: Difference between revisions

From Cibernética Americana
Jump to navigationJump to search
No edit summary
 
(42 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''Algebraic specification'''
{{TOCleft}}
<ref>{{cite book|title=Algebraic Specification|first=J. A.|last=Bergstra|coauthors=B. Mahr|publisher=Academic Press|date=1989|isbn=0-201-41635-2}}</ref><ref>{{cite book|title=Algebraic Specification|first=E.|last=Ehrig|coauthors=J. Heering, J. Klint|publisher=Springer-Vrlag|date=1985|series=EATCS Monographs on Theoretical Computer Science|volume=6}}</ref>
[[:en:Algebraic specification]]
<ref>{{cite book|title=Algebraic Specification|first=M.|last=Wirsing|series=Handbook of Theoretical Computer Science|volume=B|editor=J. van Leeuwen (ed.)|date=1990|publisher=Elsevier|pages=675–788}}</ref>
is a specific approach to formal specification of computer programs.
== Goals ==
The purposes of an algebraic specification are to:


# represent applications and their subparts as mathematical objects and functions applicable to same
== Overview ==
# abstract from implementation details irrelevant to the mathematics of the application
# formalizing computations for specific data models
# provide opportunities for automation due to a now explicit rule base embodied in the theory which the specification embodies


==Implementation==
'''Algebraic specification''' <ref name="BHK">{{cite book|title=Algebraic Specification|first=J. A.|last=Bergstra|coauthors=B. Mahr|publisher=Academic Press|date=1989|isbn=0-201-41635-2}}</ref><ref>{{cite book|title=Algebraic Specification|first=E.|last=Ehrig|coauthors=J. Heering, J. Klint|publisher=Springer-Vrlag|date=1985|series=EATCS Monographs on Theoretical Computer Science|volume=6}}</ref><ref>{{cite book|title=Algebraic Specification|first=M.|last=Wirsing|series=Handbook of Theoretical Computer Science|volume=B|editor=J. van Leeuwen (ed.)|date=1990|publisher=Elsevier|pages=675–788}}</ref> is a specific approach to the formal specification, prototyping, and general development of computer programs.


An algebraic specification achieves these goals by means of defining a number of sorts (data types) together
Algebraic modeling of systems is the basic methodology of '''ai-integration.biz''' with antecedents in '''Langefors (TAIS)''' and the '''[[:en:Burroughs large systems|Burroughs Large Systems]]'''. This page gives an overview of this and the generic topic.
with a collection of functions on them. These functions can usually be divided into two classes:<br />


#. constructor functions: these are introduced to create elements of the sort or to construct complex elements from simpler ones.
== Elements ==
#. additional functions: these are functions defined in terms of the constructor functions.
As an area of applied mathematics and computer science, Algebraic Specification (AS) addresses these concerns<ref name="BHK"/>:


If one considers an algebraic specification of the Booleans the constructors can be true and false. In that
*# design of algebraic specification formalisms;
case all other connectives, such as ^ and _, may be considered to be additional functions. Alternatively,
*# application of algebraic specification techniques to the definition programming languages;
also the combination of false and ¬ can be considered constructors. In that case true may be considered
*# generation of testable or executable prototypes from specifications.
an additional function.<br />


In the context of the description of state and state change one may think of the sort as the set of possible
Although there is also a branch of this topic which is more concentrated on theoretical computer than applications, the
states (not necessarily all of them can occur in practice) and one may think of the functions as being useful
latter are the focus of this article.
for describing the state changes that may occur.<br />
 
==Implementation and Issues==
 
=== Algebraic specification Formalisms ===
 
=== Pure Functional Programming and Specifications ===
 
=== Development Practices ===
 
The broad spectrum of observed practices in which computer systems are actually developed is a superset of those covered in the so-called [[:en:Software Engineering|Software Engineering]].
 
==== Capability Maturity ====
 
==== Software Design in a Social Context ====


== Researchers ==
== Researchers ==
* [[Donald Sannella]]
* [[:en:Donald Sannella|Donald Sannella]]
* [[Andrzej Tarlecki]]


==See also==
==See also==
 
* [[AII]]
* [[Common Algebraic Specification Language]].
* [[:en:Algebraic specification|Algebraic specification]]
* [[Formal specification]]
* [[:en:Common Algebraic Specification Language|Common Algebraic Specification Language]].
* [[:en:Formal specification|Formal specification]]
* [[TAIS]]


== Notes ==
== Notes ==


<references />
<references />
{{compsci-stub}}
[[pt:Especificação algébrica]]