Methods of Software Development Karl Lieberherr Spring 2007.

Slides:



Advertisements
Similar presentations
Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
Advertisements

CS487 Software Engineering Omar Aldawud
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 Modularization.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 1 Object-Oriented.
Software Engineering COMP 201
Lecture 2: Do you speak Java?. From Problem to Program Last Lecture we looked at modeling with objects! Steps to solving a business problem –Investigate.
Aspect-Oriented Programming: An Overview Brandon Wirick Feb
ASPECT ORIENTED SOFTWARE DEVELOPMENT Prepared By: Ebru Doğan.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Overview. Why data structures is a key course Main points from syllabus Survey Warmup program And now to get started...
1 SWE Introduction to Software Engineering Lecture 5.
Chapter 1 Principles of Programming and Software Engineering.
1 CSC-3324: Chapter 4 Title: What is a requirement? Mandatory reading: Sommerville 6, 7 th ed., Chap.: 7.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
CS 104 Introduction to Computer Science and Graphics Problems Software and Programming Language (2) Programming Languages 09/26/2008 Yang Song (Prepared.
Data Structures and Programming.  John Edgar2.
Chapter 3 Software Processes.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
INTROSE Introduction to Software Engineering Raymund Sison, PhD College of Computer Studies De La Salle University Software: Definitions,
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
System Development Process Prof. Sujata Rao. 2Overview Systems development life cycle (SDLC) – Provides overall framework for managing system development.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
1 Modularity in Abstract Software Design: A Theory and Applications Yuanfang Cai Dept. of Computer Science University of Virginia Dissertation Proposal.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
The Scientific Community Game for STEM Innovation and Education (STEM: Science, Technology, Engineering and Mathematics) Karl Lieberherr Ahmed Abdelmeged.
The Program Development Cycle
Aspect Oriented Programming Razieh Asadi University of Science & Technology Mazandran Babol Aspect Component Based Software Engineering (ACBSE)
VERIFICATION OF ASPECT ORIENTED MODELS BY DON MARTIN JAYASHREE VENKIPURAM PATHANGI PIYUSH SRIVASTAVA REFERENCES F. Mostefaoui and J. Vachon,” Design level.
Software Engineering Introduction and Overview Takes customer-defined goals and constraints and derives a representation of function, performance, interfaces,
CONSTRAINT PROGRAMMING Computer Science Seminar April 9 th, 2004 Kerem Kacel.
OBJECT ORIENTED SYSTEM ANALYSIS AND DESIGN. COURSE OUTLINE The world of the Information Systems Analyst Approaches to System Development The Analyst as.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
VERIFICATION OF ASPECT-ORIENTED MODELS Review of Aspect-Oriented Definitions aspect – crosscutting concern that may involve multiple classes pointcut –
Architectural Design Identifying system components and their interfaces.
Constraint Propagation as the Core of Local Search Nikolaos Pothitos, George Kastrinis, Panagiotis Stamatopoulos Department of Informatics and Telecommunications.
An Introduction to Software Engineering. Communication Systems.
Top-Down Design and Modular Development. The process of developing methods for objects is mostly a process of developing algorithms; each method is an.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Program Development Cycle Modern software developers base many of their techniques on traditional approaches to mathematical problem solving. One such.
3/5/2009Computer systems1Introduction Computer Systems: Hardware Desktop Laptop Software Information Systems Computer-Aided Graphic Design.
Comp 311 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright August 25, 2008.
CS251 – Software Engineering Lecture 9: Software Design Slides by Mohammad El-Ramly, PhD
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
MNP1163 (Software Construction).  SDLC and Construction Models  Construction Planning  Construction Measurement.
Managing Software Development Karl Lieberherr. Manage a significant program from requirements to implementation We wrote requirements. We wrote several.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
The Algorithms we use to learn about Algorithms Karl Lieberherr Ahmed Abdelmeged 3/16/20111Open House 2011.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Using Symbolic PathFinder at NASA Corina Pãsãreanu Carnegie Mellon/NASA Ames.
Formal Specification: a Roadmap Axel van Lamsweerde published on ICSE (International Conference on Software Engineering) Jing Ai 10/28/2003.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
IS444: Modern tools for applications development Dr. Azeddine Chikh.
Advanced Software Development applied to (Symbolic) Systems Biology Karl Lieberherr.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Advanced Software Development Karl Lieberherr CSG 260 Fall Semester
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
Engineers and Engineering Design 1. Seven Engineering Resources 1. People 2. Information 3. Time 4. Capital 5. Machines & Tools 6. Materials 7. Energy.
Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Advanced Software Engineering Dr. Cheng
Principles of Programming & Software Engineering
Automatic Derivation, Integration and Verification
AspectAda Aspect-Oriented Programming for Ada95
Presentation transcript:

Methods of Software Development Karl Lieberherr Spring 2007

A list of possibilities (from the web) method: a way of doing something, especially in a systematic way. –Statistical methods in Software Engineering (reliability and risk) by Singpurwalla and Wilson –Software development processes: each process as a method –Formal methods: using mathematical approaches to solving software problems (from requirement to implementation level)

A list of possibilities (cont.) (from the web) method: a way of doing something, especially in a systematic way. –object-oriented methods of software development generic programming programming by contracts programming with meta classes design patterns –aspect-oriented methods of software development joinpoints, pointcuts, advice

What is the goal of methods for software development? modular designs, good separation of concerns easy to understand and modify efficient implementation etc.

Methods of software development based on relations and constraints Examples: –design analysis: state machine S over structured states, violating the expected property P. S and !P –code analysis: check a procedure against its declarative spec. –test case generation from data invariants –component assembly and installation Use relational constraint solving engine –successful approach: use SAT solver

Methods of software development based on relations and constraints A relational engine is also useful for other domains than software development Other Examples: –course scheduling –network configuration –biology: haplotype inference

Build our knowledge from the ground up SAT and CSP solvers How to express relations and constraints in a way most suitable for the software developer and other users? Possibilities: Alloy, Kodkod language, etc. How to translate relations and constraints to SAT and CSP

SAT and CSP solvers Use methods of software development to develop SAT and CSP solvers. Methods we want to use: –implementation modeling using transition systems –based on Pragmatic Programmer Tips: Write code that writes code Design with contracts Configure, Don’t integrate Minimize coupling etc