Software development with formal methods




















Such techniques are time-intensive and less than perfect; it isn't unusual for a published proof to contain a flaw. Given the cost and time requirements of systems engineering, traditional proving techniques are not really applicable. Because of the costs of hand verification, most formal methods use automated theorem proving systems to verify their designs. Automated theorem provers are best described as mathematical CAD tools: they can prove simple propositions and automatically and provide assistance for verifying more complex theorems.

Formal methods offer additional benefits outside of provability, and these benefits do deserve some mention. However, most of these benefits are available from other systems, and usually without the steep learning curve that formal methods require. The discipline involved in formal specification has proved useful even on already existing systems.

Engineers using the PVS system, for example, reported identifying several microcode errors in one of their microprocessor designs. An excellent example comes from SML. Handling side effects and other aberrancies are a requirement for any system involving input, network operations or other systems which require interrupts, meaning that SML's model is, to some extent, broken. The lightweight approach to formal design recognizes that formal methods are not a panacea: there are areas where formal methods are useful, and areas where a formal specification will accomplish nothing.

In a lightweight design, formal methods are used in specific locations, and different formal methods may be used in different subsystems, ideally playing to the strengths of each method [Easterbrook 98]. In such a system, Petri Nets might be used to describe the communications protocol, and a LARCH system might be used to model the data storage.

For other parts of the system, formal specifications might be avoided entirely: for example, the user interface may be refined using a rapid prototyping system and client interviews. The lightweight approach is a traditional engineering compromise, and there is a tradeoff.

As formal methods become more common, engineers will have to learn type theory, modern algebra and proof techniques. Ultimately, engineers will have to think more like mathematicians. While formal systems are attractive in theory, their practical implementations are somewhat wanting. By attempting to describe all of any system, formal methods have overreached, and generally failed.

The lightweight approach, which provides a compromise between the necessities of engineering and the goals of formal design, provides a good compromise and is the most productive route for future research. I'd like to look into the lightweight approach some more, and see if it was possible to quantify the design schemes used in a large scale project. On successful completion of the course the student will be able to: Knowledge and understanding. This is a joint course of Chalmers and the University of Gothenburg.

Accordingly, it has two course plans:. In addition to the two obligatory lab hand-in assignments, the course is examined via individual, oral examination of 30 min per student. During the 30 minutes, numerous selected topics from the course will be discussed. Frequent context switch is therefore inevitable and should be expected. Questions by the teacher will be of varying nature, ranging from very concrete questions where the expected answer is a concrete solution or some steps of a concrete solution, until we switch context , to questions where the expected answer shows high level understanding.

In all cases, the teacher will help the student to meet the expected level of detail in the answer. In general, all topics that were discussed in the lectures and exercises can be subject to questions in the examination.

There are a few restrictions, however. Those are described below. Questions related to the lab assignment are also possible, but will not be the focus. The syllabus page shows a table-oriented view of course schedule and basics of course grading. You can add any other comments, notes or thoughts you have about the course structure, course policies or anything else. Jump to today. Course purpose The aim of this course is to teach knowledge and skills in, and judgement about, two important styles of formal methods for reasoning about software: model checking and deductive verification.

Schedule TimeEdit Course literature The course does not have mandatory literature. However, the following literature can support very well the learning: For the first part we partly use the book Principles of the Spin Model Checker , mostly Chapters Holzman A comprehensive book on model checking is Principles of Model Checking by Baier and Katoen Logic: There are many good books on first-order logic.

Note who is mentioned in the acknowledgements for the second edition. First-order logic with Java-style types as discussed in the second part of the course is described in depth in Chapter 2 of Deductive Software Verification - The KeY Book. Course design Formal Methods is a generic term for system design, analysis, and implementation methods that are described and used with mathematical rigor.

Choice of programming language is irrelevant. B is an example of formal method techniques that covers the whole development life-cycle. It divides software onto separated components that further represent as Abstract Machines. These are further subject to stepwise refinement and proof obligation evaluation.

This consists of verification of invariant preservation and refinement correctness. The B method is a widely-cited technique in scientific publications concerning formal method implementation. Notably, it is used in the specification for transport automation systems in Paris and Sao Paulo, by Siemens Transportation Systems. This model represents the CRM software Customer Relationship Management to keep track of the current state of relationships.

Its task is to improve user enrolment, user satisfaction rate and member retention. Z notation is a model-based, abstract formal specification technique most compatible with object-oriented programming. Z defines system models in the form of states where each state consists of variables, values and operations that change from one state to another. As opposed to the usability of B, which is involved in full development life-cycle, Z formalises a specification of the system at the design level.

Event-B is an advanced implementation of the B method. Using this approach, formal software specification is the process of creating a discrete model that represents a specific state of the system. The state is an abstract representation of constants, variables and transitions events. Part of an event is the guard that determines the condition for the transition to another other state to take place. Constructed models blueprints are a further subject of refinement, proof obligation and decomposition for the correctness of verification.

Formal methods find use in some real-life-saving systems.



0コメント

  • 1000 / 1000