SOFTWARE ARCHITECTURE IN OBJECT ORIENTED PROGRAMMING

Similar documents
How To Design Software

Using UML Part One Structural Modeling Diagrams

Masters of Science in Software & Information Systems

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

Data Modeling Basics

How To Draw A Cell Phone Into A Cellphone In Unminimal Diagram (Uml)

Object-oriented design methodologies

UML basics: An introduction to the Unified Modeling Language

UML Tutorial: Part 1 -- Class Diagrams.

A UML Introduction Tutorial

Course Computer Science Academic year 2012/2013 Subject Software Engineering II ECTS 6

Information systems modelling UML and service description languages

Analysis and Design with UML

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

Menouer Boubekeur, Gregory Provan

I219 Software Design Methodology

Using UML Part Two Behavioral Modeling Diagrams

UML: Unified Modeling Language

Chap 1. Introduction to Software Architecture

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

Rose/Architect: a tool to visualize architecture

TOGAF usage in outsourcing of software development

Object-Oriented Systems Analysis and Design

A Quantitative Approach to Strategic Design of Component-Based Business Process Models

SOFTWARE PROCESS MODELS

In this Lecture you will Learn: Systems Development Methodologies. Why Methodology? Why Methodology?

Zen of VISIO Leona Rubin WebTechNY User Group Date: September, 2008

A Review of an MVC Framework based Software Development

PATTERN-ORIENTED ARCHITECTURE FOR WEB APPLICATIONS

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

Object Oriented Programming. Risk Management

The most suitable system methodology for the proposed system is drawn out.

Algorithms, Flowcharts & Program Design. ComPro

Software Design. Design (I) Software Design Data Design. Relationships between the Analysis Model and the Design Model

Component Based Development in Software Engineering

Tool Support for Software Variability Management and Product Derivation in Software Product Lines

Unit I Page No. 1 System Development Object Basics Development Life Cycle Methodologies Patterns Frameworks Unified Approach UML

Chapter 1 - From Beginning to End: An Overview of Systems Analysis and Design Lecture Notes

Component Based Development Methods - comparison

Designing Real-Time and Embedded Systems with the COMET/UML method

Universiti Teknologi MARA. Requirement Analysis Using UML Approach for Research Management System (RMS)

Development/Maintenance/Reuse: Software Evolution in Product Lines

Types of UML Diagram. UML Diagrams OOAD. Computer Engineering Sem -IV

Business Modeling with UML

Software Requirements Specification of A University Class Scheduler

Business Process Management Initiative - BPMN and the BPCNOM Style

PROJECT MANAGEMENT METHODOLOGY OF OBJECT- ORIENTED SOFTWARE DEVELOPMENT

ISSUES OF STRUCTURED VS. OBJECT-ORIENTED METHODOLOGY OF SYSTEMS ANALYSIS AND DESIGN

SAPM Overview Semester Summary

Syllabus M.C.A. Object Oriented Modeling and Design usung UML

UML for C# Modeling Basics

Generating Aspect Code from UML Models

A Software process engineering course

JOURNAL OF OBJECT TECHNOLOGY

Teaching Object-Oriented Software Design within the Context of Software Frameworks

The Online Grade Book A Case Study in Learning about Object-Oriented Database Technology

Formalization of Functional Requirements and Their Traceability in UML Diagrams A Z Notation Based Approach

Defining a generic information model for addressing new service offers in a competitiv scenario

Manage Software Development in LabVIEW with Professional Tools

How To Develop Software

Visible Business Templates An Introduction

Component visualization methods for large legacy software in C/C++

The Software Industry and Software Engineering

A SYSTEMATIC APPROACH FOR COMPONENT-BASED SOFTWARE DEVELOPMENT

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

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

Using Use Cases for requirements capture. Pete McBreen McBreen.Consulting

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

CS 487. Week 8. Reference: 1. Software engineering, roger s. pressman. Reading: 1. Ian Sommerville, Chapter 3. Objective:

A Software Engineering Approach For GIS Developing

The Unified Software Development Process

PHP Code Design. The data structure of a relational database can be represented with a Data Model diagram, also called an Entity-Relation diagram.

Server-Side Scripting and Web Development. By Susan L. Miertschin

Lecture 12: Entity Relationship Modelling

Increasing Development Knowledge with EPFC

CMMI and IBM Rational Unified Process

Software Engineering. System Models. Based on Software Engineering, 7 th Edition by Ian Sommerville

Umbrello UML Modeller Handbook

Programming Language Constructs as Basis for Software Architectures

Software Development in the Large!

How To Develop A Telelogic Harmony/Esw Project

