This preview shows pages 1–2. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: Formal Methods There are two key issues when building software systems: 1. Validation are we building the right product? 2. Verification are we building the product right? Validation is done during requirements analysis with the feedback of the customer. Verification is done during testing of the product. Rigorous testing needs working code in order to run test cases. But we have also seen that even with testing we will never be able to prove the absence of bugs. Therefore, for sensitive systems, particularly where human lives are at stake we need something else => Formal Methods. A formal methods approach to software design implies writing a product specification in some formal notation such as first order logic. This in turn implies that the formal specification has a mathematical semantics or interpretation which allows us to rigorously inspect the specification for clarity (unique interpretation of each statement) and consistency (no contradictory statements). In addition, due to the mathematical nature of formal specification we can actually prove system properties to hold. For example we can formally show that a system will behave in a certain way given a particular class of inputs. This goes well beyond what test cases can do....
View Full Document
- Spring '11
- Computer Science