Software Architecture & Object Oriented Analysis

Slides:



Advertisements
Similar presentations
Dr. Rogelio Dávila Pérez
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
1 OBJECT-ORIENTED CONCEPTS. 2 What is an object?  An object is a software entity that mirrors the real world in some way.  A software object in OOP.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Designing Architectures Software Architecture Lecture 4.
OBJECT ORIENTED PROGRAMMING M Taimoor Khan
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Chapter 1 Object-Oriented System Development
Applying Architectural Styles and Patterns. Outline  Defining Architectural Patterns and Style The activation model Styles and Quality Attributes  Common.
7M701 1 Software Engineering Object-oriented Design Sommerville, Ian (2001) Software Engineering, 6 th edition: Chapter 12 )
Object Oriented System Development with VB .NET
Demystifying Architectural Styles Nikunj Mehta 3/11/02Demystifying Architectural Styles2 Agenda Architectural Styles The Alfa Project Architectural framework.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Demystifying Architectural Styles Nikunj Mehta 3/11/02Demystifying Architectural Styles2 Architectural Styles Characterize –Structure, i.e. external.
Software Architecture in Practice
Chapter 10: Architectural Design
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Software Architecture premaster course 1.  Israa Mosatafa Islam  Neveen Adel Mohamed  Omnia Ibrahim Ahmed  Dr Hany Ammar 2.
Domain-Specific Software Engineering Alex Adamec.
UML and Object Oriented Concepts
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Architectural Design.
Object-Oriented Architecture & Design – Lecture 1 (of 3) Problem Decomposition David Woollard University of Southern California Computer Science Department.
What is Software Architecture?
System Design Chapter 8. Objectives  Understand the verification and validation of the analysis models.  Understand the transition from analysis to.
The Design Discipline.
© Drexel University Software Engineering Research Group (SERG) 1 Based on the paper by Philippe Kruchten from Rational Software.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
CSCI-383 Object-Oriented Programming & Design Lecture 9.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
Satzinger Chp. 2 Part Part 4 of 4 2 Object-Oriented Analysis and Design with the Unified Process Testing Testing is critical discipline Testing activities.
Architectural Design portions ©Ian Sommerville 1995 Establishing the overall structure of a software system.
1 5/18/2007ã 2007, Spencer Rugaber Software Architecture (Informal Definition) The organization of a system into component subsystems or modules Box and.
Lecture 9: Chapter 9 Architectural Design
Architectural Design To explain the advantages and disadvantages of different distributed systems architectures To discuss client-server and distributed.
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
Unified Modeling Language, Version 2.0
1 Introduction to Software Architectures Lecture - 3.
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.
Chapter 13 Architectural Design
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Content The system development life cycle
1 ISA&D7‏/8‏/ ISA&D7‏/8‏/2013 Methodologies of the SDLC Traditional Approach to SDLC Object-Oriented Approach to SDLC CASE Tools.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
GRASP: Designing Objects with Responsibilities
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
Moving On To Design Chapter 9. Key Ideas The purpose of the analysis phase is to figure out what the business needs. The purpose of the design phase is.
1 What is OO Design? OO Design is a process of invention, where developers create the abstractions necessary to meet the system’s requirements OO Design.
OOAD – III Software Design Nupul Kukreja 10 th October, 2014.
PROC-1 1. Software Development Process. PROC-2 A Process Software Development Process User’s Requirements Software System Unified Process: Component Based.
Object-Oriented Modeling: Static Models. Object-Oriented Modeling Model the system as interacting objects Model the system as interacting objects Match.
OBJECT ORIENTED AND FUNCTION ORIENTED DESIGN 1 Chapter 6.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
University of Southern California Center for Systems and Software Engineering Architecture and Design Patterns CSCI577A Fall2015 Kan Qi, Bo Wang.
1 Unified Modeling Language, Version 2.0 Chapter 2.
ANU comp2110 Software Design lecture 8 COMP2110 Software Design in 2004 lecture 8 Software Architecture 1 of 2 (design, lecture 3 of 6) Goal of this small.
Basic Concepts and Definitions
Architecture, Design Patterns and Faithful Implementation David Woollard University of Southern California Software Architecture Group NASA Jet Propulsion.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Basic Characteristics of Object-Oriented Systems
UA. Unified Approach ( UA ) It combines best practices, methods process, guidelines & methodology (Rumbaugh, Booch and Jacobson) along with UML notations.
CSCE 240 – Intro to Software Engineering Lecture 3.
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Introduction to Design Patterns
Object oriented analysis and design
Presentation transcript:

Software Architecture & Object Oriented Analysis Nupul Kukreja 3rd October, 2014

Agenda Software Architecture Object oriented Analysis Styles & Patterns Handling ‘-ilities’ Object oriented Analysis Why OOA and OOP? What is OOA? Starting with OOAD

Software Architecture Principle design decisions about a system Manifest as a system’s: Components Connectors Topology/Configuration All pervading  Global system impact Involves: Process of arriving at principal design decisions Creation of artifacts reifying the decisions Alternate definition: The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements and the relationships among them. Even “no” architecture is an architecture: Big ball of mud  Every system has an architect