A pattern based approach to defining the dynamic infrastructure of UML 2.0

Information Systems Analysis and Design CSC John Mylopoulos. Software Architectures Information Systems Analysis and Design CSC340

SAPM Overview. Semester Summary. Project management. Tools (1) Dr. James A. Bednar

The Rap on RUP : An Introduction to the Rational Unified Process

Introduction. UML = Unified Modeling Language It is a standardized visual modeling language.

USING UML FOR OBJECT-RELATIONAL DATABASE SYSTEMS DEVELOPMENT: A FRAMEWORK

The value of modeling

UML SUPPORTED SOFTWARE DESIGN

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

CT30A8901 Chapter 10 SOA Delivery Strategies

Modeling Web Applications Using Java And XML Related Technologies

A LOOK BACK: UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW

Modeling the User Interface of Web Applications with UML

A Modular Approach to Teaching Mobile APPS Development

Family: Iterative Enhancement Origin: Ivar Jacobson, James Rumbaugh, Grady Booch, 1996 Defines process framework that is adaptable to

not necessarily strictly sequential feedback loops exist, i.e. may need to revisit earlier stages during a later stage

Evaluation of Students' Modeling and Programming Skills

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

Incorporating Aspects into the UML

Transcription:

SOFTWARE ARCHITECTURE IN OBJECT ORIENTED PROGRAMMING Submitted by: Oreoluwa Alebiosu Kansas State University Department of Computing and Information Sciences Manhattan, KS 66506 May 10, 2013

ABSTRACT Alebiosu, O. May 11, 2013. Software Architecture in Object Oriented Programming Software development procedures have reached a defining stage where new developers aim to work on large software projects and experts aim to enhance their knowledge in software architecture. As freelance programming occupations have become more available to developers, the hopes of gaining an immediate knowledge in software development are common. This literature review addresses this issue towards software engineers and computer science majors, in order, to provide them with knowledge about object oriented programming, which is one of the most frequently used software development procedures in the technology industry. In this literature review, terms used in object oriented programming are defined, as well as, more complex concepts and ideas used in programming. Examples of object oriented programs are illustrated in this review. Diagrams showcased include class diagrams, object diagrams, real world implementation results, and software design patterns. Finally, this review summarizes the ideas and concepts then provides recommendation for further readings in the topic. Key Terms: software architecture, class diagram, object diagram, software design patterns Alebiosu - ii

Table of Contents List of Illustrations... iv Introduction...1 Importance of Software Architecture...2 An Architecture Defines the Structure of Software Programs...2 An Architecture Defines Behavior of Different Objects....2 Allows for Re-usability or Adaptability into a Different System....3 Methods...3 Results...4 Unified Modeling Language Diagrams....4 Class Diagrams....4 Object Diagrams....5 Discussion...6 Model-View-Controller....8 Conclusion....9 Recommendation....9 References....10 Alebiosu - iii

List of Figures Figure 1 Unified Modeling Language (UML) class diagram...2 Figure 2 Common UML notations...4 Figure 3 An object diagram of students taking an exam...6 Figure 4 Class diagram that generates the object diagram of students taking an exam...7 Figure 5 MVC pattern that depicts the structural relationship between the three objects...8 Alebiosu - iv

INTRODUCTION This report is an effort to provide information for new developers on the basics of software architecture, focusing on Object Oriented Programming (OOP). More specifically, if the new developer has a minimum of three or more years of continuous development experience and an interest to learn more about recent techniques or practices in software architecture in object oriented programming. Since the late 1980 s, software architecture research has emerged as the principled study of the large-scale structures of software systems. From its roots in qualitative descriptions of empirically observed useful system organizations, software architecture has matured to encompass broad explorations of notations, tools, and analysis techniques. Whereas initially the research area interpreted software practice, it now offers concrete guidance for complex software design and development. It has made the transition from basic research to an essential element of software system design and construction (Eelses, 2006). Software architecture describes a strategic design used in implementing component-based software systems by using blueprints and architectural design patterns (Schmidt, 2013). An example of an architectural design pattern in object oriented programming is Model-View- Controller. The Model-View-Controller (MVC) architectural pattern separates an application into three main components: the model, the view, and the controller. The model serves as the backend or database of the application, the controller performs all the necessary computation and enforces the user input and interaction between the model and view. Views are the components that act as the application s user interface. This architectural pattern is described in more detail in this report. Object oriented programming is a slightly old design philosophy in software architecture and development; however, it is the most used design method in the technology industry. To understand the concept of object oriented programming, a few terms have to be defined. These terms are class and objects. A class is a template for allocating a frame or namespace and defining functions (methods) that access the frame. An object is the frame or namespace that is allocated when you construct a new instance of a class template (Schmidt, 2013). As emphasis in programming were placed on objects and no longer actions or procedures, the adoption of object oriented programming came about as a programming language model organized around objects rather than actions, data, or logic. Alebiosu - 1

