Director, Middleware Technologies

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

COM vs. CORBA.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
Software Connectors Software Architecture. Importance of Connectors Complex, distributed, multilingual, modern software system functionality and managing.
Object-Oriented Analysis and Design
Introduction To System Analysis and Design
SE 555 Software Requirements & Specification1 Use-Case Modeling: Overview and Context.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
Using Architecture Frameworks
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
The chapter will address the following questions:
Introduction To System Analysis and design
Introduction To System Analysis and Design
Unit 2 Architectural Styles and Case Studies | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS 1.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
CORBA1 Distributed Software Systems Any software system can be physically distributed By distributed coupling we get the following:  Improved performance.
CS 501: Software Engineering Fall 1999 Lecture 12 System Architecture III Distributed Objects.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
Object Oriented Programming and Data Abstraction Earl Huff Rowan University.
Basic Characteristics of Object-Oriented Systems
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 15 System Architecture III.
Appendix 3 Object-Oriented Analysis and Design
Chapter 1 The Systems Development Environment
CS 325: Software Engineering
Chapter 1: Introduction to Systems Analysis and Design
The Movement To Objects
Business System Development
Chapter 2 Database System Concepts and Architecture
Object-Oriented Analysis and Design
Systems Analysis and Design With UML 2
SOFTWARE DESIGN AND ARCHITECTURE
Chapter 1 The Systems Development Environment
Week 10: Object Modeling (1)Use Case Model
OO Methodology OO Architecture.
Software Design and Architecture
Distribution and components
Part 3 Design What does design mean in different fields?
Unified Process Source & Courtesy: Jing Zou.
Chapter 1 The Systems Development Environment
Chapter 1 The Systems Development Environment
Ch > 28.4.
ITU languages for ODP - a personal view - I may be wrong!
Chapter 2: Database System Concepts and Architecture
Inventory of Distributed Computing Concepts and Web services
Service-centric Software Engineering
Chapter 20 Object-Oriented Analysis and Design
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
Object oriented analysis and design
UML profiles.
Analysis models and design models
An Introduction to Software Architecture
Copyright 2007 Oxford Consulting, Ltd
Chapter 1: Introduction to Systems Analysis and Design
Algorithms and Problem Solving
Software Analysis.
Chapter 5 Architectural Design.
Design Yaodong Bi.
Chapter 22 Object-Oriented Systems Analysis and Design and UML
Appendix A Object-Oriented Analysis and Design
Chapter 1 The Systems Development Environment
PASSI (Process for Agent Societies Specification and Implementation)
Chapter 6: Architectural Design
Chapter 1: Introduction to Systems Analysis and Design
Software Development Process Using UML Recap
From Use Cases to Implementation
Logical Architecture & UML Package Diagrams
Presentation transcript:

Director, Middleware Technologies Software Architecture Concepts and Views UML Introduction Tilt Thompkins Director, Middleware Technologies DR&CG Meeting March 24, 2003

Outline And Biases Biases - Importance of Interface-based design Good programmers vs. Languages Iterative development of requirements and design Outline – TENA free discussion of Software architecture concepts Visio Demo UML tutorial Be happy to discuss our TENA experiences and plans at the end of the day TENA – RMI alternative functionality - JXTA

How Did Software Architecture Get To Be An Important Idea Anyway Interesting characteristics of modern systems Homogenous hardware/software configurations, constantly evolving Remote autonomous processing Distributed, replicated, non-uniform state – time Asynchronous, insecure, variable speed communications Frequent partial failures Difficult issues to grapple with and not particularly connected to any specific application System development will be much easier if there is only one solution to these issues employed

Software Architecture Definition Without doubt the most ill-defined, important concept I know about. The most useful definition I can give you is: Rules by which the non-functional requirements are achieved. Requirements other than computing correct results. Constraints. Apply to the systems a whole. e.g., Inter-operability. Qualities. Usability, extensibility. QOS, performance, reliability.

Non-Functional Requirements Examples Scale The amount of simultaneous computing and distribution a system must support Security Protection from unauthorized users Protection from unauthorized uses Fault-tolerance Up-time Response to failures of components

The Battlegrounds For Software Architecture Consultants Are: Terminology Solvable A-Priori views Solvable by rational people Discuss RM-ODP: Reference Model for Open Distributed Processing An HP approach Favorite business consultant view Completeness: CMM vs. Extreme Programming Religious debate Don’t go there Value, truth, and beauty in both camps

RM-ODP: Reference Model For Open Distributed Systems Five Views of System Architecture Enterprise: Macro components/objects/systems and policies: permissions – prohibitions- obligations Information: Information schemas data modeling, databases Computational: Macro object encapsulation: interfaces – CORBA IDL is standard now Engineering: Distribution properties Distribution transparences Processing allocations Middleware channel abstraction 5. Technology: Mappings to specific implementations and products

Open Distributed Processing Object Model Objects are entities containing information and offering services Arbitrary granularity, behavior, and parallelism System is interacting objects Interactions between objects are not constrained Encapsulation Information hidden and accessible only through interfaces No side effects Abstraction Processing implementation hidden behind interfaces Might be called meta-object model in other discussions

RM-ODP Viewpoints Design Independence Enterprise Purpose Information Meaning of information and processing Computational Modules and Interfaces Engineering Distribution Mechanisms Technology Specific Implementation Distribution Transparent Implementation Transparent

RM-ODP Viewpoints Software Engineering Enterprise Information Computational Engineering Technology Requirements Analysis Functional Specification Design Implementation

Channel Abstraction Connect Processes at the engineering View Level Provide inter-object communication