“Why” Architecture? Communication among stakeholders Mutual understanding, negotiation, consensus Early design decisions Analyzing future impacts of decisions Transferable abstraction of a system Can transfer knowledge of how elements work together, across other systems

Architectural Analysis Constraints on Implementation Dictates organization structure (i.e., WBS) Inhibits/Enables system’s quality attributes (a.k.a., levels of service) Predict system qualities by studying architecture Easier to reason about and manage change Aids in evolutionary prototyping Enables more accurate cost/schedule estimates

Architecture Reusability Architecture reuse >> code reuse Experience reuse Requirements reuse LOS reuse Software Product Lines COTS integration for large systems Less is More: Minimize design complexity of system being built Pays to restrict to small set of design alternatives Permits template based development Can be used as basis for training

Examples of Past Experience Deep Domain-Specific Software Architectures Application Domain Knowledge Architectural Patterns Styles (Program) Design Patterns Shallow Programming (language level) Scope Application Structure System Structure

Architectural Patterns Definition: Named collection of architectural design decisions that are applicable to a recurring design problem, parameterized to account for different software development contexts in which that problem appears State-Logic-Display (3-Tier) Model-View-Controller (MVC) Sense-Compute-Control

Architectural Styles Definition: Named collection of architectural design decisions that Are applicable in a given development context Constrain architectural design decision that are specific to a particular system within that context Elicit beneficial qualities of the systems

Language Influenced Layered Dataflow Styles Shared Memory Main program and sub-routines Object-oriented Language Influenced Virtual Machine Client-Server Layered Batch-sequential Pipe-and-filter Dataflow Styles Blackboard Rule-based Shared Memory Publish/Subscribe Event-based Implicit Invocation Interpreter Mobile code Representational State Transfer (e.g. WWW) REST (e.g. Gnutella, Skype, Napster etc.,) Peer-to-Peer More complex styles like C2 and Distribute objects (e.g., CORBA) exists which can be thought of as a combination of the above. You can have composite/complex architectures that incorporate >1 of the above styles

Breaking The Rules Remember - patterns and styles are abstractions Design guides from past experience Not rules engraved in stone OK to deviate, but you should do so for a reason Example: An existing layered architecture must add role-based security. LDAP is chosen as both the authentication and authorization tool (single, gold standard). All front-ends must support user authentication Before any action is performed, the system must validate that the user is authorized to perform the action.

“How” to Architect Choose module to decompose (initially whole system) Choose architectural drivers (functionality + LOS) Choose an architectural pattern/style satisfying the drivers Apply tactics for achieving ilities to drivers Instantiate modules and allocate functionality Define interfaces of child modules Verify and refine use cases and LOS scenarios and make them constraints for child modules Repeat

Object Oriented Analysis

Why OOA/P/D Procedural Programming Object-Orientation High coupling Spaghetti code “How” is paramount Object-Orientation “Data” is paramount Operations are performed on data and are coupled with that data Explicit representation of commonality Tackle more challenging domains Improves analyst  domain expert interaction

Object Oriented Design OO in the `60s & `70s – Informal notions Simula, Smalltalk In `82, Grady Booch coined the term Object Oriented Design The idea was to combine a design methodology with language constructs that implement design concepts Objects in design space are classes in implementation space

OOP Major features include Encapsulation Message passing Inheritance Access is restricted (separation of concerns, no spaghetti code) Message passing Well-defined interfaces to the outside Inheritance Reuse, subtypes

What Are Objects? Three key attributes: State Operations Identity The collection of information known to an object State changes are a consequence of operations performed on an object Operations The actions that can be performed on an object Identity Two objects with identical state are still different from one another Source: Mastering Object-Oriented Design in C++ by Cay S. Horstmann

Design Goals for OOD Booch defined three goals Identify the objects/classes Identify the functionality of these objects/classes Identify the relationship between these objects/classes This is an iterative process Decisions in design space are complex Identification and specification of one aspect of a class might force changes in other aspects Source: Mastering Object-Oriented Design in C++ by Cay S. Horstmann

Simple Methodology Objects are nouns in a problem statement or requirement Operations are verbs in the problem statement or requirement A user shall be able to delete a message from a mailbox Relationships are found by looking for use, aggregation, and inheritance “is-a” & “has-a” statements Basic Use: Does an operation of Object A modify, require, or produce an Object B? Aggregation: Does Object A have a reference to Object B? Inheritance: Does Object A contain all aspects of Object B? Are all operations on Object B therefore allowed for Object A? Source: Mastering Object-Oriented Design in C++ by Cay S. Horstmann

Beyond the Simple Methodology Good for very constrained problems, but not larger, more complex software systems. What about NFPs, levels of service, interaction with software frameworks and middleware? Largely ties back to reasoning about the Software Architecture. What about past experience?

Domain Modeling

Use-case Modeling & User Stories