When, What, Why create system and software models

Slides:



Advertisements
Similar presentations
McIlraith, KSL Stanford April 11, 2003 Semantics Web Services Language: Scope and Objectives Sheila McIlraith Knowledge Systems Lab, Stanford University.
Advertisements

Why Use Test Driven Development (TDD)?.  Why the need to change to TDD.  Talk about what TDD is.  Talk about the expectations of TDD.
LIFE CYCLE MODELS FORMAL TRANSFORMATION
Engineering Secure Software. Does Security Even Matter?  At your table, introduce yourselves: Your name, degree, & app domain What is your favorite software.
Educational Outcomes: The Role of Competencies and The Importance of Assessment.
Stepan Potiyenko ISS Sr.SW Developer.
Effective Software Engineering Pedagogy By Evelyn Stiller and Cathie LeBlanc Plymouth State College.
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
CSCE 548 Secure Software Development Risk-Based Security Testing.
Chapter 2 The process Process, Methods, and Tools
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
Project Tracking. Questions... Why should we track a project that is underway? What aspects of a project need tracking?
Feasibility Study.
1 The Do’s and Don’ts of Software Process Improvement Steve Chenoweth, RHIT.
Overview of Formal Methods. Topics Introduction and terminology FM and Software Engineering Applications of FM Propositional and Predicate Logic Program.
Intent Specification Intent Specification is used in SpecTRM
Formal Methods in Software Engineering
COM606 Software Process Engineering and on the Portal Introduction.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
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.
Software Debugging, Testing, and Verification Presented by Chris Hundersmarck November 10, 2004 Dr. Bi’s SE516.
Configuration Management and Change Control Change is inevitable! So it has to be planned for and managed.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
Industrial Avionics Working Group 18/04/07 The Relationship Between the Design and Safety Domains in IAWG Modular Certification Part 2: Completeness of.
Software Engineering I. Introduction to Software Engineering Software models Formal Specification using ASML (Abstract State Machines Language) Software.
Course: Software Engineering – Design I IntroductionSlide Number 1 What is a specification Description of a (computer) system, which:  is precise;  defines.
Computer Science: A Structured Programming Approach Using C1 Objectives ❏ To design and implement programs with more than one function ❏ To be able to.
Engineering Secure Software. Does Security Even Matter?  Find two other people near you Introduce yourself What is your favorite software development.
The PLA Model: On the Combination of Product-Line Analyses 강태준.
 System Requirement Specification and System Planning.
Software Engineering Session 12 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
Requirements Specification
WP4 Models and Contents Quality Assessment
Progile Automated Verification Engineer • PAVE •
Software Project Configuration Management
CSCE 548 Secure Software Development Risk-Based Security Testing
Performance-Based Contracting
Software Engineering Process
Lecture 3 Prescriptive Process Models
Fundamentals of Information Systems, Sixth Edition
School of Business Administration
Software Verification and Validation
Ontology: Philosophy vs. IT
Iterative and Agile Development
The Systems Engineering Context
Creating high confidence, highly dependable, critical software
Software Design Mr. Manoj Kumar Kar.
Software Design Methodology
Lecture 12: Chapter 15 Review Techniques
Lecture Software Process Definition and Management Chapter 3: Descriptive Process Models Dr. Jürgen Münch Fall
Introduction to Software Testing
Chapter 4 Functions Objectives
Engineering Secure Software
An overview of Coq Xinyu Feng USTC.
Automatic Derivation, Integration and Verification
Creating high confidence, highly dependable, critical software
Creating high confidence, highly dependable, critical software
Software Test Automation Louisiana Tech University
Members: Keshava Shiva Sanjeeve Kareena
Department of Computer Science Abdul Wali Khan University Mardan
Testing versus instance generation
SOFTWARE DEVELOPMENT LIFE CYCLE
Task Criteria – Text-based Argument Rubric
Writing a Paper 1.
Design Document Review
An overview of Coq.
“QA” = quality assurance
Presentation transcript:

When, What, Why create system and software models Roger L. Costello March 26, 2018

Contents When to model? What to model? Why model? Does modeling lead to more dependable software?

When to model? For any given problem, ask: Is formalism necessary? Is the problem sufficiently intricate that it can’t be addressed by informal thinking? If so, then model the problem. That said, most people underestimate the intricacy of problems, so modeling should be applied more broadly. Model whenever anything but the lowest levels of dependability is required of the software.

What to model? The Principle of Partiality says that Alloy models should be created for those parts of a problem that merit the cost of formalization. Which parts merit the cost of formalization? This is a general engineering question of where to invest effort to mitigate risk or produce better outcomes. Model requirements, specifications, designs, and code. Modeling is done for a purpose, such as getting assurance on a design, requirements, generating code, generating tests, etc. That purpose will dictate which aspects to focus on (i.e., which parts merit formalizing).

Traditional software development approaches use specification and design notations that do not support rigorous analysis, as well as programming languages that are not fully defined or that defeat automated analysis. Traditional approaches depend on human inspection and testing for validation and verification. Strong approaches also use testing but employ notations and languages that are amenable to rigorous analysis, and they exploit mechanical tools for reasoning about properties of requirements, specifications, designs, and code.

Why model? Does modeling lead to more dependable software? I created an Alloy model I then implemented the software Just because the model is rock-solid, doesn't necessarily mean the ensuing software implementation will be rock-solid. Right? I might do a lousy job implementing it.

Two reasons the software is likely to be more dependable than if you hadn’t created a model You can show that each code module meets its model specification. If you have a clear and simple model, then it’s more likely that the implementation will be straightforward and the credibility of more low cost and incomplete analysis such as testing will be higher.