Download presentation
Presentation is loading. Please wait.
Published byLydia Rogers Modified over 8 years ago
1
Course: Software Engineering – Design I IntroductionSlide Number 1 What is a specification Description of a (computer) system, which: is precise; defines the behaviour of the system; (what, not how) requires an understanding of the problem; (why) has formal semantics and reasoning laws. (quality & correctness)
2
Course: Software Engineering – Design I IntroductionSlide Number 2 Specification as Precision Comes before any coding. Expresses the behaviour of the system. Uses formal languages that need not be executable. Facilitates formal analysis of the system. Specifying is different from programming
3
Course: Software Engineering – Design I IntroductionSlide Number 3 What, not how A role for specifications: to make precise what the system has to achieve when used Spec (“what”)Code (“how”) sqrt: float float pre: x 0 post: sqrt(x) 0 | sqrt(x) 2 - x | < epsilon Apply the Newton-Raphson method.
4
Course: Software Engineering – Design I IntroductionSlide Number 4 Specification as understanding Specifying includes capturing requirements: coming to understand what the customer wants. Requirements Not fully defined by the user. Written in prose descriptions. Not well structured and with repetitions. Specifications Formally define key understanding (“why”). Provides better structured documents (with no repetitions). Support software maintenance.
5
Course: Software Engineering – Design I IntroductionSlide Number 5 Quality & Correctness Specification brings together quality software and correctness. Quality software: Building the right system: (system fits its purposes) Correctness: Building the system right: (system conforms with the specs) Formal semantics and reasoning laws
6
Course: Software Engineering – Design I IntroductionSlide Number 6 When are specifications useful Specifications help identifying appropriate solutions, prior to any implementation. Novel systems: Specifications help defining a solution not easily identifiable via guessing and testing. Difficult systems: Specifications help proving that the system will achieve the promised behaviour before implementing it. Critical systems:
7
Course: Software Engineering – Design I IntroductionSlide Number 7 How can we use specifications? Modelling As mathematical models to describe and predict the intended behaviour of the system. It helps focusing on some aspects of the system, leaving out inessential details. Design To support constructive approaches to design (e.g., “bottom-up”). Specifications would provide a description of what each building block does and enable us to calculate how the whole system will behave once the blocks are combined. Verification To show that the final system does what we intend. Construct formal proofs, based on specification and program test, to show that the system satisfies its specification requirements.
8
Course: Software Engineering – Design I IntroductionSlide Number 8 A formal language Z is one of the languages commonly used for writing specifications. It contains a lot of special-purpose notation. We will borrow some good notational ideas from Z and apply to conventional logic. Result To be able to write specifications that look like Z specifications, without being correct Z. But Formal logical notation is not clever per se. It can be only useful if accompanied with a good understanding of the underlying problem.
9
Course: Software Engineering – Design I IntroductionSlide Number 9 Summary Specification is understanding the problem and writing it down clearly, answering to “why” and “what” questions, reasoning about the system. It is useful for modelling and validation, design, verification.
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.