52 research outputs found
apis 1 -Automatic Production of Information Systems
The objective of the apis research project is to develop a case tool that generates executable information systems (IS) from formal specifications (abstract models). In other words, apis aims at automating as much as possible the production of IS by lifting the level of abstraction at which software designers work. Instead of spending most of their time designing, programming and testing at a very low level of abstraction, software designers will be able to concentrate on specifying and validating; the apis case tool will take care of generating an executable system from the specification. The foundations of the case tool are abstract models of IS (formal functional specifications) and algorithms that generates an executable system from these models (modelbased interface development environment -MB-IDE), and specification interpretation. The apis project has to a) define a comprehensive set of integrated models for information systems, b) develop new algorithms for specification interpretation and code generation, and c) implement them in a case tool. The eb 3 specification language will be the foundation for the models The apis project will be the first to study the automation of information systems production from formal specifications. The success of the apis project would represent a significant breakthrough in terms of productivity and quality in IS development. apis could cut up to 50 % of the cost of IS development, because it would relieve software designers from design, programming and testing. Consequently, it would also avoid faults introduced during these activities. Background and Related Work Information Systems IS are generally characterized by large data structures which are modified or queried by several users in concurrency. The difficulty of these systems typically resides in managing complex relationships between data structures, in complex calculations involving several data structures, in processing large volume of data, and in preserving data integrity through concurrent updates by several users. IS typically have little hard real-time constraints or interprocess communication. An IS can be decomposed in three parts: i) the functional behavior (also called business logic), ii) the user interface , and iii) the database. The functional behavior defines the transactions of the system, which are of two types: a) update transactions modify the internal state of the system which is stored in a database, b) inquiry transactions display information about the system state (database). The recent technological developments in IS mostly apply to the programming phase. Database management systems (DBMS), key elements of IS, now offer sophisticated distribution and concurrency control mechanisms, support very large databases, and offer sophisticated querying facilities. Technical breakthroughs like INTERNET, JAVA, CORBA, COM, EJB, frameworks and others make it easier to program distributed information systems or deploy them on the web on various platforms. Some DBMS case tools can generate forms to update-modify-delete records in a table, but this is insufficient to build a real GUI for an information system. 1 Egyptian mythology -a god depicted as a bull, symbolizing fertility and strength in war [OED]. Drawings by Pablo Picasso, 1945
Generic programming in the mCRL2 toolset
The mCRL2 tool set [GKM+08] is a tool set for verification and validation of concurrent processes, based on process algebra speci??cations. The mCRL2 language is based on the Algebra of Communicating Processes (ACP), which is extended to include data and time. This paper reports on experiences with generic programming in C++ as applied in the implementation of the tool set. C++ concepts, a type system for templates [RS06], form a key ingredient of this style of programming. Using concept definitions, requirements on template types can be defined that are type checked during compile time. The main benefits for the mCRL2 tool set are uniform and exible interfaces that operate on well-defined types, and a signi??cant increase in code reuse. The use of concepts also promotes the writing of code that corresponds closely to pseudo code, since the chosen concepts correspond naturally with domain specific concepts. This will be illustrated by a simple use case, namely substitution functions. Generic programming is about generalizing software components, to enable reuse in a wide variety of situations. In C++, generic programming is enabled using templates. C++ concepts are proposed as a means to type check template types. A concept is a set of requirements (valid expressions, associated types, semantic invariants, complexity guarantees, and so on) that a type must fulfill to be correctly used as an argument in a call to a generic algorithm, see [RS06]. Language support for concepts has been proposed [GJS+06] for the next version of the C++ standard, C++0x. Concepts will be used to make the specification of the C++ standard library more complete and precise. A derivative of the GNU C++ compiler [Gre08] already implements language support for concepts. In the mCRL2 tool set we have used a portable library for concept checking. Most uses of generic programming in general, and more specifically the use of concepts, that are described in the literature treat the construction of data structures and algorithms that operate on these, see e.g. [GL05]
Experience in developing the mCRL2 toolset
mCRL2 is a language with a toolset for formal analysis of behaviour of concurrent systems. It is developed in an academic research group to support process algebra based verification in an academic as well as an industrial setting. This paper provides an insight into the experiences and practises in developing and maintaining the mCRL2 toolset
- âŠ