CML: C Modeling Language

Non-functional requirements such as performance, program size, and en- ergy consumption significantly affect the quality of software systems. Small devices like PDAs and mobile phones have little memory, slow processors, and energy constraints. The C programming language has been the choice of many programmers when devel- oping application for small devices. On the other hand, the need for functional software correctness has derived several specification languages that adopt the Design by Con- tract (DBC) technique. In this work we propose a specification language for C, called CML (C Modeling Language), focused on non-functional requirements. CML is inspired on the Design By Contract technique. An additional contribution is a verification tool for hard real-time systems. The tool is the first application developed for CML. The practical usage of CML is presented through a case study, which is a real application for a vehicle monitoring system.

[1]  Patrice Godefroid,et al.  Partial-Order Methods for the Verification of Concurrent Systems , 1996, Lecture Notes in Computer Science.

[2]  Pao-Ann Hsiung,et al.  Extended quasi-static scheduling for formal synthesis and code generation of embedded software , 2002, CODES '02.

[3]  Yoonsik Cheon,et al.  A Runtime Assertion Checker for the Java Modeling Language (JML) , 2003, ICSE 2003.

[4]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[5]  James M. Purtilo,et al.  Software Specification: A Comparison of Formal Methods , 1995 .

[6]  Natarajan Shankar,et al.  PVS: A Prototype Verification System , 1992, CADE.

[7]  Hendrik Tews,et al.  Reasoning about Java Classes (Preliminary Report) , 1998, Conference on Object-Oriented Programming Systems, Languages, and Applications.

[8]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[9]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[10]  Michael D. Ernst,et al.  An overview of JML tools and applications , 2003, International Journal on Software Tools for Technology Transfer.

[11]  Sérgio Soares,et al.  Concurrency Manager , 2001 .

[12]  James C. Corbett,et al.  A Language Framework for Expressing Checkable Properties of Dynamic Software , 2000, SPIN.

[13]  Paulo Romero Martins Maciel,et al.  A Time Petri Net Based Approach for Embedded Hard Real-Time Software Synthesis with Multiple Operational Modes , 2005, 2005 18th Symposium on Integrated Circuits and Systems Design.

[14]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

[15]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[16]  Heike Wehrheim,et al.  Jass - Java with Assertions , 2001, RV@CAV.

[17]  Jeannette M. Wing A specifier's introduction to formal methods , 1990, Computer.

[18]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[19]  P. Merlin,et al.  Recoverability of Communication Protocols - Implications of a Theoretical Study , 1976, IEEE Transactions on Communications.

[20]  D. Parnas,et al.  On satisfying timing constraints in hard-real-time systems , 1991, SIGSOFT '91.

[21]  Greg Nelson,et al.  Extended static checking for Java , 2002, PLDI '02.