Software Development by Refinement
|
|
|
- Hortense Hubbard
- 10 years ago
- Views:
Transcription
1 Software Development by Refinement Dusko Pavlovic and Douglas R. Smith Kestrel Institute, 3260 Hillview Avenue Palo Alto, California USA Abstract. This paper presents an overview of the technical foundations and current directions of Kestrel s approach to mechanizing software development. The approach emphasizes machine-supported refinement of property-oriented specifications to code, based on a category of higherorder specifications. A key idea is representing knowledge about programming concepts, such as algorithm design, and datatype refinement by means of taxonomies of abstract design theories and refinements. Concrete refinements are generated by composing library refinements with a specification. The framework is partially implemented in the research systems Specware, Designware, Epoxi, and Planware. Specware provides basic support for composing specifications and refinements via colimit, and for generating code via logic morphisms. Specware is intended to be general-purpose and has found use in industrial settings. Designware extends Specware with taxonomies of software design theories and support for constructing refinements from them. Epoxi builds on Designware to support the specification and refinement of systems. Planware transforms behavioral models of tasks and resources into high-performance scheduling algorithms. A few applications of these systems are presented. 1 Overview A software system can be viewed as a composition of information from a variety of sources, including the application domain, the requirements on the system s behavior, software design knowledge about system architectures, algorithms, data structures, code optimization techniques, and the run-time hardware/software/physical environment in which the software will execute. This paper presents a mechanizable framework for representing these various sources of information, and for composing them in the context of a refinement process. The framework is founded on a category of specifications. Morphisms are used to structure and parameterize specifications, and to refine them. Colimits are used to compose specifications. Diagrams are used to express the structure of large specifications, the refinement of specifications to code, and the application of design knowledge to a specification. B.K. Aichernig and T. Maibaum (Eds.): Formal Methods..., LNCS 2757, pp , c Springer-Verlag Berlin Heidelberg 2003
2 268 Dusko Pavlovic and Douglas R. Smith The framework features a collection of techniques for constructing refinements based on formal representations of programming knowledge. Abstract algorithmic concepts, datatype refinements, program optimization rules, software architectures, abstract user interfaces, and so on, are represented as diagrams of specifications and morphisms. We arrange these diagrams into taxonomies, which allow incremental access to and construction of refinements for particular requirement specifications. For example, a user may specify a scheduling problem and select a theory of global search algorithms from an algorithm library. The global search theory is used to construct a refinement of the scheduling problem specification into a specification containing a global search algorithm for the particular scheduling problem. The framework is partially implemented in the research systems Specware, Designware, Epoxi and Planware. Specware provides basic support for composing specifications and refinements, and generating code. Code generation in Specware is supported by inter-logic morphisms that translate between the specification language/logic and the logic of a particular programming language (e.g. CommonLisp or C++). Specware is intended to be general-purpose and has found use in industrial settings. Designware extends Specware with taxonomies of software design theories and support for constructing refinements from them. Epoxi extends Specware to support the specification and refinement of behavior and the generation of imperative code. Planware transforms behavioral models of tasks and resources into high-performance scheduling algorithms. The remainder of this paper presents an overview of the technical foundations and current directions of Kestrel s approach to mechanizing software development. A few applications of these techniques are described in Section 6. 2 Basic Concepts 2.1 Specifications A specification is a finite presentation of a theory. The signature of a specification provides the vocabulary for describing objects, operations, and properties in some domain of interest, and the axioms constrain the meaning of the symbols. The theory of the domain is the closure of the axioms under the rules of inference. Example: Here is a specification for partial orders, using notation adapted from Specware [18]. It introduces a sort E and an infix binary predicate on E, called le, which is constrained by the usual axioms. Although Specware allows higherorder specifications, first-order formulations are sufficient in this paper. spec Partial-Order is sort E op le : E,E Boolean axiom reflexivity is xlex axiom transitivity is xley ylez = xlez axiom antisymmetry is xley ylex = x = y end-spec
3 Software Development by Refinement 269 The generic term expression will be used to refer to a term, formula, or sentence. A model of a specification is a structure of sets and total functions that satisfy the axioms. However, for software development purposes we have a less well-defined notion of semantics in mind: each specification denotes a set of possible implementations in some computational model. 2.2 Morphisms A specification morphism translates the language of one specification into the language of another specification while preserving the property of provability, so that any theorem in the source specification remains a theorem under translation. A specification morphism m : T T isgivenbyamapfromthesortand operator symbols of the domain spec T to the symbols of the codomain spec T. To be a specification morphism it is also required that every axiom of T translates to a theorem of T. It then follows that a specification morphism translates theorems of the domain specification to theorems of the codomain. An interpretation (between theories) is a slightly generalized morphism that translates symbols to expressions. Example: A specification morphism from Partial-Order to Integer is: morphism Partial-Order-to-Integer is {E Integer, le } Translation of an expression by a morphism is by straightforward application of thesymbolmap,so,forexample,thepartial-order axiom xlextranslates to x x. The three axioms of a partial order remain provable in Integer theory after translation. Morphisms come in a variety of flavors; here we only use two. An extension or import is an inclusion between specs. Example: We can build up the theory of partial orders by importing the theory of preorders. The import morphism is {E E, le le}. spec P reorder sort E op le : E,E Boolean axiom reflexivity is xlex axiom transitivity is xley ylez = xlez end-spec spec Partial-Order import P reorder axiom antisymmetry is xley ylex = x = y end-spec A definitional extension, written A d B, is an import morphism in which any new symbol in B also has an axiom that defines it. Definitions have implicit
4 270 Dusko Pavlovic and Douglas R. Smith axioms for existence and uniqueness. Semantically, a definitional extension has the property that each model of the domain has a unique expansion to a model of the codomain. A parameterized specification can be treated syntactically as a morphism. A functorial semantics for first-order parameterized specifications via coherent functors is given by Pavlović [10]. 2.3 The Category of Specs Specification morphisms compose in a straightforward way as the composition of finite maps. It is easily checked that specifications and specification morphisms form a category SPEC. Colimits exist in SPEC and are easily computed. Suppose that we want to compute the colimit of B A C.First,formthe i j disjoint union of all sort and operator symbols of A, B, andc, then define an equivalence relation on those symbols: s t iff (i(s) =t i(t) =s j(s) =t j(t) =s). The signature of the colimit (also known as pushout in this case) is the collection of equivalence classes wrt. The cocone morphisms take each symbol into its equivalence class. The axioms of the colimit are obtained by translating and collecting each axiom of A, B, andc. Example: Suppose that we want to build up the theory of partial orders by composing simpler theories. spec BinRel is sort E op le : E,E Boolean end-spec spec Antisymmetry is import BinRel axiom antisymmetry is xley ylex = x = y end-spec spec PreOrder is import BinRel axiom reflexivity is xlex axiom transitivity is xley ylez = xlez end-spec The pushout of Antisymmetry BinRel P reorder is isomorphic to the specification for Partial-Order in Section 2.1. In detail: the morphisms are {E E, le le} from BinRel to both PreOrder and Antisymmetry. The equivalence classes are then {{E,E,E}, {le, le, le}}, so the colimit spec has one sort (which we rename E), and one operator (which we rename le). Furthermore, the axioms of BinRel, Antisymmetry, and PreOrder are each translated to become the axioms of the colimit. Thus we have Partial-Order.
5 Software Development by Refinement 271 Example: The pushout operation is also used to instantiate the parameter in a parameterized specification [3]. The binding of argument to parameter is represented by a morphism. To form a specification for Containers of integers, we compute the pushout of Container Triv Integer,whereContainer Triv is {E E}, andtriv Integer is {E Integer}. Example: A specification for sequences can be built up from Container, also via pushouts. We can regard Container as parameterized on a binary operator spec BinOp is sort E op bop : E,E E end-spec morphism Container-Parameterization : BinOp Container is {E E, bop join} and we can define a refinement arrow that extends a binary operator to a semigroup: spec Associativity is import BinOp axiom Associativity is ((x joiny) join z) = (xjoin(y joinz)) end-spec The pushout of Associativity BinOp Container, produces a collection specificationwithanassociativejoinoperator,whichisproto-seq, thecoreofa sequence theory (See Appendix in [16]). By further extending Proto-Seq with a commutativity axiom, we obtain Proto-Bag theory, the core of a bag (multiset) theory. 2.4 Diagrams Roughly, a diagram is a graph morphism to a category, usually the category of specifications in this paper. For example, the pushout described above started with a diagram comprised of two arrows: BinRel P reorder Antisymmetry and computing the pushout of that diagram produces another diagram: BinRel Antisymmetry P reorder Partial-Order A diagram commutes if the composition of arrows along two paths with the same start and finish node yields equal arrows.
6 272 Dusko Pavlovic and Douglas R. Smith The Structuring of Specifications. Colimits can be used to construct a large specification from a diagram of specs and morphisms. The morphisms express various relationships between specifications, including sharing of structure, inclusion of structure, and parametric structure. Several examples will appear later. Example: The finest-grain way to compose Partial-Order is via the colimit of BinRel Reflexivity T ransitivity Antisymmetry Refinement and Diagrams. As described above, specification morphisms can be used to help structure a specification, but they can also be used to refine a specification. When a morphism is used as a refinement, the intended effect is to reduce the number of possible implementations when passing from the domain spec to the codomain. In this sense, a refinement can be viewed as embodying a particular design decision or property that corresponds to the subset of possible implementations of the domain spec which are also possible implementations of the codomain. Often in software refinement we want to preserve and extend the structure of a structured specification (versus flattening it out via colimit). When a specification is structured as a diagram, then the corresponding notion of structured refinement is a diagram morphism. A diagram morphism M from diagram D to diagram E consists of a set of specification morphisms, one from each node/spec in D to a node in E such that certain squares commute (a functor underlies each diagram and a natural transformation underlies each diagram morphism). We use the notation D = E for diagram morphisms. Example: A datatype refinement that refines bags to sequences can be presented as the diagram morphism BtoS : BAG = BAG-AS-SEQ: Bag Triv BAG BtoS Bag BtoS Triv Seq Bag-as-Seq Triv BtoS BAG-AS-SEQ where the domain and codomain of BtoS are shown in boxes, and the (one) square commutes. Here Bag-as-Seq is a definitional extension of Seq that provides an image for Bag theory. Specs for Bag, Seq and Bag-as-Seq and details of the refinement can be found in Appendix A of [16]. The interesting content is in spec morphism BtoS Bag : morphism BtoS Bag : Bag Bag-as-Seq is {Bag Bag-as-Seq, empty-bag bag-empty,
7 Software Development by Refinement 273 BAG TRIV BAG LINEAR-ORDER TRIV SEQ BAG+SEQ BAG+SEQ-LinOrd BAG+SEQ-CONV BAG+SEQ-over-LinOrd BaS TRIV BaS TRIV SEQ LINEAR-ORDER SORTING SEQ SEQ BaS+SEQ BaS+SEQ-LinOrd BaS+SEQ-CONV BaS+SEQ-over-LinOrd BaS-SORTING Fig. 1. Refining Bags to Seqs in Sorting. empty-bag? bag-empty?, nonempty? bag-nonempty?, singleton-bag bag-singleton, singleton-bag? bag-singleton?, nonsingleton-bag? bag-nonsingleton?, in bag-in, bag-union bag-union, bag-wfgt bag-wfgt, size bag-size} Diagram morphisms compose in a straightforward way based on spec morphism composition. It is easily checked that diagrams and diagram morphisms form a category. In the sequel we will generally use the term refinement to mean a diagram morphism. Colimits in this category can be computed using left Kan extensions and colimits in SPEC. Figure 1 shows the pushout of the diagram morphism BtoS and a structured specification (diagram) for the problem of sorting a bag over linearly ordered sets (see [16] for details). Intuitively, the universality of the colimit asserts that the resulting diagram is the simplest diagram that refines the sorting diagram and incorporates the refinement information of BtoS. The fact that the colimit calculation constructs a refinement of a given diagram (here the sorting specification) with respect to an abstract refinement (here BtoS) is a key tool in our approach to mechanizing the development process.
8 274 Dusko Pavlovic and Douglas R. Smith 2.5 Logic Morphisms and Code Generation Inter-logic morphisms [9] are used to translate specifications from the specification logic to the logic of a programming language. See [18] for more details. They are also useful for translating between the specification logic and the logic supported by various theorem-provers and analysis tools. They are also useful for translating between the theory libraries of various systems. 3 Software Development by Refinement S 0 S 1... S n Code The development of correct-by-construction code via a formal refinement process is shown to the left. The refinement process starts with a specification S 0 of the requirements on a desired software artifact. Each S i,i= 0, 1,..., n represents a structured specification (diagram) and the arrows are refinements (represented as diagram morphisms). The refinement from S i to S i+1 embodies a design decision which cuts down the number of possible implementations. Finally an inter-logic morphism translates a low-level specification S n to code in a programming language. Semantically the effect is to narrow down the set of possible implementations of S n to just one, so specification refinement can be viewed as a constructive process for proving the existence of an implementation of specification S 0 (and proving its consistency). Clearly, two key issues in supporting software development by refinement are: (1) how to construct specifications, and (2) how to construct refinements. Section 4 describes mechanizable techniques for constructing refinements. 3.1 Constructing Specifications A specification-based development environment supplies tools for creating new specifications and morphisms, for structuring specs into diagrams, and for composing specifications via importation, parameterization, and colimit. In addition, a software development environment needs to support a large library of reusable specifications, typically including specs for (1) common datatypes, such as integer, sequences, finite sets, etc. and (2) common mathematical structures, such as partial orders, monoids, vector spaces, etc. In addition to these generic operations and libraries, the system may support specialized construction tools and libraries of domain-specific theories, such as resource theories, or generic theories about domains such as satellite control or transportation. 3.2 Constructing Refinements A refinement-based development environment supplies tools for creating new refinements. One of our innovations is showing how a library of abstract re-
9 Software Development by Refinement 275 finements can be applied to produce refinements for a given specification. In this paper we focus mainly on refinements that embody design knowledge about (1) algorithm design, (2) datatype refinement, and (3) expression optimization. We believe that other types of design knowledge can be similarly expressed and exploited, including interface design, software architectures, domain-specific requirements capture, and others. In addition to these generic operations and libraries, the system may support specialized construction tools and libraries of domain-specific refinements. The key concept of this work is the following: abstract design knowledge about datatype refinement, algorithm design, software architectures, program optimization rules, visualization displays, and so on, can be expressed as refinements (i.e. diagram morphisms). The domain of one such refinement represents the abstract structure that is required in a user s specification in order to apply the embodied design knowledge. The refinement itself embodies a design constraint the effect is a reduction in the set of possible implementations. The codomain of the refinement contains new structures and definitions that are composed with the user s requirement specification. The figure to the left shows the application of a library refinement A = B to a given (structured) specification S 0. A S 0 First the library refinement is selected. The applicability of the refinement to S 0 is shown by constructing a classification arrow from A to S 0 which classifies S 0 as having A-structure B S 1 by making explicit how S 0 has at least the structure of A. Finally the refinement is applied by computing the pushout in the category of diagrams. The creative work lies in constructing the classification arrow [14, 15]. 4 Scaling Up The process of refining specification S 0 described above has three basic steps: 1. select a refinement A = B from a library, 2. construct a classification arrow A = S 0,and 3. compute the pushout S 1 of B = A = S 0. The resulting refinement is the cocone arrow S 0 = S 1. This basic refinement process is repeated until the relevant sorts and operators of the spec have sufficiently explicit definitions that they can be easily translated to a programming language, and then compiled. In this section we address the issue of how this basic process can be further developed in order to scale up as the size and complexity of the library of specs and refinements grows. The first key idea is to organize libraries of specs and refinements into taxonomies. The second key idea is to support tactics at two levels: theory-specific tactics for constructing classification arrows, and taskspecific tactics that compose common sequences of the basic refinement process into a larger refinement step.
10 276 Dusko Pavlovic and Douglas R. Smith 4.1 Design by Classification: Taxonomies of Refinements A productive software development environment will have a large library of reusable refinements, letting the user (or a tactic) select refinements and decide where to apply them. The need arises for a way to organize such a library, to support access, and to support efficient construction of classification arrows. A library of refinements can be organized into taxonomies where refinements are indexed on the nodes of the taxonomies, and the nodes include the domains of various refinements in the library. The taxonomic links are refinements, indicating how one refinement applies in a stronger setting than another. Container Proto-Seq Proto-Bag Seq Bag Proto-Set Fig. 2. Taxonomy of Container Datatypes. Figure 2 sketches a taxonomy of abstract datatypes for collections. The arrows between nodes express the refinement relationship; e.g. the morphism from Proto-Seq to Proto-Bag is an extension with the axiom of commutativity applied to the join constructor of Proto-Seqs. Datatype refinements are indexed by the specifications in the taxonomy; e.g. a refinement from (finite) bags to (finite) sequences is indexed at the node specifying (finite) bag theory. Figure 3 shows a taxonomy of algorithm design theories. The refinements indexed at each node correspond to (families of) program schemes. The algorithm theory associated with a scheme is sufficient to prove the consistency of any instance of the scheme. Nodes that are deeper in a taxonomy correspond to specifications that have more structure than those at shallower levels. Generally, we wish to select refinements that are indexed as deeply in the taxonomy as possible, since the maximal amount of structure in the requirement specification will be exploited. In the algorithm taxonomy, the deeper the node, the more structure that can be exploited in the problem, and the more problem-solving power that can be brought to bear. Roughly speaking, narrowly scoped but faster algorithms are deeper in the taxonomy, whereas widely applicable general algorithms are at shallower nodes.
11 Software Development by Refinement 277 Constraint Satisfaction (R=set of maps) Integer Linear Programming 0-1 methods branch-and-bound Linear Programming simplex interior point primal-dual Network Flow Ford-Fulkerson specialized simplex Transportation NW-algorithm Assignment Problem Hungarian method Problem Theory (D R O) generate-and-test Global Structure (R = set+recursive partition) global search binary search backtrack branch-and-bound Local Structure (R=set+relation) genetic algorithms Divide-and-Conquer divide-and-conquer Problem Reduction Structure Complement Reduction sieves GS-CSP (R = set+recursively partitioned set of maps) Local Structure (R=set+binary relation) local search steepest ascent simulated annealing tabu search Problem Reduction Generators dynamic programming branch-and-bound game tree search Local Poset Structure (R=poset) Monotone Deflationary Function fixpoint iteration Local Semilattice Structure (R=semilattice) genetic algorithms GS-Horn-CSP (Definite constraints) constraint propagation Fig. 3. Taxonomy of Algorithm Theories.
12 278 Dusko Pavlovic and Douglas R. Smith Two problems arise in using a library of refinements: (1) selecting an appropriate refinement, and (2) constructing a classification arrow. If we organize a library of refinements into a taxonomy, then the following ladder construction process provides incremental access to applicable refinements, and simultaneously, incremental construction of classification arrows. The process of incrementally constructing a refinement is illustrated in the ladder construction diagram I 0 A 0 Spec 0 to the left. The left side of the ladder is a path in a taxonomy starting at the root. The ladder is constructed a rung at a time from the top down. The initial interpretation from A 0 to Spec 0 is often simple to 1 I 1 A 1 Spec construct. The rungs of the ladder are constructed by a constraint solving process that involves user choices, I 2 A 2 the propagation of consistency constraints, calculation Spec 2 of colimits, and constructive theorem proving [14, 15]. Generally, the rung construction is stronger than a colimit even though a cocone is being constructed. The intent in constructing I i : A i Spec i is that Spec i has sufficient defined symbols to serve as the I n A n Spec n codomain. In other words, the implicitly defined symbols in A i are translated to explicitly defined symbols in Spec i. Once we have constructed a classification arrow A n = Spec n and selected a refinement A n = B n I n A n Spec n that is indexed at node A n in the taxonomy, then constructing a refinement of Spec 0 is straightforward: compute the pushout, yielding Spec n+1, then compose arrows down the right side of the ladder and the n+1 B n Spec pushout square to obtain Spec 0 = Spec n+1 as the final constructed refinement. Again, rung construction is not simply a matter of computing a colimit. For example, there are at least two distinct arrows from Divide-and-Conquer to Sorting, corresponding to a mergesort and a quicksort these are distinct cocones and there is no universal sorting algorithm corresponding to the colimit. However, applying the refinement that we select at a node in the taxonomy is a simple matter of computing the pushout. For algorithm design the pushout simply instantiates some definition schemes and other axiom schemes. It is unlikely that a general automated method exists for constructing rungs of the ladder, since it is here that creative decisions can be made. For generalpurpose design it seems that users must be involved in guiding the rung construction process. However in domain-specific settings and under certain conditions it will possible to automate rung construction (as discussed in the next section). Our goal in Designware is to build an interface providing the user with various general automated operations and libraries of standard components. The user applies various operators with the goal of filling out partial morphisms and
13 Software Development by Refinement 279 specifications until the rung is complete. After each user-directed operation, constraint propagation rules are automatically invoked to perform sound extensions to the partial morphisms and specifications in the rung diagram. Constructive theorem-proving provides the basis for several important techniques for constructing classification arrows [14, 15]. 4.2 Tactics The design process described so far uses primitive operations such as (1) selecting a spec or refinement from a library, (2) computing the pushout/colimit of (a diagram of) diagram morphisms, and (3) unskolemizing and translating a formula along a morphism, (4) witness-finding to derive symbol translations during the construction of classification arrows, and so on. These and other operations can be made accessible through a GUI, but inevitably, users will notice certain patterns of such operations arising, and will wish to have macros or parameterized procedures for them, which we call tactics. They provide higher level (semiautomatic) operations for the user. The need for at least two kinds of tactics can be discerned. 1. Classification tactics control operations for constructing classification arrows. The divide-and-conquer theory admits at least two common tactics for constructing a classification arrow. One tactic can be procedurally described as follows: (1) the user selects a operator symbol with a DRO requirement spec, (2) the system analyzes the spec to obtain the translations of the DRO symbols, (3) the user is prompted to supply a standard set of constructors on the input domain D, (4) the tactic performs unskolemization on the composition relation in each Soundness axiom to derive a translations for O Ci, and so on. This tactic was followed in the mergesort derivation. The other tactic is similar except that the tactic selects constructors for the composition relations on R (versus D) in step (3), and then uses unskolemization to solve for decomposition relations in step (4). This tactic was followed in the quicksort derivation. A classification tactic for context-dependent simplification provides another example. Procedurally: (1) user selects an expression expr to simplify, (2) type analysis is used to infer translations for the input and output sorts of expr, (3) a context analysis routine is called to obtain contextual properties of expr (yielding the translation for C), (4) unskolemization and witnessfinding are used to derive a translation for new-expr. 2. Refinement tactics control the application of a collection of refinements; they may compose a common sequence of refinements into a larger refinement step. Planware [2] has a code-generation tactic for automatically applying spec-to-code interlogic morphisms. Another example is a refinement tactic for context-dependent simplification; procedurally, (1) use the classification tactic to construct the classification arrow, (2) compute the pushout, (3) apply a substitution operation on the spec to replace expr with its simplified form and to create an isomorphism. Finite Differencing requires a more
14 280 Dusko Pavlovic and Douglas R. Smith complex tactic that applies the tactic for context-dependent simplification repeatedly in order to make incremental the expressions set up by applying the Expression-and-Function Abstracted-Op refinement. We can also envision the possibility of metatactics that can construct tactics for a given class of tasks. For example, given an algorithm theory, there may be ways to analyze the sorts, ops and axioms to determine various orders in constructing the translations of classification arrows. The two tactics for divideand-conquer mentioned above are an example. 5 Specifying Behavior The results described above most naturally support the development of functional programs. To support the specification and development of concurrent systems, we felt the need to specify behaviors via some notion of state machine [11]. We are developing an extension of the framework, called evolving specifications (or simply especs), that supports the specification and development of complex systems. Especs provide the means for explicitly modeling the logical structure and behavior of systems. The framework supports precise, automatable operations for the composition of especs and their refinement. The espec framework is partially implemented in the Epoxi system. Especs can be seen as a way to naturally extend the Specware/Designware foundation (the category of diagrams of higher-order algebraic specifications) with a combination of the evolving algebras of Gurevich (aka abstract state machines) [6], with the classical axiomatic semantics of Floyd/Hoare/Dijkstra. As in Specware/Designware, especs use morphisms and colimits to support the composition of systems and their refinement to code, but in addition especs provide a natural and novel way to combine logical structure and behavior. There are four key ideas underlying our representation of state machines as evolving specifications (especs). Together they reveal an intimate connection between behavior and the category of logical specifications. The first three are due to Gurevich [6]. 1. A state is a model A state of computation can be viewed as a snapshot of the abstract computer performing the computation. The state has a set of named stores with values that have certain properties. 2. A state transition is a finite model change A transition rewrites the stored values in the state. 3. An abstract state is a theory Not all properties of a state are relevant, and it is common to group states into abstract states that are models of a theory. The theory presents the structure (sorts, variables, operations), plus the axioms that describe common properties (i.e. invariants). We can treat states as static, mathematical models of a global theory thy A,andthenall transitions correspond to model morphisms. Extensions of the global theory thy A provide local theories for more refined abstract states, introducing local variables and local properties/invariants.
15 Software Development by Refinement An abstract transition is an interpretation between theories Just as we abstractly describe a class of states/models as a theory, we abstractly describe a class of transitions as an interpretation between theories [8, 11]. To see this, consider the correctness of an assignment statement relative to a precondition P and a postcondition Q; i.e. a Hoare triple P {x := e} Q. If we consider the initial and final states as characterized by theories thy pre and thy post with theorems P and Q respectively, then the triple is valid iff Q[e/x] isatheoreminthy pre. That is, the triple is valid iff the symbol map { x e} is an interpretation from thy post to thy pre. Note that interpretation goes in the opposite direction from the state transition. The basic idea of especs is to use specifications as state descriptions, and to use interpretations to represent transitions between state descriptions. The idea that abstract states and abstract transitions correspond to specs and interpretations suggests that state machines are diagrams over Spec op.furthermore, state machines are composed via colimits, and state machines are refined via diagram morphisms [11]. These concepts are implemented in the Epoxi extension of Specware. Epoxi includes a translator from especs to C code. Especs support an architectural approach to system design [13]. Components and connectors are represented by parameterized especs where the parameters are the interfaces for components and connectors (ports and roles respectively). The interconnection of components and connectors, forming the architecture, is presented by a diagram in the category of especs (cf.[5, 7]). The colimit of the diagram serves to glue the interfaces together and to form the parallel composition of the constituent behaviors. In [12], we present a detailed example of a simple system comprised of a radar unit and a mission controller connected by a synchronous communication channel. Especs for the components and the connector specify the structure, behavior, and roles/ports. They are interconnected by means of a diagram and composed via a colimit of especs. A glue-code generator is used to refine the connector, serving to reconcile the data structure mismatches between the two components [4]. 6 Applications We briefly describe several application projects underway at Kestrel that exploit the refinement technology discussed above. Mission Planning System (MPS). The planning of large-scale cargo transportation missions is one of the most complex scheduling problems in the world. It involves simultaneously scheduling a variety of resources including aircraft, crews, and port facilities as well as supporting resources such as fuel. Other complexities such as routing and diplomatic clearances further complicate any model. Commercial airlines face a related problem, but they are able to separate aircraft and crew scheduling because of the regularities of their service. Kestrel and BBN Technologies have developed a prototype mission planning system for
16 282 Dusko Pavlovic and Douglas R. Smith the US Air Force satisfying most requirements for operation. The main algorithm has been entirely developed and evolved by modifying requirement specifications (stated as pre/post-conditions on the input/output data types), and applying algorithm design, datatype refinement, and optimization tactics. To our knowledge there is no more complex algorithm that has been developed formally from a property-oriented specification and with such as high degree of automation. Planware. The Planware system is a domain-specific generator of highperformance schedulers [1]. It provides an answer to the question of how to help automate the acquisition of requirements from the user and to assemble a formal requirement specification for the user. The key idea is to focus on a narrow well-defined class of problems and programs and to build a precise, abstract domain-specific specification formalism that covers the class. Interaction with the user is only required in order to obtain the refinement from the abstract spec to a specification of the requirements of the user s particular problem. To allow users to specify complex multi-resource problems, Planware uses especs to model the behavior of tasks and resources, and uses a service matching theory to handle the interactions of multi-resource problems. For example, a transportation organization might want a scheduler to simultaneously handle its aircraft, crews, fuel, and airport load/unload facilities. Each resource has its own internal required patterns of behavior and may have dependencies on other resources. The semantics of a resource is the set of possible behaviors that it can exhibit. We treat these behaviors as (temporal) sequences of activities which are modeled as espec modes (abstract states). Each activity has mode variables (e.g. starttime and duration) and any services that it offers (e.g. the flying mode of an aircraft offers transportation service) and services that it requires (e.g. the flying mode of an aircraft requires the services of a crew). A formal theory of a resource should have as models exactly the physically feasible behaviors of the resource. The axioms serve to constrain the values that mode variables can take on in states (e.g. the weight of cargo cannot exceed a maximum bound during the flying mode of an aircraft). The transitions serve to constrain the evolution of the mode variables (e.g. the finish time of one activity must occur no later than the start time of the next activity). A task is also expressed formally as an espec. The main difference between a task and a resource is that a task offers no service - it only requires services of resources. For example, a cargo container requires transportation service. We believe that Planware s modeling language is general for expressing scheduling and resource allocation problems. However, the design process currently focuses on the generation of centralized, offline algorithms. The Planware design process has the following steps: 1. Requirement Acquisition The user supplies a model of a scheduling problem in terms of especs for the kinds of tasks and resources that are of concern. The problem model is formalized into a specification that can be read abstractly as follows: given a collection of task instances (that accord with the task especs) and a collection of resource instances, find a schedule that ac-
17 Software Development by Refinement 283 complishes as many of the tasks as possible (or (approximately) optimizes the given cost function), subject to all the constraints of the resource models and using only the given resources. The required and offered services of a resource express the dependencies between resource classes. Planware analyzes the task and resource models to determine a hierarchy of service matches (service required matched with service offered) that is rooted in a task model. 2. Algorithm Design The problem specification is used to automatically instantiate program schemes that embody abstract algorithmic knowledge about global search and constraint propagation. The algorithm generation process follows the structure of the service hierarchy, resulting in a nested structure of instantiated search schemes. 3. Datatype Refinement and Optimization Abstract datatypes are refined to concrete programming-language types, and other optimizations are applied. 4. Code generation Finally code in a programming language (currently CommonLisp) is generated. In one recent example, we developed formal models for air cargo packages, cargo aircraft, air crews, and port facilities (i.e. four espec models). In about one second Planware generates 6560 LOC in our local MetaSlang language, and then translates it to LOC in Commonlisp comprising over 1780 definitions. JBV/Applet Generation. Another Kestrel project uses refinement techniques to automate the correct-by-construction generation of secure Java applets from specifications. Previous work developed a formal specification of a Java ByteCode Verifier, and generated correct code from it. AIM Chip. Motorola Corporation used the Specware tool to produce a successful commercial chip, called the Advanced InfoSec (Information Security) Machine, a VLSI programmable cryptographic processor that was released in Specware was used to generate and certify the secure kernel of the operating system. Formal Methods versus CMM Level 4 Process Management. The US Department of Defense sponsoredone relatively carefully controlled experimental comparison of two competing development methodologies. One company used the Specware tool and another company used the SEI CMM level 4 process management on the same task and with the same budget. The requirements were expressed in natural language, and the parties were given the same access to domain experts regarding the specification. The formal Specware-based approach was found to result in significantly fewer errors in the final design. Details may be found in [19]. 7 Toward Embedded System Design Current work is extending the modeling capability of especs to the domain of hybrid embedded systems [17]. The ultimate objective is to produce a software
18 284 Dusko Pavlovic and Douglas R. Smith development environment that provides extensive tool support for the development of high-assurance real-time embedded systems from specifications. The foundation of the development process is a module/interface specification formalism that is abstract, semantically precise, expressive, and provides machine support for key design operations, such as composition (via colimit), refinement (by applying libraries of design knowledge), and reasoning (via generalpurpose and specialized inference procedures). We have attempted to combine in one formalism the ability to precisely specify a module in terms of both the functionality/behavior of its services (based on especs), and their resource constraints (based on the Planware use of especs). Moreover, services are categorized along several dimensions: required versus offered services, and pull services (functions and procedures) versus push services (disseminating state and event information). To our knowledge, there is no other specification formalism that supports compositional reasoning of embedded systems at all levels of abstraction. Based on this module/interface specification formalism, the framework emphasizes a compositional and refinement-oriented approach to design. The user assembles a high-level model of the physical environment, monitored/controlled system, and the embedded software. Refinements that introduce structure and implementation detail are applied. A key idea is to represent knowledge about embedded system design concepts, and to semiautomatically use those representations to generate refinements. Finally, there is a partitioning process that groups components and connectors that will be mapped to the same target component. The use of specialized resource allocation algorithms can help search for (near)-optimal partitions and maps. 8 Summary This paper summarizes Kestrel s ongoing efforts to provide practical support for the development of efficient, high-assurance software. The main features of these efforts are: A comprehensive and uniform mathematical foundation that encompasses requirements (both property-oriented and behavioral), composition, refinement, and code generation, as well as the representation of program/system design knowledge. Building on the category of higher-order specifications, we are developing natural extensions into behavioral specification including features of concurrency, resource constraints, continuity, and stochastic processes. Tool Support - a practical development formalism must be amenable to extensive automated support, hence our emphasis on a category of syntactic objects (specs) versus semantic objects (structures). The examples and most concepts described are working in the Specware, Designware, Epoxi, and Planware systems. Inference tools such as theorem-provers, constraint propagation, and other analysis tools are critical to providing assurance during refinement.
19 Software Development by Refinement 285 Design Theories - although it is not emphasized here, a key to practical support for software development from specifications is the reuse of abstract design knowledge. If the ultimate language for communication with computers is a requirements language, then the means must exist to supply the design information that allows the generated system to carry out those requirements (e.g. architectures, algorithms, data structures). Current interest in design patterns, O-O frameworks, and various approaches to generic programming begin to get at this capture of reusable design knowledge, but typically in a way that doesn t relate requirements to code. Acknowledgments The work reported here is the result of extended collaboration with our colleagues at Kestrel Institute. We would particularly like to acknowledge the contributions of Matthias Anlauff, Marcel Becker, LiMei Gilham, and Stephen Westfold. This research has been supported by the Office of Naval Research, the US Air Force Research Lab, Rome NY, and by the Defense Advanced Research Projects Agency. References 1. Becker, M., and Smith, D. R. Planware: Synthesis of resource allocation algorithms. Tech. rep., Kestrel Institute, Blaine, L., Gilham, L., Liu, J., Smith, D., and Westfold, S. Planware domain-specific synthesis of high-performance schedulers. In Proceedings of the Thirteenth Automated Software Engineering Conference (October 1998), IEEE Computer Society Press, pp Burstall,R.M.,andGoguen,J.A. The semantics of clear, a specification languge. In Proceedings, 1979 Copenhagen Winter School on Abstract Software Specification, D. Bjorner, Ed. Springer LNCS 86, Burstein, M., McDermott, D., Smith, D., and Westfold, S. Formal derivation of agent interoperation code. Journal of Autonomous Agents and Multi-Agent Systems (2001). (earlier version in Proceedings of the Agents 2000 Conference, Barcelona, Spain, 2000). 5. Goguen, J. A. Categorical foundations for general systems theory. In Advances in Cybernetics and Systems Research, F. Pichler and R. Trappl, Eds. Transcripta Books, 1973, pp Gurevich, Y. Evolving algebra 1993: Lipari guide. In Specification and Validation Methods, E. Boerger, Ed. Oxford University Press, 1995, pp J.L.Fiadeiro, Lopes, A., and T.Maibaum. Synthesising interconnections. In Algorithmic Languages and Calculi (London, 1997), R. Bird and L. Meertens, Eds., Chapman & Hall, pp Kutter, P. W. State transitions modeled as refinements. Tech. Rep. KES.U.96.6, Kestrel Institute, August Meseguer, J. General logics. In Logic Colloquium 87, H. Ebbinghaus, Ed. North Holland, Amsterdam, 1989, pp
20 286 Dusko Pavlovic and Douglas R. Smith 10. Pavlovic, D. Semantics of first order parametric specifications. In Formal Methods 99 (1999), J. Woodcock and J. Wing, Eds., vol of Lecture Notes in Computer Science, Springer Verlag, pp Pavlovic, D., and Smith, D. R. Composition and refinement of behavioral specifications. In Proceedings of Sixteenth International Conference on Automated Software Engineering (2001), IEEE Computer Society Press, pp Pavlovic, D., and Smith, D. R. System construction via evolving specifications. In Complex and Dynamic Systems Architectures (CDSA 2001) (2001). 13. Shaw, M., and Garlan, D. Software Architecture: Perspectives on an Emerging Discipline. Prentice-Hall, NJ, Smith, D. R. Constructing specification morphisms. Journal of Symbolic Computation, Special Issue on Automatic Programming 15, 5-6 (May-June 1993), Smith, D. R. Toward a classification approach to design. In Proceedings of the Fifth International Conference on Algebraic Methodology and Software Technology, AMAST 96 (1996), vol. LNCS 1101, Springer-Verlag, pp Smith, D. R. Mechanizing the development of software. In Calculational System Design, Proceedings of the NATO Advanced Study Institute, M. Broy and R. Steinbrueggen, Eds. IOS Press, Amsterdam, 1999, pp Smith, D. R. Harbinger: Formal development of embedded systems. Tech. rep., Kestrel Institute, Srinivas, Y. V., and Jüllig, R. Specware: Formal support for composing software. In Proceedings of the Conference on Mathematics of Program Construction, B. Moeller, Ed. LNCS 947, Springer-Verlag, Berlin, 1995, pp Widmaier, J., Schmidts, C., and Huang, X. Producing more reliable software: Mature software engineering process vs. state-of-the-art technology? In Proceedings of the International Conference on Software Engineering 2000 (Limerick, Ireland, 2000), ACM, pp
Designware: This paper presents a mechanizable framework for software development by renement.
Designware: Software Development by Renement Douglas R. Smith Kestrel Institute, Palo Alto, California 94304 USA Abstract This paper presents a mechanizable framework for software development by renement.
COMPOSITION, EQUIVALENCE AND INTEROPERABILITY: AN EXAMPLE
COMPOSITION, EQUIVALENCE AND INTEROPERABILITY: AN EXAMPLE Leszek Lechowicz (Department of Electrical and Computer Engineering, Northeastern University, Boston, MA; [email protected]); Mieczyslaw M.
Code Generation for High-Assurance Java Card Applets
Code Generation for High-Assurance Java Card Applets Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/ coglio
Introducing Formal Methods. Software Engineering and Formal Methods
Introducing Formal Methods Formal Methods for Software Specification and Analysis: An Overview 1 Software Engineering and Formal Methods Every Software engineering methodology is based on a recommended
Chapter 4 Software Lifecycle and Performance Analysis
Chapter 4 Software Lifecycle and Performance Analysis This chapter is aimed at illustrating performance modeling and analysis issues within the software lifecycle. After having introduced software and
Rigorous Software Development CSCI-GA 3033-009
Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 11 Semantics of Programming Languages Denotational Semantics Meaning of a program is defined as the mathematical
i. Node Y Represented by a block or part. SysML::Block,
OMG SysML Requirements Traceability (informative) This document has been published as OMG document ptc/07-03-09 so it can be referenced by Annex E of the OMG SysML specification. This document describes
A Framework for the Semantics of Behavioral Contracts
A Framework for the Semantics of Behavioral Contracts Ashley McNeile Metamaxim Ltd, 48 Brunswick Gardens, London W8 4AN, UK [email protected] Abstract. Contracts have proved a powerful concept
CHAPTER 7 GENERAL PROOF SYSTEMS
CHAPTER 7 GENERAL PROOF SYSTEMS 1 Introduction Proof systems are built to prove statements. They can be thought as an inference machine with special statements, called provable statements, or sometimes
Component visualization methods for large legacy software in C/C++
Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University [email protected]
3 Extending the Refinement Calculus
Building BSP Programs Using the Refinement Calculus D.B. Skillicorn? Department of Computing and Information Science Queen s University, Kingston, Canada [email protected] Abstract. We extend the
Verifying Semantic of System Composition for an Aspect-Oriented Approach
2012 International Conference on System Engineering and Modeling (ICSEM 2012) IPCSIT vol. 34 (2012) (2012) IACSIT Press, Singapore Verifying Semantic of System Composition for an Aspect-Oriented Approach
Software Engineering
Software Engineering Lecture 06: Design an Overview Peter Thiemann University of Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Software Engineering SWT 1 / 35 The Design Phase Programming in
Checking Access to Protected Members in the Java Virtual Machine
Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/
ML for the Working Programmer
ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming
Automated Theorem Proving - summary of lecture 1
Automated Theorem Proving - summary of lecture 1 1 Introduction Automated Theorem Proving (ATP) deals with the development of computer programs that show that some statement is a logical consequence of
InvGen: An Efficient Invariant Generator
InvGen: An Efficient Invariant Generator Ashutosh Gupta and Andrey Rybalchenko Max Planck Institute for Software Systems (MPI-SWS) Abstract. In this paper we present InvGen, an automatic linear arithmetic
[Refer Slide Time: 05:10]
Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture
Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements
Questions? Assignment Why is proper project management important? What is goal of domain analysis? What is the difference between functional and non- functional requirements? Why is it important for requirements
High Integrity Software Conference, Albuquerque, New Mexico, October 1997.
Meta-Amphion: Scaling up High-Assurance Deductive Program Synthesis Steve Roach Recom Technologies NASA Ames Research Center Code IC, MS 269-2 Moffett Field, CA 94035 [email protected] Jeff Van
Software Modeling and Verification
Software Modeling and Verification Alessandro Aldini DiSBeF - Sezione STI University of Urbino Carlo Bo Italy 3-4 February 2015 Algorithmic verification Correctness problem Is the software/hardware system
Software Verification: Infinite-State Model Checking and Static Program
Software Verification: Infinite-State Model Checking and Static Program Analysis Dagstuhl Seminar 06081 February 19 24, 2006 Parosh Abdulla 1, Ahmed Bouajjani 2, and Markus Müller-Olm 3 1 Uppsala Universitet,
Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective
Orit Hazzan's Column Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective This column is coauthored with Jeff Kramer, Department of Computing, Imperial College, London ABSTRACT
Specification and Analysis of Contracts Lecture 1 Introduction
Specification and Analysis of Contracts Lecture 1 Introduction Gerardo Schneider [email protected] http://folk.uio.no/gerardo/ Department of Informatics, University of Oslo SEFM School, Oct. 27 - Nov.
The Role of Computers in Synchronous Collaborative Design
The Role of Computers in Synchronous Collaborative Design Wassim M. Jabi, The University of Michigan Theodore W. Hall, Chinese University of Hong Kong Abstract In this paper we discuss the role of computers
A Model-driven Approach to Predictive Non Functional Analysis of Component-based Systems
A Model-driven Approach to Predictive Non Functional Analysis of Component-based Systems Vincenzo Grassi Università di Roma Tor Vergata, Italy Raffaela Mirandola {vgrassi, mirandola}@info.uniroma2.it Abstract.
How To Develop Software
Software Engineering Prof. N.L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-4 Overview of Phases (Part - II) We studied the problem definition phase, with which
Parametric Domain-theoretic models of Linear Abadi & Plotkin Logic
Parametric Domain-theoretic models of Linear Abadi & Plotkin Logic Lars Birkedal Rasmus Ejlers Møgelberg Rasmus Lerchedahl Petersen IT University Technical Report Series TR-00-7 ISSN 600 600 February 00
Introduction to Formal Methods. Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm
Introduction to Formal Methods Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm Outline Introduction Formal Specification Formal Verification Model Checking Theorem Proving Introduction Good papers to
ORIENTATIONS. Contents
ORIENTATIONS Contents 1. Generators for H n R n, R n p 1 1. Generators for H n R n, R n p We ended last time by constructing explicit generators for H n D n, S n 1 by using an explicit n-simplex which
Design by Contract beyond class modelling
Design by Contract beyond class modelling Introduction Design by Contract (DbC) or Programming by Contract is an approach to designing software. It says that designers should define precise and verifiable
NOTES ON CATEGORIES AND FUNCTORS
NOTES ON CATEGORIES AND FUNCTORS These notes collect basic definitions and facts about categories and functors that have been mentioned in the Homological Algebra course. For further reading about category
Implementation of hybrid software architecture for Artificial Intelligence System
IJCSNS International Journal of Computer Science and Network Security, VOL.7 No.1, January 2007 35 Implementation of hybrid software architecture for Artificial Intelligence System B.Vinayagasundaram and
Execution of A Requirement Model in Software Development
Execution of A Requirement Model in Software Development Wuwei Shen, Mohsen Guizani and Zijiang Yang Dept of Computer Science, Western Michigan University {wwshen,mguizani,zijiang}@cs.wmich.edu Kevin Compton
Formal Verification Coverage: Computing the Coverage Gap between Temporal Specifications
Formal Verification Coverage: Computing the Coverage Gap between Temporal Specifications Sayantan Das Prasenjit Basu Ansuman Banerjee Pallab Dasgupta P.P. Chakrabarti Department of Computer Science & Engineering
o-minimality and Uniformity in n 1 Graphs
o-minimality and Uniformity in n 1 Graphs Reid Dale July 10, 2013 Contents 1 Introduction 2 2 Languages and Structures 2 3 Definability and Tame Geometry 4 4 Applications to n 1 Graphs 6 5 Further Directions
Scalable Automated Symbolic Analysis of Administrative Role-Based Access Control Policies by SMT solving
Scalable Automated Symbolic Analysis of Administrative Role-Based Access Control Policies by SMT solving Alessandro Armando 1,2 and Silvio Ranise 2, 1 DIST, Università degli Studi di Genova, Italia 2 Security
Engineering Process Software Qualities Software Architectural Design
Engineering Process We need to understand the steps that take us from an idea to a product. What do we do? In what order do we do it? How do we know when we re finished each step? Production process Typical
Formal Engineering for Industrial Software Development
Shaoying Liu Formal Engineering for Industrial Software Development Using the SOFL Method With 90 Figures and 30 Tables Springer Contents Introduction 1 1.1 Software Life Cycle... 2 1.2 The Problem 4 1.3
Functional Decomposition Top-Down Development
Functional Decomposition Top-Down Development The top-down approach builds a system by stepwise refinement, starting with a definition of its abstract function. You start the process by expressing a topmost
From Workflow Design Patterns to Logical Specifications
AUTOMATYKA/ AUTOMATICS 2013 Vol. 17 No. 1 http://dx.doi.org/10.7494/automat.2013.17.1.59 Rados³aw Klimek* From Workflow Design Patterns to Logical Specifications 1. Introduction Formal methods in software
Software Certification and Software Certificate Management Systems
Software Certification and Software Certificate Management Systems (Position Paper) Ewen Denney and Bernd Fischer USRA/RIACS, NASA Ames Research Center, Moffett Field, CA 94035, USA {edenney,fisch}@email.arc.nasa.gov
Systems Integration: Co C mp m onent- t bas a e s d s o s ftw ft a w r a e r e ngin i eeri r n i g
Systems Integration: Component-based software engineering Objectives To explain that CBSE is concerned with developing standardised components and composing these into applications To describe components
Software testing. Objectives
Software testing cmsc435-1 Objectives To discuss the distinctions between validation testing and defect testing To describe the principles of system and component testing To describe strategies for generating
Formal Verification Problems in a Bigdata World: Towards a Mighty Synergy
Dept. of Computer Science Formal Verification Problems in a Bigdata World: Towards a Mighty Synergy Matteo Camilli [email protected] http://camilli.di.unimi.it ICSE 2014 Hyderabad, India June 3,
A Business Process Services Portal
A Business Process Services Portal IBM Research Report RZ 3782 Cédric Favre 1, Zohar Feldman 3, Beat Gfeller 1, Thomas Gschwind 1, Jana Koehler 1, Jochen M. Küster 1, Oleksandr Maistrenko 1, Alexandru
Overview of the TACITUS Project
Overview of the TACITUS Project Jerry R. Hobbs Artificial Intelligence Center SRI International 1 Aims of the Project The specific aim of the TACITUS project is to develop interpretation processes for
UML-based Test Generation and Execution
UML-based Test Generation and Execution Jean Hartmann, Marlon Vieira, Herb Foster, Axel Ruder Siemens Corporate Research, Inc. 755 College Road East Princeton NJ 08540, USA [email protected] ABSTRACT
How To Develop A Static Analysis System For Large Programs
Towards the Industrial Scale Development of Custom Static Analyzers John Anton, Eric Bush, Allen Goldberg, Klaus Havelund, Doug Smith, Arnaud Venet Kestrel Technology LLC 4984 El Camino Real #230 Los Altos,
Formal Languages and Automata Theory - Regular Expressions and Finite Automata -
Formal Languages and Automata Theory - Regular Expressions and Finite Automata - Samarjit Chakraborty Computer Engineering and Networks Laboratory Swiss Federal Institute of Technology (ETH) Zürich March
How To Test Automatically
Automated Model-Based Testing of Embedded Real-Time Systems Jan Peleska [email protected] University of Bremen Bieleschweig Workshop 7 2006-05-05 Outline Technologie-Zentrum Informatik Objectives Basic concepts
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science Program Schedule CTech Computer Science Credits CS101 Computer Science I 3 MATH100 Foundations of Mathematics and
AP Computer Science AB Syllabus 1
AP Computer Science AB Syllabus 1 Course Resources Java Software Solutions for AP Computer Science, J. Lewis, W. Loftus, and C. Cocking, First Edition, 2004, Prentice Hall. Video: Sorting Out Sorting,
Ontology and automatic code generation on modeling and simulation
Ontology and automatic code generation on modeling and simulation Youcef Gheraibia Computing Department University Md Messadia Souk Ahras, 41000, Algeria [email protected] Abdelhabib Bourouis
TECH. Requirements. Why are requirements important? The Requirements Process REQUIREMENTS ELICITATION AND ANALYSIS. Requirements vs.
CH04 Capturing the Requirements Understanding what the customers and users expect the system to do * The Requirements Process * Types of Requirements * Characteristics of Requirements * How to Express
Run-time Variability Issues in Software Product Lines
Run-time Variability Issues in Software Product Lines Alexandre Bragança 1 and Ricardo J. Machado 2 1 Dep. I&D, I2S Informática Sistemas e Serviços SA, Porto, Portugal, [email protected] 2 Dep.
Parametric Attack Graph Construction and Analysis
Parametric Attack Graph Construction and Analysis Leanid Krautsevich Department of Computer Science, University of Pisa Largo Bruno Pontecorvo 3, Pisa 56127, Italy Istituto di Informatica e Telematica,
GEDAE TM - A Graphical Programming and Autocode Generation Tool for Signal Processor Applications
GEDAE TM - A Graphical Programming and Autocode Generation Tool for Signal Processor Applications Harris Z. Zebrowitz Lockheed Martin Advanced Technology Laboratories 1 Federal Street Camden, NJ 08102
Automated Program Behavior Analysis
Automated Program Behavior Analysis Stacy Prowell [email protected] March 2005 SQRL / SEI Motivation: Semantics Development: Most engineering designs are subjected to extensive analysis; software is
PROPERTECHNIQUEOFSOFTWARE INSPECTIONUSING GUARDED COMMANDLANGUAGE
International Journal of Computer ScienceandCommunication Vol. 2, No. 1, January-June2011, pp. 153-157 PROPERTECHNIQUEOFSOFTWARE INSPECTIONUSING GUARDED COMMANDLANGUAGE Neeraj Kumar Singhania University,
Axiomatic design of software systems
Axiomatic design of software systems N.P. Suh (1), S.H. Do Abstract Software is playing an increasingly important role in manufacturing. Many manufacturing firms have problems with software development.
Configuration Management Models in Commercial Environments
Technical Report CMU/SEI-91-TR-7 ESD-9-TR-7 Configuration Management Models in Commercial Environments Peter H. Feiler March 1991 Technical Report CMU/SEI-91-TR-7 ESD-91-TR-7 March 1991 Configuration Management
Adversary Modelling 1
Adversary Modelling 1 Evaluating the Feasibility of a Symbolic Adversary Model on Smart Transport Ticketing Systems Authors Arthur Sheung Chi Chan, MSc (Royal Holloway, 2014) Keith Mayes, ISG, Royal Holloway
Deriving Secure Network Protocols for Enterprise Services Architectures
1 Deriving Secure Network Protocols for Enterprise Services Architectures Matthias Anlauff, Dusko Pavlovic, and Asuman Suenbuel Kestrel Institute SAP Research Labs 3260 Hillview Avenue 3175 Deer Creek
Object-Oriented Software Specification in Programming Language Design and Implementation
Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama
Bootstrapping Big Data
Bootstrapping Big Data Ariel Kleiner Ameet Talwalkar Purnamrita Sarkar Michael I. Jordan Computer Science Division University of California, Berkeley {akleiner, ameet, psarkar, jordan}@eecs.berkeley.edu
To introduce software process models To describe three generic process models and when they may be used
Software Processes Objectives To introduce software process models To describe three generic process models and when they may be used To describe outline process models for requirements engineering, software
Enforcing Data Quality Rules for a Synchronized VM Log Audit Environment Using Transformation Mapping Techniques
Enforcing Data Quality Rules for a Synchronized VM Log Audit Environment Using Transformation Mapping Techniques Sean Thorpe 1, Indrajit Ray 2, and Tyrone Grandison 3 1 Faculty of Engineering and Computing,
The ProB Animator and Model Checker for B
The ProB Animator and Model Checker for B A Tool Description Michael Leuschel and Michael Butler Department of Electronics and Computer Science University of Southampton Highfield, Southampton, SO17 1BJ,
SysML Modelling Language explained
Date: 7 th October 2010 Author: Guillaume FINANCE, Objet Direct Analyst & Consultant UML, the standard modelling language used in the field of software engineering, has been tailored to define a modelling
SYNTACTIC THEORY FOR BIGRAPHS
SYNTACTIC THEORY FOR BIGRAPHS Troels C. Damgaard ([email protected]) Joint work with Lars Birkedal, Arne John Glenstrup, and Robin Milner Bigraphical Programming Languages (BPL) Group IT University of Copenhagen
2. MOTIVATING SCENARIOS 1. INTRODUCTION
Multiple Dimensions of Concern in Software Testing Stanley M. Sutton, Jr. EC Cubed, Inc. 15 River Road, Suite 310 Wilton, Connecticut 06897 [email protected] 1. INTRODUCTION Software testing is an area
Planning and Scheduling in Manufacturing and Services
Michael L. Pinedo Planning and Scheduling in Manufacturing and Services Second edition 4y Springer Preface Contents of CD-ROM vii xvii Part I Preliminaries 1 Introduction 3 1.1 Planning and Scheduling:
Software Architecture
Cairo University Faculty of Computers and Information Computer Science Department Premasters Studies Software Architecture Report on Software Product Line Submitted to: Dr. Hany Ammar Submitted by: Hadeel
Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1
The Role of Programming in Informatics Curricula A. J. Cowling Department of Computer Science University of Sheffield Structure of Presentation Introduction The problem, and the key concepts. Dimensions
VDM vs. Programming Language Extensions or their Integration
VDM vs. Programming Language Extensions or their Integration Alexander A. Koptelov and Alexander K. Petrenko Institute for System Programming of Russian Academy of Sciences (ISPRAS), B. Communisticheskaya,
Formal Verification of Software
Formal Verification of Software Sabine Broda Department of Computer Science/FCUP 12 de Novembro de 2014 Sabine Broda (DCC-FCUP) Formal Verification of Software 12 de Novembro de 2014 1 / 26 Formal Verification
Software Engineering from an Engineering Perspective: SWEBOK as a Study Object
Software Engineering from an Engineering Perspective: SWEBOK as a Study Object Alain Abran a,b, Kenza Meridji b, Javier Dolado a a Universidad del País Vasco/Euskal Herriko Unibertsitatea b Ecole de technologie
Certifying the Security of Android Applications with Cassandra
1 15 th International School on Foundations of Software Security and Design August 31 st, 2015, Bertinoro Certifying the Security of Android Applications with Cassandra Steffen Lortz, Heiko Mantel, David
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Jieh Hsiang Department of Computer Science State University of New York Stony brook, NY 11794
ASSOCIATIVE-COMMUTATIVE REWRITING* Nachum Dershowitz University of Illinois Urbana, IL 61801 N. Alan Josephson University of Illinois Urbana, IL 01801 Jieh Hsiang State University of New York Stony brook,