Importance of Software Architecture Architecture matters from a technical perspective, as it defines the structure of a software program, the behavior of each entity in the program, and allows for a more flexible adaptability of the program into a larger scale software program. An Architecture Defines the Structure of Software Programs The structure of different elements in a software system is easily identifiable if the software architecture of this program is designed. Figure 1: Unified Modeling Language (UML) class diagram showing structural elements, by Eelses (2006). Source: Eeles, P. (2006). IBM - United States. What is Software Architecture? <http://www.ibm.com/developerworks/rational/library/feb06/eeles/> Accessed May 04, 2013. The figure above shows a UML class diagram containing some structural elements that represent an order processing system. Here we see three classes -- OrderEntry, CustomerManagement, and AccountManagement. The OrderEntry class is depends on the CustomerManagement class and also the AccountManagement class. These different entities are easily identifiable and their dependencies are also illustrated in the figure above (Eeles, 2006). An Architecture Defines Behavior of Different Objects As well as defining structural elements, an architecture describes the interactions between these structural elements. Each class in software architecture has a defined attribute or capability, so when the class diagram from Figure 1 is executed, different interactions between the structural elements occur. From Figure 1 above, we may implement five different interactions. First, a Sales Clerk (user) creates an order using an instance of the OrderEntry class from Figure 1. The OrderEntry instance gets customer details using an instance of the CustomerManagement class. The OrderEntry instance then uses an instance of the AccountManagement class to create the order, populate the order with order items, and then place the order (Eeles, 2006). These interactions define the behavior of the objects in our software program, and even without running the program, we will understand this behavior by looking at the software architecture of the program. Alebiosu - 2

Allows for Re-usability or Adaptability into a Different System Software architecture constitutes a relatively small, intellectually graspable model for how a system is structured and how its elements work together, and this model is transferable across systems. In particular, it can be applied to other systems exhibiting similar quality attribute and functional requirements and can promote large scale re-use of the software as its different elements are easily identifiable (Verma, Dahiya, & Jain, 2010). In Kansas State University, K- State Online is as a simple, yet powerful, set of tools designed to deliver engaging and interactive online classroom ( KSOL index page, n.d.). K-State Online constitutes different objects that accomplish specified tasks. An example of these objects is a notepad that can be noticed on the index page of K-State Online s website. The notepad is an object in K-State Online and can be re-used in a different application, by obtaining the source code or executable program of the notepad and adding it as a plug-in into a different software system. The software architecture of a program makes it easy to know if the notepad depends on other objects. If the notepad depends on other objects, its dependencies as well shall be included as a plug-in into the different software system. This report shall explain and describe different introductory concepts and ideas used in software architecture in object oriented programming by utilizing various diagrammatic representations such as class diagrams and object diagrams. The different components of a class diagram and object diagram are described in order to accomplish this task. The discussion section of this report illustrates various examples of class and object diagrams, and the relationship between different entities in the diagrams. Finally, a conclusion and recommendation is made for readers who are interested in more advanced topics in software architecture. METHODS Some of the diagrammatic representations of software architecture and development patterns in object oriented programs that are used in this review were developed on NClass and StarUML. Both of these development tools are free UML class designers used in building small-scale software architecture and design patterns. The class diagrams and object diagrams used in the discussion section to explain the relationships between different objects in object oriented programming were obtained from lecture notes provided to me by Professor Schmidt from the Department of Computing Science at Kansas State University. Definitions and descriptions of recent practices and techniques in object oriented programming were obtain from Microsoft s Developer Network library, IBM Developer work s library, and Association for Computing Machinery (ACM) Digital Library. These techniques are used in explaining the diagrammatic representations used. Alebiosu - 3

RESULTS Unified Modeling Language Diagrams Unified Modeling Language, commonly known as UML, is an object-oriented system of notation that evolved from the work of Grady Booch, James Rumbaugh, Ivar Jacobson, and the Rational Software Corporation. These computer scientists aimed to standardize the pattern used to illustrate the relationship between objects in software architecture. Today, UML is accepted by the Object Management Group (OMG), an international, open membership, not-for-profit computer industry standards consortium, as the standard for modeling object oriented programs (Software Design Tutorials, n.d.). There are several types of UML diagrams; however, this report focuses only on the two major types which are class diagrams and object diagrams. Class Diagrams Class diagrams are used to describe the types of objects in a system and their relationships. Class diagrams model class structure and contents using design elements such as classes, packages and objects. It describes the information without reference to any particular implementation (Eelses, 2006). UML notations are used in describing the relationships between different entities in a class diagram. Below are UML notations that are mentioned on Microsoft Developer Network s library: Figure 2: Common UML notations, by Nirosh (2011). Source: Nirosh, L.W.C. (2011) Introduction to Object Oriented Programming Concepts (OOP) and more. < http://www.codeproject.com/articles/22769/introduction-to-prog Object-Oriented- Programming-Concept> Accessed April 12, 2013. Alebiosu - 4