Transparencies Functionality which hides some common complexity Intended to shift effort from application developer to infrastructure developer Recipes far common-case solutions Optional don’t force for all applications

Transparency Types Transparency Guarantee Access Masks platform-protocol difference in representation and invocation mechanisms Failure Masks failures and recover of Objects Location Masks information needed to find and bind Migration Masks awareness of changes in location of the object from itself Relocation Masks changes in location of interfaces from client objects Replication Maintains consisting of a group of replica objects with a common interfold Persistence Masks activation and deactivation Transactions Masks coordination to achieve consistency CORBA provides support for location, access, and partial support for persistence. Multi-language support a key issue.

Access Transparency Access transparency is achieved by configuring the channel with stubs which: Are accessed with local procedure call semantics Convert the interaction into a sequence of message passing Marshals and unmarshals data to convert between different representations

Relocation Transparency Achieved by configuring the channel with binder objects which: Reports the location of it’s processing thread to a locator service when the object is created, deleted, or moved Obtains the location of any interacting object Consequently Interacting user objects need not know each other’s location Either user object can be moved

Transactional Transparency Transactional transparency is very difficult to provide Requires Reporting of the execution/undo of actions of interest to a transaction service Reading/writing transaction protected data Interaction with the transaction service to arrange commit/abort behavior Implement/start undo actions and restart transactions on request of the transaction service

ODP Too Abstract For Real Designs: An HP Approach How the components interact and change state Interfaces Dynamic Behavior Structure Conceptual Framework Services provided and required Components and communication paths What the concepts are and what they mean

A Business Consultant View Meta-Architecture Vision Style and philosophy Key Concepts and Mechanisms Architecture Structure and Relationship. Interface definition Static and dynamic views Architecture Guidelines and Policies Standards Frameworks

Styles Batch Sequential Pipes and Filters Main Program and Subroutines Object-Oriented Layered – Call and Return Communicating process and event systems Repository and Blackboard Rule-Based Communication Middleware

Architecture Conceptual Logical Execution Components and connections CRC cards level Component responsibility collaborators rational Logical Structure - interface definitions- protocols Execution Maps to processes aid tasks Synchronization requirements

Generic Software Paradigms: Background For UML Discussions Procedural Object-Oriented Components

Procedural Common definition is that Computer program stores algorithms separate from data Algorithms retrieve, transform, and store data Weakness is that a data change may ripple through an entire program

Object-Oriented Key idea - Encapsulation Key language concepts: Store data and algorithms to manipulate data together Hide implementation details behind Interface Key language concepts: Identity Classification Polymorphism Inheritance Identity: data quantized into discrete identifiable chunks Classification: Objects with same data structures (attributes) and behaviors (processes) are grouped together into classes Polymorphism: same operation may perform differently on different objects: move Window – Chess Piece Inheritance: sharing of attributes and operations on a hierarchical basis

O-O Heresies from Dr. Thompkins Encapsulation and Polymorphism are properties of interface design, not programming languages Inheritance is certainly one way to generate reuse, but interface design is probably the first order effect Essentially all complex software constructs are only modifiable by their original developers, regardless of the language they are written in. Interface design is the key way to evolve systems that utilize multiple constructs

Components Key principles Encapsulation – Polymorphism Late Binding Focus reuse efforts on composition at the interface design level not inheritance Late-Binding gives interoperability across languages and systems Component Infrastructures Sun and J2E2 Microsoft and .Net CORBA HLA and TENA ???

Comments On The Object-Model Approval Task Group has been tasked to review some detailed mdels developed over time by the technical specialists DR&CG needs to be clear on what value it plan to add to that process before we “design” the process. I believe there needs to be additional focus at levels of abstraction above the Object Models Some examples: What are the common usage scenarios What qualities must an infrastructure provide to support those scenarios Build some example applications that can be distributed to potential users

Break And Questions

Software Architecture Descriptions UML: Unified Modeling Language More that 100 symbols at my last count The issue is what/when to use: Development process view Architecture view

Development Process View Inception Why Scope Elaboration Risk Assessments Requirements Skills Technology High Level Design Iterative Construction Phase 1 Phase 2 Phase N UML Tools Use Cases Context Diagrams Class Diagrams Activity Diagrams UML Tools Component Diagrams State Charts Sequence Diagrams

Context diagram

Activity Diagrams

More Relevant Context Diagram

Use Cases Describes things the system does to provide to provide value to the Actors Usually text that focus on key success paths Failures tackled as separate Use Cases Typical Components Name Assumptions Pre-conditions Dialog Post – conditions Exceptions Future Enhancements Issues

Using UML For Software Architecture Representations Interfaces Dynamic Behavior Structure Conceptual Framework Class Diagrams application domain software design

Class Diagram

Class Diagram Static Structure: things that exist and their relationships, some to become software objects, some not

Structure Requirements Stage Context Diagrams Development Stages Software components databases, software entities CRC card level Interfaces Dynamic Behavior Structure Conceptual Framework

Component Specifications A Unique Name Responsibilities Functions and Methods Collaborators Other Components that must be interfaced with Notes System constraints on the components, e.g., concurrency and persistence Issues List of issues remaining to be resolved

Component structure example

Dynamic Behavior My personal opinion is that trying to document the flow of messages between objects is too hard. I suggest one stick with activity diagrams at requirements and design stage and state charts as formality is needed Interfaces Dynamic Behavior Structure Conceptual Framework

State Charts

Sequence Diagrams

Interfaces Dynamic Behavior Structure Conceptual Framework Stick with an IDL description for the interfaces