Excerpts from Chapter 4, Architectural Modeling -- UML for Mere Mortals by Eric J. Naiburg and Robert A. Maksimchuk



Similar documents
Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note

Information systems modelling UML and service description languages

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering

ARCHITECTURAL DESIGN OF MODERN WEB APPLICATIONS

Singletons. The Singleton Design Pattern using Rhapsody in,c

Organization. Introduction to Software Engineering

Structuring Product-lines: A Layered Architectural Style

Evaluating OO-CASE tools: OO research meets practice

A MODEL OF HETEROGENEOUS DISTRIBUTED SYSTEM FOR FOREIGN EXCHANGE PORTFOLIO ANALYSIS

I219 Software Design Methodology

Extend the value of your core business systems.

Distributed Objects and Components

[2006] IEEE. Reprinted, with permission, from [M. Ye and K. Sandrasegaran, Teaching about Firewall Concepts using the inetwork Simulator, Information

A First Set of Design Patterns for Algorithm Animation

CHAPTER 4: PATTERNS AND STYLES IN SOFTWARE ARCHITECTURE

A Design Pattern for Efficient Retrieval of Large Data Sets from Remote Data Sources

Design Patterns. Design patterns are known solutions for common problems. Design patterns give us a system of names and ideas for common problems.

A Meeting Room Scheduling Problem

Encapsulating Crosscutting Concerns in System Software

SOFT 437. Software Performance Analysis. Ch 5:Web Applications and Other Distributed Systems

Software Refactoring using New Architecture of Java Design Patterns

Introduction. Observation Patterns. Accounting Patterns. How to use Patterns

Applying 4+1 View Architecture with UML 2. White Paper

Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB

Core Issues Affecting Software Architecture in Enterprise Projects

UML TUTORIALS THE USE CASE MODEL

IES - Introduction to Software Engineering

i-questionnaire A Software Service Tool for Data

Patterns in a Nutshell

Service Oriented Architectures Using DoDAF1

A SYSTEMATIC APPROACH FOR COMPONENT-BASED SOFTWARE DEVELOPMENT

Chapter 3. Technology review Introduction

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

A WEB DEVELOPMENT FRAMEWORK FOR TEAM-BASED PROJECT COURSES

An Approach to Software Architecture Description Using UML

Course 4 27 October Adrian Iftene adiftene@info.uaic.ro

Applying Agile Methods in Rapidly Changing Environments

SOFTWARE SECURITY. Collaboration in a Secure Development Process Part 2. Gunnar Peterson. Overview. Tradeoff Analysis in the Design Phase

ten best practices for J2EE development

!! " "!! # $ % " & ' $ % (! %) * +, $ ( ) ' " -

Chapter 13: Program Development and Programming Languages

Enterprise Architecture Modeling PowerDesigner 16.1

Distributed Result Set Iterator: a design pattern for efficient retrieval of large result sets from remote data sources

Introducing Performance Engineering by means of Tools and Practical Exercises

Basic Trends of Modern Software Development

The Perusal and Review of Different Aspects of the Architecture of Information Security

Jenerator Generative Programming for Java

Dynamic Adaptability of Services in Enterprise JavaBeans Architecture

IRA 423/08. Designing the SRT control software: Notes to the UML schemes. Andrea Orlati 1 Simona Righini 2

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements

DEGREE CURRICULUM SOFTWARE ARCHITECTURES Degree in Computer Engineering. Teaching staff: GIL IRANZO, ROSA MARIA GARCIA GONZALEZ, ROBERTO

Using UML Part One Structural Modeling Diagrams

Experiences with ALM tools in Software Engineering course

Acknowledgments. p. 55

Core J2EE Patterns, Frameworks and Micro Architectures

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Software Engineering

25 May Code 3C3 Peeling the Layers of the 'Performance Onion John Murphy, Andrew Lee and Liam Murphy

A Management Tool for Component-Based Real-Time Supervision and Control Systems

UML SUPPORTED SOFTWARE DESIGN

A Configuration Management Model for Software Product Line

A Software Development Process Model Integrating Business Object Technology and UML. Axel Korthaus and Stefan Kuhlins

XFlash A Web Application Design Framework with Model-Driven Methodology

Architectural Patterns (3)

A Comparison of Distributed Systems: ChorusOS and Amoeba

Distributed systems. Distributed Systems Architectures

Done. Imagine it. c Consulting. c Systems Integration. c Outsourcing. c Infrastructure. c Server Technology.

Agile Techniques for Object Databases

Quality Ensuring Development of Software Processes

Pattern-based J2EE Application Deployment with Cost Analysis

Fundamental Concepts and Models

Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6

A Brief Analysis of Web Design Patterns

A Performance Comparison of Web Development Technologies to Distribute Multimedia across an Intranet

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS

RFID Field Guide. Deploying Radio Frequency Identification Systems. Manish Bhuptani Shahram Moradpour. Sun Microsystems Press A Prentice Hall Title

The Role of the Software Architect

Chap 1. Introduction to Software Architecture

The JWAM Framework: Inspired By Research, Reality-Tested By Commercial Utilization

A Thread Monitoring System for Multithreaded Java Programs

Describing, Instantiating and Evaluating a Reference Architecture: A Case Study

Component-Based Software Engineering (CBSE) Announcements

Chapter 13: Program Development and Programming Languages

The Data Access Handbook

Embedded/Real-Time Software Development with PathMATE and IBM Rational Systems Developer

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville

What Is the Java TM 2 Platform, Enterprise Edition?

UML other structural. diagrams. (Implementation Diagrams UML 1.5) Università di Padova. Facoltà di Scienze MM.FF.NN. Informatica - anno

Transcription:

Excerpts from Chapter 4, Architectural Modeling -- UML for Mere Mortals by Eric J. Naiburg and Robert A. Maksimchuk Physical Architecture As stated earlier, architecture can be defined at both a logical and physical level. You will recall that the logical architecture is the more generic view of the architecture and how it works with less technical specificity. The physical architecture, on the other hand, describes in more detail how the software and systems are designed, including specifics about how the architecture must fit into different technologies that exist within the organization and how the software integrates with itself and with other systems. We use several modeling elements and techniques to describe the physical architecture. Component Diagrams Components are made up of one or more classes and describe parts of an application that can be assembled and reused. A component-based architecture (CBD) is the design of a software system made up of multiple components. For efficiency, it is important to develop software based on multiple smaller parts (components), which you can use to assemble the overall system. This enables you to reuse software components instead of writing them all from scratch. Component-based architecture also enables different teams to work on the software and plug their pieces together using what are called interfaces. An interface is a named set of operations that enable the components to work together through this interface code. Interfaces enable you to get and provide information to and from a component using code specific to the technology on which it is deployed. Figure 4-12 shows how a component and interface are displayed on a component diagram. The interface is displayed as a circle, but it can also be displayed as a typical class with the stereotype of <<interface>>. A component diagram can display multiple components and can show how those components integrate together, as seen in Figure 4-13. Figure 4-12 Component with interface. You can use a component diagram and components to model the architecture of different parts of your system. You can also use them to model the application internals, as we just discussed, as well as to view how different applications

work together. For example, consider two executables (.exe), one that starts the other, both modeled as components. When writing Java applications, each Java file is represented in the UML as a component as well. This demonstrates that different levels of the architecture can be (and usually are) modeled as components. As classes represent the logical architecture of code, components represent the physical architecture and identify what has actually been implemented. Figure 4-13 Component diagram Deployment Diagrams Deployment diagrams represent the runtime architecture of your system. A deployment diagram can be made up of nodes that represent a piece of hardware that generally has memory and a processor built in. There are two different types of nodes: processor and device. Figure 4-14 shows what the deployment diagram elements look like. Figure 4-14 Deployment diagram elements Sometimes, a deployment diagram can show multiple applications running on a single device but on different processors. A server, for example, is a device that can have multiple processors running on it. A deployment diagram of a server would show that multiple applications could be running on a single server but on different processors. When trying to understand the information architecture of your organization, it is important to know not only what software exists and how it is architected, but also how the architecture of the systems reside on the hardware. This means

knowing what hardware exists, what software is on what hardware, what servers are used for backup, and how the software is stored on multiple pieces of hardware. An enterprise architecture looks at the overall architecture and how all the pieces fit together. Many organizations, when defining their enterprise architectures, include not just hardware one would typically think of, such as servers, but also other pieces of hardware, such as aircraft, that are part of the enterprise. For instance, the DoDAF, which is used as the framework for the United States Department of Defense enterprise architecture, consists of visualizing the architecture of the different components that make up the information network, and they don t just include what you traditionally think of as software systems, but also airplanes, telecommunication systems, satellites, ships, and more because all these systems are run and managed by software, but often, one wouldn t consider such software in terms of applications. However, when the DoD defines their enterprise architecture, it is very important for them to understand where these applications fit in. Just as the military needs to understand how all facets of its air defense system work together, businesses need to understand how all of their systems work together. Stereotypes You can use stereotypes in all UML diagrams to better define the elements that you are modeling so that everyone who views the models understands what is being modeled and the story that is being told. Standard stereotypes are defined in the UML. We discussed some of them earlier in this chapter, and we will cover more later in this book. A stereotype can be just a title, but it can also carry a picture with it to better define itself and to provide an easy-to-understand graphical view of the UML model. A few stereotypes we have seen used in deployment diagrams display the different types of deployment elements, such as different types of airplanes and ships (see Figure 4-15). As discussed earlier, you also can use a deployment diagram in a more traditional sense: to understand the hardware and applications in your organization and how they exist within the enterprise. Figure 4-16 demonstrates how this can be achieved.

Figure 4-16 Application deployment diagram. Architectural Patterns The UML can also be used to depict architectural patterns. Patterns are repeatable architecture designs that have been tested and proven over time. Some people might say that every design has a pattern, similarly to saying every

design has an architecture, but we are talking about patterns that are well-defined, tested, proven, and often used to improve designs and architectures. Patterns can be used for both logical and physical architectural designs. Many well-known patterns are described in books that go into deep details on their usage. Some of the most popular patterns in the industry are known as the Gang of Four (GoF) patterns. These patterns were developed and made popular by four gentleman, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, in their book Design Patterns: Elements of Reusable Object-Oriented Software. The patterns described in that book are broken into different categories Creational, Structural, and Behavioral. Figure 4-17 is a UML representation of one of the most popular GoF creational patterns called the singleton. Figure 4-17 Singleton pattern. The singleton pattern is applied against an individual class, and it creates several classes in a pattern. As you saw in Figure 4-17, the pattern is applied to a class named Author, and it creates two additional classes including some attributes and operations as part of the pattern. The intent of the singleton pattern is to ensure that a class only has one instance and to provide a global access point to it. [GAMM1] This pattern is quite logical in nature, but it can also be applied using additional methods with specific languages to become more physical. There are also several patterns that are specifically physical in nature. An example of some physical patterns were created by a group of engineers at Sun Microsystems called the Core J2EE Patterns and are described in great detail in a book with the same title. Here, we will look at a pattern known as the Data Access Object (DAO) pattern. An example DAO for a persistent object that represents Customer information is shown in Figure 4-18. The CustomerDAO creates a Customer value object. [ALUR1]

Although the DAO pattern might not be self-explanatory to a mere mortal, it is used in physical architectural design to provide database access in J2EE applications. Just like the logical architectural patterns, physical patterns are applied to existing classes and model elements to create additional elements using standard and proven processes. [ALUR1] Alur, Deepak, Dan Malks, and John Crupi. 2003. Core J2EE Patterns, Second Edition: Best Practices and Design Strategies. Upper Saddle River, NJ: Prentice Hall PTR. [GAMM1] Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley.