Sti Lessons

Only available on StudyMode
  • Download(s): 72
  • Published: March 24, 2013
Read full document
Text Preview
Formal Methods
Modern software development inevitably requires the design and analysis of a number of different artifacts. Formal methods allow the mathematically precise formulation of some of these artifacts. For instance, formulas in predicate logic capture operational requirements, state machines describe the behaviour of code fragments and protocols, and object models capture static designs. The advantage of using these formal notations is that they typically improve the overall quality of the artifacts by removing ambiguities and imprecisions, and enabling automatic analyses that establish desirable properties or uncover undesirable properties. Consequently, the use of formal methods is indicated in domains in which the software has to meet very high quality standards and failure cannot be tolerated such as air-traffic control. Moreover, the abstraction and automation capabilities of some formal techniques present a powerful weapon against the ever-increasing complexity of software. Indeed, in Model-Driven Development (MDD), a development methodology advocated by, for instance, the OMG and IBM, formal models of the software and its requirements form the primary artifacts from which the code is automatically generated.\ Every software engineering methodology is based on a recommended development process * proceeding through several phases:

* Requirements, Specification, Design
* Coding, Unit Testing
* Integration and System Testing, Maintenance

Formal methods can
* Be a foundation for designing safety critical systems * Be a foundation for describing complex systems
* Provide support for program development

Formal Specification Process Model
* Clarify requirements and high level design
* Articulate implicit assumptions
* Identify undocumented or unexpected assumptions
* Expose defects
* Identify exceptions
* Evaluate test coverage

There are four Formal Specification Methods:
1. Formal Specification : The translation of non-mathematical description (diagrams, table, natural language) into a formal specification language. It represents a concise description of high-level behavior and properties of a system, and a well-defined language semantics support formal deduction about the specification Types of Formal Specification:

* Model Oriented: Construct a model of the system behavior using mathematical objects like sets, sequences etc. * Statecharts, SCR, VDM, Z
* Petri Nets, CCS, CSP, Automata theoretic models
* Property Oriented: Use a set of necessary properties to describe system behavior, such as axioms, rules etc. * Algebraic semantics
* Temporal logic models.

2. Formal Proofs : Proof is an essential part of specification. Proofs are constructed as a series of small steps, each of which is justified using a small set of rules. Proofs can be done manually, but usually constructed with some automated assistance

3. Model Checking : A technique relies on building a finite model of a system and checking that a desired property holds in that model Two general approaches
* temporal model checking
* automaton model checking

4. Abstraction : Representation of the program using a smaller model It allows you to focus on the most important central properties and characteristics, and getting the right level of abstraction is very important in a specification. Verification Method

Verification refers to a set of activities that ensure that software correctly implements a specific function. "Are we building the product right?" "Confirmation by examination and provisions of objective evidence that specified requirements have been fulfilled." Using the above definitions in software development, validation, in its simplest terms, is the demonstration that the software implements each of the software requirements correctly and completely. In other words, the "right...
tracking img