Technieken van de Software Architectuur, VUB ‘98-’99, Part 11 Technieken van de Software Architectuur Patrick Steyaert

Slides:



Advertisements
Similar presentations
Design Patterns.
Advertisements

Chapter 26 Legacy Systems.
Chapter 7 System Models.
Building a Knowledge Management System as a Life Cycle
Introduction to Product Family Engineering. 11 Oct 2002 Ver 2.0 ©Copyright 2002 Vortex System Concepts 2 Product Family Engineering Overview Project Engineering.
By Rick Clements Software Testing 101 By Rick Clements
Configuration management
The Modular Structure of Complex Systems Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
Technieken van de Software Architectuur, VUB ‘98-’99, Part 21 Part 2: Component and Framework Reuse Technieken van de Software Architectuur.
Technieken van de Software Architectuur, VUB ‘98-’99, Part 11 Object Orientation Review.
Generalizable Element Namespace Model Element name visibility isSpecification Classifier isRoot Constraint Body Use Cases CS/SWE 421 Introduction to Software.
Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
Software Processes.
Problem Solving and Algorithm Design
Database System Concepts and Architecture
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software processes 2.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 27 Slide 1 Quality Management.
Lecture 6: Software Design (Part I)
Chapter 10 Software Testing
Chapter 11 Software Evolution
Executional Architecture
Implementation Architecture
Discovering Computers & Microsoft Office 2010 Discovering Computers Chapter 3.
Chapter 13 Review Questions
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Introduction To System Analysis and Design
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Testing Components in the Context of a System CMSC 737 Fall 2006 Sharath Srinivas.
Reuse Basic concepts. Rationale for reuse  Save calendar time  Save person hours  Reduce process risk  Increased quality  Standards compliance.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Software Product Line Architectures (SPLA) Nipun Shah
Framework for Automated Builds Natalia Ratnikova CHEP’03.
Chapter 2 The process Process, Methods, and Tools
Object-oriented Software Engineering with Reuse Contracts Koen De Hondt, Carine Lucas, Kim Mens, Tom Mens, Patrick Steyaert, Roel Wuyts Programming Technology.
Object Oriented Analysis and Design Introduction.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Introduction To System Analysis and Design
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
A Novel Approach to Architectural Recovery in Evolving Object- Oriented Systems PhD thesis Koen De Hondt December 11, 1998.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
© 2012 xtUML.org Bill Chown – Mentor Graphics Model Driven Engineering.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Distributed Information Systems. Motivation ● To understand the problems that Web services try to solve it is helpful to understand how distributed information.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.
Chapter 8 Lecture 1 Software Testing. Program testing Testing is intended to show that a program does what it is intended to do and to discover program.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
Informatics 122 Software Design II Lecture 12 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
 Many models have been proposed to deal with the problems of defining activities and associating them with each other  The first model proposed was the.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Reuse Contracts A Historic Overview Dr. Tom Mens Programming Technology Lab Vrije Universiteit Brussel Course OOSE.RC EMOOSE
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
From the customer’s perspective the SRS is: How smart people are going to solve the problem that was stated in the System Spec. A “contract”, more or less.
Architectural Mismatch: Why reuse is so hard? Garlan, Allen, Ockerbloom; 1994.
Chapter 2: The Process. What is Process? Software Engineering Process is the glue that holds the technology layers together and enables rational and timely.
Process 4 Hours.
Software Life Cycle “What happens in the ‘life’ of software”
Chapter 8 – Software Testing
Software Quality Engineering
CSE 303 – Software Design and Architecture
Chapter 26 Estimation for Software Projects.
Architectural Mismatch: Why reuse is so hard?
Demo for Partners and Customers
Presentation transcript:

Technieken van de Software Architectuur, VUB ‘98-’99, Part 11 Technieken van de Software Architectuur Patrick Steyaert

Technieken van de Software Architectuur, VUB ‘98-’99, Part 12 Part 1: Introduction

Technieken van de Software Architectuur, VUB ‘98-’99, Part 13 Course Goal Teach techniques for designing, maintaining and reasoning about ‘complex’ software systems.

Technieken van de Software Architectuur, VUB ‘98-’99, Part 14 ‘Programs’ 4Single purpose 4Single developer (or very small group) 4Short lived 4Single version 4Scalability is not an issue 4No openness to other systems Essentially the experience you have gained with ‘programming projects’.

Technieken van de Software Architectuur, VUB ‘98-’99, Part 15 ‘Software Systems’ 4Multi purpose, or complex single purpose 4Long-lived 4Multiple versions, customizations 4Scalability is an issue 4Openness to other systems (e.g. legacy) Essentially what is experienced in ‘real-world’ software projects.

Technieken van de Software Architectuur, VUB ‘98-’99, Part 16 Conventional Software Engineering Analysis Design Implementation Validation Verification Testing User RequirementsRunning System à top-down