Association: An association indicates that the system you are developing stores links of some kind between the instances of the associated types. It may also be defined as dependency (coupling): A refers to B, or A needs B to compile correctly and A retains a handle to B in a field. Inheritance: Also called generalization, means the specific classifier inherits part of its definition from the general classifier. The general classifier is at the arrow end of the connector. Attributes, associations, and operations are inherited by the specific classifier (Eelses, 2006). Realization: Realization indicates that a client model element is an implementation of the supplier model element, and the supplier model element is the specification. Dependency: This is an indication of a relationship that shows that an element, or set of elements, requires other model elements for their specification or implementation. The element is dependent upon the independent element, called the supplier (Eelses, 2006). Aggregation: An association representing a shared ownership relationship or an entity as a part of, or as subordinate to, another entity. Composition: An Association represents a structural relationship that connects two entities. This structural relationship stems from the attributes and variables of both entities. o Multiplicity (*): Multiplicity is indicated by an asterisk symbol (*). This symbol is used to define a range of number of instances or attributes of a class that is shared between the two entities that are connected by the arrow of composition ( UML Class Diagrams: Reference, n.d.). Object Diagrams Objects act as an instance of a model element or entity in a class diagram. In software architecture, object diagrams provide a snapshot of the instances that are being executed in a system and the relationships between the instances (Eelses, 2006). Object diagrams allow developers to easily explore the behavior of a system at a point in time. An object diagram is a UML structural diagram that shows the instances of the classifiers in models. Object diagrams use notation that is similar to that used in class diagrams. However, while class diagrams show the actual classifiers and their relationships in a system, object diagrams show specific instances of those classifiers and the links between those instances at a point in time (Eelses, 2006). Below is a discussion that describes how class diagrams and object diagrams are used in software architecture for object oriented programs. Alebiosu - 5

DISCUSSION Object diagrams can be illustrated in various formats depending on the developer. Below is an, easy to follow, diagrammatic representation of a typical object diagram. Figure 3: An object diagram of students taking an exam, by Schmidt (2013). Source: Schmidt, D. (2013). CIS501 lectures: Software Architecture. <http://people.cis.ksu.edu/~schmidt/501s13/lectures/lecture03s.html> Accessed March 24, 2013. Figure 1 illustrates the object diagram of what an exam simulation might look like while the software program is executing. The design of a computer simulation of students taking an exam will entail multiple students; each student owns a pencil, exam sheet, and papers (which is illustrated as a list in Figure 1). All students should have separate materials; however, they all depend on one clock which is noted by the proctor. The computer must construct objects for the entities just described. The object diagram in Figure 1 gives big clues about what classes must be written for the simulation in the Figure to occur. Below is a class diagram that could generate the above object diagram from Figure 1: Alebiosu - 6

Figure 4: Class diagram that generates the object diagram of students taking an exam, by Schmidt (2013). Source: Schmidt, D. (2013). CIS501 lectures: Software Architecture. <http://people.cis.ksu.edu/~schmidt/501s13/lectures/lecture03s.html> Accessed March 24, 2013. Figure 2 is the class diagram that is designed to execute and create objects shown from Figure 1. The boxes represent entities such as classes, interfaces, and code fragments. Within a class box, the fields and methods are listed. Within an interface box, the methods are listed. The arrows are standard UML notations that define the relationships between each entity. The solid arrow ( ) that goes from the Student class to Examsheet class is an association, which is also known as coupling. This means a Student refers to and depends on an Examsheet, or a Student retains a handle to an Examsheet in its field. The dashed arrow ( ----> ) defines dependency, but where there is not a field to remember the entity depended upon. A solid arrow with a diamond at its base ( ) defines composition. From the Figure 2 above, a Student owns a Paper. This is a stronger form of dependency and occurs when the initial class constructs the composed entity. A dashed line with a white arrowhead ( --- > ) defines realization. Both Pencil and Pen class act as a Tool, therefore the Tool is an interface and its attributes are being realized by its sub-entities (Nirosh, 2011). Alebiosu - 7

