Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.

Slides:



Advertisements
Similar presentations
Formal Methods and Testing Goal: software reliability Use software engineering methodologies to develop the code. Use formal methods during code development.
Advertisements

.NET Technology. Introduction Overview of.NET What.NET means for Developers, Users and Businesses Two.NET Research Projects:.NET Generics AsmL.
Addressing the Challenges of Current Software. Questions to Address Why? What? Where? How?
25 February 2009Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department.
Kellan Hilscher. Definition Different perspectives on the components, behavioral specifications, and interactions that make up a software system Importance.
Object-Oriented Software Development CS 3331 Fall 2009.
Chapter 4 Quality Assurance in Context
LIFE CYCLE MODELS FORMAL TRANSFORMATION
Software system modeling
Software Reliability CIS 640 Adapted from the lecture notes by Doron Pelel (
1 Formal Methods in SE Qaisar Javaid Assistant Professor Lecture 05.
Introduction to Software Engineering Dr. Basem Alkazemi
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 18 Program Correctness To treat programming.
Fundamentals of Information Systems, Second Edition
From Module Breakdown to Interface Specifications Completing the architectural design of Map Schematizer.
Chapter 1 Principles of Programming and Software Engineering.
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Department of Computer Science & Engineering College of Engineering Dr. Betty H.C. Cheng, Laura A. Campbell, Sascha Konrad The demand for distributed real-time.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 10 Slide 1 Formal Specification.
1 CMPT 275 Software Engineering Requirements Analysis Process Janice Regan,
Introduction to Software Testing
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 10 Slide 1 Critical Systems Specification 3 Formal Specification.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 10 Slide 1 Formal Specification.
Data Structures and Programming.  John Edgar2.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
PROGRAMMING LANGUAGES The Study of Programming Languages.
1 ICS 122: Software Specification and Quality Engineering Spring 2002Lecturers: H. Muccini and D. J. Richardson Lecture 13: Summary The three aspects:
Chapter 4 – Requirements Engineering
An Introduction to Programming and Object-Oriented Design Using Java By Jaime Niño and Fred Hosch Slides by Darwin Baines and Robert Burton.
المحاضرة الثالثة. Software Requirements Topics covered Functional and non-functional requirements User requirements System requirements Interface specification.
Software Models (Cont.) 9/22/2015ICS 413 – Software Engineering1 -Component-based software engineering -Formal Development Model.
Understand Application Lifecycle Management
Software Testing Course Shmuel Ur
CSCI-383 Object-Oriented Programming & Design Lecture 1.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
The Program Development Cycle
Overview of Formal Methods. Topics Introduction and terminology FM and Software Engineering Applications of FM Propositional and Predicate Logic Program.
WXGE6103 Software Engineering Process and Practice Formal Specification.
1 Introduction to Software Engineering Lecture 1.
A Static Approach to Consistency Verification of UML Models Andrea Baruzzo Department of Computer Science University of Udine MoDeV.
Fundamentals of Information Systems, Second Edition 1 Systems Development.
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
Experiences from Representing Software Architecture in a Large Industrial Project Using Model Driven Development Andres Mattsson 1 Björn Lundell 2 Brian.
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1.
Formal Methods.
Seven Myths of Formal Methods - by Anthony Hall, Praxis Systems Presented by Shanmughapriya Senthil.
Formal Methods in Software Engineering Credit Hours: 3+0 By: Qaisar Javaid Assistant Professor.
1 Levent Yilmaz COMP7730: Formal Methods in Software Engineering.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Science and Technology Norwegian University of NTNU Rolv Bræk, January Introduction to Systems Engineering by Rolv Bræk NTNU.
1 Software Requirements Descriptions and specifications of a system.
Cs498dm Software Testing Darko Marinov January 24, 2012.
Principles of Programming & Software Engineering
Chapter 2 Object-Oriented Paradigm Overview
Formal Specification.
Computer Aided Software Engineering (CASE)
Principles of Programming and Software Engineering
Software Design Methodology
Programming Languages 2nd edition Tucker and Noonan
Chapter 1 Introduction(1.1)
A GUI Based Aid for Generation of Code-Frameworks of TMOs
Subject Name: SOFTWARE ENGINEERING Subject Code:10IS51
Programming Languages 2nd edition Tucker and Noonan
UML Design for an Automated Registration System
Presentation transcript:

Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction

Formal Methods in Software Engineering2 Introduction  Software Reliability  Formal Methods  Overview of the Course  Summary

Formal Methods in Software Engineering3 Software matters …  Software is one of the most complex man made artifacts.  Windows NT has about 16 million lines of code  Software controls many aspects of our lives  Daily life: banking, telephone, s  Safety-critical environments: medical devices, space shuttles, ballistic missiles, nuclear plants  Software failure can cause severe consequences  Loss of investments, environmental damage, and even loss of human life

Formal Methods in Software Engineering4 Software Reliability  In safety-critical environment, reliability is a top concern  More than 70% effort spent on quality assurance for safety-critical software development  Priority is also changing for less critical applications  As the software industry matures, reliability is replacing features as the distinguishing factor  Microsoft is launching a trustworthy computing campaign to improve the reliability of Windows & its applications.

Formal Methods in Software Engineering5 From your perspective …  Everyone can write software, but not everyone can write “good” software!  There is no lack of programmers, but only “good” programmers.  Software is what you will be building after graduation.  Your job performance depends on your ability to write “reliable” software

Formal Methods in Software Engineering6 Introduction  Software Reliability  Formal Methods  Overview of the Course  Summary

Formal Methods in Software Engineering7 What are formal methods?  Formal methods are a collection of notations and techniques for describing and analyzing systems in a rigorous manner.  In other words, formal methods view programs and their execution as mathematical objects and apply mathematical techniques to specify and analyze their properties and behaviors.

Formal Methods in Software Engineering8 Why use formal methods?  force one to think about issues in a systematic way.  Leads to better design  Earlier detection of inconsistencies and flaws  remove ambiguity in requirement and design.  Makes it possible to automatically reason the properties and behavior of software systems.  Provides precise documentation within a team of developers  help to remove bugs in the implementation

Formal Methods in Software Engineering9 How to use formal methods? Formal methods can be used in almost every stage of a software development project:  Requirements can be formally specified to obtain a precise description of the system properties.  Designs can be formally verified to prevent bugs in them from entering implementations.  Test cases can be generated from formal spec. and design.  Formal spec. and design can also be used to facilitate software maintenance.

Formal Methods in Software Engineering10 Misconceptions  Formal methods can be used only by mathematicians  Using formal methods will slow down projects  The verification process itself is prone to errors, so why bother at all?  Testing is the only method used in practice.

Formal Methods in Software Engineering11 The truth  Formal methods are based on some math, but the user does not have to care.  Early discovery of bugs can often speed up the project.  The use of formal methods can reduce errors, if it cannot eliminate them.  In many domains, formal verification and testing methods are used together.

Formal Methods in Software Engineering12 The reality In reality, the use of formal methods is spotty, due to several factors:  Formal methods are relatively new.  Some of the methods are suggested only recently.  The benefits of formal methods are often discounted under tight deadlines.  Research in this area has focused on improving expressiveness and efficiency, while neglecting human interface issues.

Formal Methods in Software Engineering13 Research questions  How to minimize the human intervention?  How to increase the scalability of formal methods?  Are there good heuristics that work better than standard methods in many practical cases?  What is the common notation used by software developers? How to integrate it?

Formal Methods in Software Engineering14 Introduction  Software Reliability  Formal Methods  Overview of the Course  Summary

Formal Methods in Software Engineering15 The overall structure  We will emphasize “strong formal methods”, i.e., formal methods with tool-supported semantic analysis.  Topics covered in this course include Model Driven Architecture, Design by Contract, Temporal Logic, Büchi Automata, Model Checking, and so on.  These topics are embedded into three modules: The Object Constraint Language (OCL), Java Modeling Language (JML) and The SPIN Model Checker.

Formal Methods in Software Engineering16 OCL (1) OCL, often used in conjunction with UML, is a language that can add necessary and vital information about the object-oriented models and other artifacts. One beneficial feature of OCL is that it has a mathematical foundation but maintains the easy of use of natural languages.

Formal Methods in Software Engineering17 OCL (2) Flight Flightnr: Integer availableSeats() : Integer Airplane numOfSeats: Integer 0.. *1 flightsplane Person name: String 0.. * flights passengers In reality, the number of passengers will be restricted to the number of seats available on the airplane. Can we express this restriction in the diagram? context Flight inv: passengers -> size () <= plane.numOfSeats

Formal Methods in Software Engineering18 JML (1) JML is a notation for formally specifying the behavior and interfaces of Java classes and methods. JML specifications can be used to aid reasoning about the correctness of Java programs as well as help debugging and testing of these programs.

Formal Methods in Software Engineering19 JML (2) package org.jmlspecs.samples.jmlrefman; public abstract class IntHeap { public model non_null int [] elements; public requires elements.length >= assignable ensures == (\max int 0 <= j && j < public abstract int largest(); ensures \result == elements.length; public abstract int size(); };

Formal Methods in Software Engineering20 SPIN Model checking involves checking desired properties over a system (or a model of the system) by searching through its state space. SPIN is one of the most widely used tools for software model checking. It is particularly suited for checking concurrent software.

Formal Methods in Software Engineering21 Introduction  Software Reliability  Formal Methods  Overview of the Course  Summary

Formal Methods in Software Engineering22 Summary (1)  Reliability has always been a primary concern in a responsible software development process.  Formal methods use logical and mathematical techniques to specify and analyze the behavior of software systems.  Formal methods can be used to improve software development at all stages, including requirements analysis, design, coding, testing and maintenance.

Formal Methods in Software Engineering23 Summary (2)  This course covers formal specification and verification, both at the design and coding level.  The topics of this course are embedded into three modules: (1) OCL; (2) JML ; (3) SPIN.