Technieken van de Software Architectuur, VUB ‘98-’99, Part 17 Application of Conventional SE 4Rationale »discover problems early in the process »well-defined process (phases, milestones) 4But »too slow because of the ‘ceremony’ overhead »prone to communication errors »does not deal with change Works best in very mature domains.

Technieken van de Software Architectuur, VUB ‘98-’99, Part 18 Non-functional Requirements [Buschmann&al.96] 4maintainability »how to deal with “aging”,... 4reusability »design for reuse,... 4adaptability »dealing with new requirements... 4testability 4interoperability “-ities” Conventional software engineering only deals with functional requirements !

Technieken van de Software Architectuur, VUB ‘98-’99, Part 19 Evolutionary Software Development [Brooks79] identify challenges prototype validate consolidate identify challenges à bottom-up prototype...

Technieken van de Software Architectuur, VUB ‘98-’99, Part 110 Application of the Evolutionary Software Development 4Rationale »small motivated teams »no ceremony overhead »the implementation of complex software contributes to its understanding (prototyping) 4BUT »does not necessarily scale up »weakly defined process »badly supported by tools, methods,... Works best in immature domains.

Technieken van de Software Architectuur, VUB ‘98-’99, Part 111 Things that can go Wrong 4Lava flow dead code and forgotten design are frozen in 4Golden hammer when a hammer is the only tool I know how to use, then everything looks like a nail 4Input kludge software that fails straightforward tests 4Mushroom management requirements that are passed second hand through intermediaries

Technieken van de Software Architectuur, VUB ‘98-’99, Part 112 Things that can go Wrong (cont’d.) 4Version proliferation software that exists in a multitude of versions that are the result of copy-and paste programming 4Swiss army knife software that has excessive ‘whistle and bells’ 4Analisys paralysis trying to come up with ‘the perfect model’ 4Pet alligator phenomenon It’s cute while its small, but it keeps growing.

Technieken van de Software Architectuur, VUB ‘98-’99, Part 113 The Challenge 4extremely complex systems 4multiple variations 4more than one mind can handle at once 4must manage complexity 4must manage variations 4must scale in time and size

Technieken van de Software Architectuur, VUB ‘98-’99, Part 114 Need for Software Models Testing Software Maintaining Extending Customizing Reusing Evolving Analyzing Documenting

Technieken van de Software Architectuur, VUB ‘98-’99, Part 115 Software Architecture 4A system is a set of communicating parts or components that fit together to realize a certain behaviour (i.e. to realize the behaviour requested by the functional requirements). 4A part or component is understood to be a systems building block that is defined by its external interface (like an ADT). 4A software architecture is a specification of a set of components and a communication pattern or protocol among them to achieve the behaviour. The architecture of a system is a high-level software model.

Technieken van de Software Architectuur, VUB ‘98-’99, Part 116 Processes for Managing Complexity Problem decomposition: break big problems into smaller sub-problems that can be addressed relatively independently Solution composition: build big solution from small components

Technieken van de Software Architectuur, VUB ‘98-’99, Part 117 Separation of Concerns [AOP] natural decomposition »“the program looks like the design” »synergy among –problem structure –design concepts –implementation components »concerns are cleanly localized in both design and implementation »concerns are explicitly handled Separation of concerns is the primary process for managing complexity.

Technieken van de Software Architectuur, VUB ‘98-’99, Part 118 Typical Concerns 4recurring functional requirements »variations on functional requirements (e.g. recurring use cases with many similarities) 4cross-cutting features »e.g. permissions, on-line help 4recurring non-functional requirements »recurring technology changes (e.g. software that has to run on different platforms)

Technieken van de Software Architectuur, VUB ‘98-’99, Part 119 Conclusion 4Engineering ‘complex’ software systems requires new models and processes 4In this course we will teach models and processes to design, analyze, customize, reuse and evolve complex software systems

Technieken van de Software Architectuur, VUB ‘98-’99, Part 120 Course Overview (1) 4Part 1: Introduction + Recap of OO 4Part 2: Components and Framework Reuse 4Part 3: Evolutionary Software Design 4Part 4: Software Patterns

Technieken van de Software Architectuur, VUB ‘98-’99, Part 121 Course Overview (2) 4Part 5: Guest speakers (tentative list) »The Classification Browser (Koen De Hondt) »Reflective Architectures (Wolfgang De Meuter) »Metrics (Kurt Waeyenberg, EDS) »Genetic Programming Framework (Tom Lenaerts) »Domain Analysis (Frank Gielen, Alcatel) »Broadcast Software Factory (Wilfried Verachtert, MediaGeniX) »Repository Based Architecture (Michel Tilman, Unisys )

Technieken van de Software Architectuur, VUB ‘98-’99, Part 122 References 4[Brooks79]Brooks, F., P., The Mytical Man-Month, Addison-Wesley, Reading, MA, [AOP] Aspect Oriented Programming,