Modular Software Development for Dealing with Uncertainty

Slides:



Advertisements
Similar presentations
Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
Advertisements

Identifying, Modifying, Creating, and Removing Monitor Rules for SOC Ricardo Contreras Andrea Zisman
Professor John Hosking, Dean of Engineering and Computer Science Models, Modelling, MBSE.
Data Model driven applications using CASE Data Models as the nucleus of software development in a Computer Aided Software Engineering environment.
Uncertainty in Engineering The presence of uncertainty in engineering is unavoidable. Incomplete or insufficient data Design must rely on predictions or.
November 2005J. B. Wordsworth: J5DAMQVT1 Design and Method Quality, Verification, and Testing.
Chapter 1 Principles of Programming and Software Engineering.
Describing Syntax and Semantics
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Romaric GUILLERM Hamid DEMMOU LAAS-CNRS Nabil SADOU SUPELEC/IETR.
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
1 Performance Evaluation of Computer Networks: Part II Objectives r Simulation Modeling r Classification of Simulation Modeling r Discrete-Event Simulation.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
CSE 303 – Software Design and Architecture
Architecture-Based Runtime Software Evolution Peyman Oreizy, Nenad Medvidovic & Richard N. Taylor.
2-Oct-15 Bojan Orlic, TU/e Informatica, System Architecture and Networking 12-Oct-151 Homework assignment 1 feedback Bojan Orlic Architecture.
Aspect Oriented Programming Razieh Asadi University of Science & Technology Mazandran Babol Aspect Component Based Software Engineering (ACBSE)
Aspect Oriented Programming Sumathie Sundaresan CS590 :: Summer 2007 June 30, 2007.
POSL (Principles of Software Languages) Gr. Kyushu Institute of Technology, Japan Pointcut-based Architectural Interface.
Abstract We present two Model Driven Engineering (MDE) tools, namely the Eclipse Modeling Framework (EMF) and Umple. We identify the structure and characteristic.
Class 5 Architecture-Based Self-Healing Systems David Garlan Carnegie Mellon University.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
AOP-1 Aspect Oriented Programming. AOP-2 Aspects of AOP and Related Tools Limitation of OO Separation of Concerns Aspect Oriented programming AspectJ.
Roles and Coordination in powerJava M. Baldoni, G. Boella Dipartimento di Informatica, Università degli Studi di Torino (Italy) and L. van der Torre SEN3.
Architectural Point Mapping for Design Traceability Naoyasu Ubayashi and Yasutaka Kamei Kyushu University, Japan March 26, 2012 FOAL 2012 (AOSD Workshop)
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.
Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.
1. 2 Preface In the time since the 1986 edition of this book, the world of compiler design has changed significantly 3.
An Axiomatic Basis for Computer Programming Robert Stewart.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Alloy-based Lightweight Verification for Aspect-oriented Architecture Naoyasu Ubayashi(Kyushu Institute of Technology) Yuki Sato(Kyushu Institute of Technology)
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
POSL (Principles of Software Languages) Gr. Kyushu Institute of Technology, Japan 1 A Verification Mechanism for Weaving.
Systems Realization Laboratory The Role and Limitations of Modeling and Simulation in Systems Design Jason Aughenbaugh & Chris Paredis The Systems Realization.
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
International Telecommunication Union © ITU-T Study Group 17 Integrated Application of SDL Amardeo Sarma NEC Europe Ltd.
Requirements Analysis
1 An AOP Implementation Framework for Extending Join Point Models Naoyasu Ubayashi(Kyushu Institute of Technology, Japan) Hidehiko Masuhara(University.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
1 Modeling Formalism (Modeling Language Foundations) System Modeling Assessment & Roadmap Working Group Meeting – SE DSIG Reston – March, 2016 Yves BERNARD.
From requirements to specification Specification is a refinement of requirements Can be included together as Software Requirements Specifications (SRS)
Principles of Programming & Software Engineering
Security analysis of COM with Alloy
OPERATING SYSTEMS CS 3502 Fall 2017
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Chapter 18 Maintaining Information Systems
Principles of Programming and Software Engineering
About the Presentations
Rapid Prototyping.
Env. Model Implementation
Designing Software for Ease of Extension and Contraction
Chapter 10: Process Implementation with Executable Models
Assembler, Compiler, Interpreter
Aziz Nanthaamornphong, Ph.D Assistant Professor in Computer Science
Chapter 2: Designing your project
Helping a friend out Guidelines for better software
Software Design Lecture : 14.
Assembler, Compiler, Interpreter
Protocols CS 4311 Wirfs Brock et al., Designing Object-Oriented Software, Prentice Hall, (Chapter 8) Meyer, B., Applying design by contract, Computer,
CS 8532: Advanced Software Engineering
Department of Computer Science Abdul Wali Khan University Mardan
An Extensible Contract Verifier for AspectJ
Activities of Formal Methods
Presentation transcript:

Modular Software Development for Dealing with Uncertainty 6th Asian Workshop of Advanced Software Engineering (AWASE2017) Modular Software Development for Dealing with Uncertainty Naoyasu Ubayashi Kyushu University, Japan May 5, 2017

Naoyasu Ubayashi Professor @ Kyushu University Research Interests Ph.D (University of Tokyo, 1999) Toshiba (1982-2003), Kyushu Tech. (2003-2009), Kyushu U. (2010-) POSL (Principles of Software Languages) Research Group Research Interests Software & Programming Languages (especially, Modularity) Abstraction-Aware Verifying Compiler Extensible Modelling Language Modularity for Uncertainty Software Repository Mining Formal Methods

Outline Motivation What is Uncertainty? Modularity for Uncertainty iArch-U: IDE for Uncertainty-Aware Software Development Summary and Ongoing Work

Open Source Software (GitHub) http://posl.github.io/iArch/

Motivation

Uncertainty in Software Development Requirements or design models tend to contain uncertainty, because all of the concerns cannot be captured at the early phase. Uncertainty can appear in all aspects of software development. Unfixed Requirements Alternative Implementation Policies Uncertain Performance Modelling Programming Testing

Myth in Software Engineering Software Engineering is founded on a computational myth that no longer fully serves its purpose: that the computational environment is predictable and in principle fully specifiable, and that the systems that compute in those environments can in principle be engineered so that they are trouble-free. D. Garlan: Software Engineering in an Uncertain World, FSE/SDP Workshop on Future of Software Engineering Research, 2010.

Uncertainty in OSS Projects SZZ-based

What is Uncertainty?

Known Unknowns vs. Unknown Unknowns Known what is unknown Unknown what is unknown e.g., Design Alternatives Design A Design B Which should be selected? e.g., Users’ Preference Unknown Unknowns recommend Accepted Unaccepted Users Sebastian, E., and David S. R.: Known Unknowns: Testing in the Presence of Uncertainty, 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering(FSE 2014), 2014.

Definition of Uncertainty The most used definitions of uncertainty simply distinguish between natural variability of physical processes (i.e., aleatory or stochastic uncertainty) and the uncertainties in knowledge of these processes (i.e., epistemic or state-of-knowledge uncertainty). For proposing such a taxonomy for uncertainties in computer systems models, we base on a general definition of uncertainty in modeling given in [2] as: "any deviation from the unachievable ideal of completely deterministic knowledge of the relevant system". [1] Diego Perez-Palacin, Raffaela Mirandola: Uncertainties in the modeling of self-adaptive systems: a taxonomy and an example of availability evaluation, ICPE 2014. [2] W. Walker, P. Harremo´ Ss, J. Romans, J. van der Sluus, M. van Asselt, P. Janssen, and M. Krauss: Defining uncertainty. a conceptual basis for uncertainty management in model-based decision support, Integrated Assessment, 4(1):5–17, 2003.

Uncertainty in OSS Projects SZZ-based

Living with Uncertainty Modularity for Uncertainty Living with Uncertainty

Modular Software Development with Uncertainty Idea 1: Uncertainty as Pluggable Interface [Expression of Uncertainty (Known Unknowns, Epistemic)] Idea 2: Interface-Centric Modular Reasoning [Type Checking / Model Checking for Uncertainty] Modularity for Uncertainty Uncertain Concerns Uncertain Concerns Uncertain Concerns Modelling Programming Testing Fukamachi, T., Ubayashi, N., Hosoai, S., and Kamei, Y., Modularity for Uncertainty, In Proceedings of the 7th International Workshop on Modelling in Software Engineering (MiSE 2015), pp.7-12, 2015.

Archface-U : Component Interface Idea 1 Archface-U : Component Interface Java Interface interface uncertain uSubject extends Subject {  public void {removeObserver(), deleteObserver()}; [public void notify();] } interface component Subject { public void addObserver(); public void setState(); Certain Archface Uncertain Archface { } Alternative [ ] Optional Variability model is applied to uncertainty management. (not product but process)

Archface-U : Connector Interface Idea 1 Archface-U : Connector Interface Finite State Process (FSP) interface connector uObserverPattern extends cObserverPattern (cSubject, cObserver) { cSubject = (cSubject.setState-> [uSubject.notify] ->cObserver.update->cSubject.getState->cSubject); } interface connector cObserverPattern(cSubject, cObserver) { cSubject = (cSubject.setState->cObserver.update ->cSubject.getState->cSubject); Certain Archface Uncertain Archface Magee, J. and Kramer, J.: State Models and Java Programs (1999).

Interface-Centric Modular Reasoning Idea 2 Interface-Centric Modular Reasoning We can continue development embracing uncertainty If True… Add Add Remove Certain Interface Uncertain Concerns Uncertain Concerns Uncertain Concerns Archface-U Test Execution Model Checking Model Checking Type Checking (Simulation) Type Checking (Simulation) True False True False True False Model Code Test Consistency is guaranteed (via Type Checking)

Uncertainty-Aware Software Development iArch-U IDE for Uncertainty-Aware Software Development

Overview of iArch-U IDE Modeling Support Programming Support Testing Support Uncertainty Management Support with Git

(Type Checking, Git-based Uncertainty Management) Eclipse Plugin Java Programming UML Modelling Archface-U View (Type Checking, Git-based Uncertainty Management) Archface-U

Modelling Setting of Alternative Uncertainty Alternative Uncertainty in Sequence Diagram Type Checking for UML Diagrams

Model Checking for UML Models Modify Archface-U Property Connector Interface ERROR Model Checking (LTSA) Translate Model OK Type Checking Indirectly Verified (avoidance of state explosion) UML Model

Model Checking for Java Code Modify Archface-U Property Connector Interface ERROR Model Checking (LTSA) Translate Model OK Type Checking Indirectly Verified (avoidance of state explosion) Java Code

Uncertainty Management with Git

Unit Testing Type Checking iArch-U Weaving & Test Execution Archface-U Java Code { void bubbleSort(Data data);, void quickSort(Data data); } class ... { void bubbleSort void quickSort ... } Type Checking iArch-U Weaving & Test Execution bubbleSort quickSort Possibility bubbleSort Aspect (AspectJ) bubbleSort(foo); bubbleSort(bar); ... quickSort Generate Test Cases

Summary and Ongoing Work

Ongoing Work Extension to Probabilistic Programming Archface-U dealing with probability Type system for probabilistic programming Probabilistic model checking Extension to A/B Testing uncertain component uStudentController extends StudentController{ { @ExecWeight(4) void filterStudent(JTable table);, @ExecWeight(1) void colorStudent(JTable table); }