The word label on a solid arrow gives the name of the attribute that is declared within the class that depends on an entity, and the asterisk (*) information states the multiplicity which is how many of the objects is remembered. Names of collections are enclosed in braces, and the - means a certain variable or method is private to a particular class box. Figure 2 was able to effectively illustrate a small-scale software program that encompasses only 7 entities, with less than 4 attributes in its class box. However, a class diagram for a large-scale software program may contain hundreds, and possibly thousands, of entities that interact with each other. It is almost impossible to show a large-scale software architectural diagram with such simplicity by using a basic class diagram. This led to the introduction of the Model-View-Controller (MVC) pattern (Steve, 1992). Model-View-Controller The Model-View-Controller (MVC) pattern separates the modeling of the domain, the presentation, and the actions based on user input into three separate classes. Figure 5: MVC pattern that depicts the structural relationship between the three objects ( Model View Controller, n.d.). Source: Model View Controller. Web Presentation Patterns. <http://msdn.microsoft.com/enus/library/ff649643.aspx> Accessed May 04, 2013. Model: The model manages the behavior and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller). The model in a software architecture pattern will contain all entities that a used as a backend or database in a software program (Schmidt, 2013). View: The view manages the display of information. It shall contain all entities that are used interacting with the user. Controller: The controller interprets the mouse and keyboard inputs from the user, informing the model and/or the view to change as appropriate. Controllers contain entities that are used to enforce the proper use of models and views in this design pattern ( Model View Controller, n.d.). Alebiosu - 8

CONCLUSION In summary, a class is a template for allocating a frame or namespace and defining functions (methods) that access the frame. An object is the frame or namespace that is allocated when you construct a new instance of a class template (Schmidt, 2013). Class diagrams and object diagrams are the two major types of Unified Modeling Language (UML) diagrams used in illustrating the interactions between different objects in object oriented programming. The knowledge of object oriented programs is necessary in large scale software development and this literature review has provided its readers with the most recent information and techniques in building class diagrams and object diagrams. It is important to understand the components that were used in designing the class diagrams illustrated, as they act as the major concepts and ideas that encompasses software architecture in object oriented programming. A further reading is recommended for this topic. The Model-View-Controller (MVC) software architecture was briefly discussed, and the scope of this design pattern and concept extends this literature review. RECOMMENDATION With the knowledge gained from this review, developers can approach the Model-View- Controller architecture and more complex design patterns which include factories, iterators, proxies, and wrappers. Below are suggested sources for further readings in this topic: A book written by Dr. Masaaki Mizuno, from the Department of Computing and Information Sciences, Kansas State University, called Software Architecture and Design Part 2: Object-Oriented Design Patterns. Microsoft Developer Network is also recommended for developers who are interested in obtaining code samples on how these patterns can be implemented and used in building different software programs. Alebiosu - 9

REFERENCES Eeles, P. (2006). IBM - United States. What is Software Architecture? Retrieved May 04, 2013, from http://www.ibm.com/developerworks/rational/library/feb06/eeles/ KSOL index page. K-State Online. Retrieved May 10, 2013, from http://public.online.ksu.edu/ UML Class Diagrams: Reference. Reading Class Diagrams. Retrieved May 04, 2013, from http://msdn.microsoft.com/en-us/library/vstudio/dd409437.aspx Model View Controller. Web Presentation Patterns. Retrieved May 04, 2013, from http://msdn.microsoft.com/en-us/library/ff649643.aspx Mizuno, M. (2013). CIS 501 Software Architecture and Design (Part 2) Design Patterns. Nirosh, L.W.C. (2011) Introduction to Object Oriented Programming Concepts (OOP) and more. Retrieved from http://www.codeproject.com/articles/22769/introduction-to-prog Object-Oriented-Programming-Concept. Schmidt, D. (2013). CIS501 lectures: Software Architecture. Retrieved from http://people.cis.ksu.edu/~schmidt/501s13/lectures/lecture03s.html Software Design Tutorials. Retrieved May 02, 2013, from http://www.smartdraw.com/resources/tutorials/uml-diagrams/ Steve, B. (1992). Applications Programming in Smalltalk-80(TM): How to use Model-View- Controller (MVC). Urbana: University of Illinois at Urbana-Champaign. Retrieved from http://st-www.cs.illinois.edu/users/smarch/st-docs/mvc.html Verma, P. K., Dahiya, D., & Jain, P. (2010). Using Aspect Oriented Software Architecture for Enterprise Systems Development. Digital Information Management (ICDIM), 2010 Fifth International Conference on. Alebiosu - 10