CSC/ECE 517 Fall 2010/ch6 6k JP: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
 
(38 intermediate revisions by the same user not shown)
Line 1: Line 1:
- This page is currently under construction -
==Similarities of Enterprise Architecture and Object Oriented Programming==


==Similarities of Enterprise Architecture and Object Oriented Programming==
'''Enterprise Architecture''' describes a plan or strategy to incorporate a systems different divisions into an efficient system for achieving a system's goals.  Similarly, '''Object Oriented Programming''' describes a design of classes and objects working together to achieve a particular output.  Enterprise Architecture is a overarching term that deals with a number of different systems within an organization, most notably Information Technology.  So it is no coincidence that similarities exist between Enterprise Architecture and Object Oriented Programming.
 
Enterprise Architecture methodologies were created to address the increasing complexity of information systems in large organizations.  Software Engineering is a growing field created by the need to organize more and more complex applications.  The airport example has been used many times in class when discussing design for an application.  Consider the complexity of designing an airline company which consists of one airport hub and one plane.  This example is fairly trivial and can probably be completed by one individual.  Now consider an airline management design that deals with multiple airport hubs, with multiple planes, connecting flights, delays, gate changes, and flight schedules.  That example is many times more complex.  As the IT and management needs for industries grew more and more, the industries needed a more structured approach to design these systems, Enterprise Architectures fulfilled that role.


Enterprise Architecture describes a plan or strategy to incorporate a companies different divisions into an efficient system for achieving a company's goals.  Similarly, Object Oriented Programming describes a design of classes and objects working together to achieve a particular output.
This chapter will discuss some of the major methodologies of Enterprise Architecture and how their underlying principals reflect the underlying principals of Software Engineering and Object Oriented programming design.
<br />
Enterprise Architecture is a overarching term that deals with a number of different systems within an organization, including Information Technology.  So it is no coincidence that similarities exist between Enterprise Architecture and Object Oriented Programming.
<br />
Enterprise Architecture methodologies were created to address the increasing complexity of information systems in large organizations.  Software Engineering is a growing field created by the need to organize more and more complex applications.
<br />
The airport example has been used many times in class when discussing design for an application.  Consider the complexity of designing an airline company which consists of one airport hub and one plane.  This example is fairly trivial and can probably be completed by one induvidual.  Now consider an airline management design that deals with multiple airport hubs, with multiple planes, connecting flights, delays, gate changes, and flight schedules.  That example is many times more complex.  As the IT and management needs for industries grew more and more, the industries needed a more structured approch to design these systems, Enterprise Architectures fulfilled that role.
<br />
This chapter will discuss some of the major methodologies of Enterprise Architecture and how their underlying principals reflect the underlying principals of Software Engineering and Object Oriented programmig design.


__TOC__
__TOC__
Line 20: Line 14:
====The Zachman Framework for Enterprise Architectures====
====The Zachman Framework for Enterprise Architectures====


Many attribute the beginnig of the term "Enterprise ARchitectures" to an article written by J. A. Zachman, "A framework for information systems architecture". [2]  Zachman describes the framework as "simply a logical structure for classifying and organizing the descriptive representations of an Enterprise that are significant to the management of the Enterprise, as well as to the development of the Enterprise's systems" [3]  Paramount to this framework is the classification of artefactsArtefacts can be anything from a design document or a model or a diagram. [1]  Zachman breaks up the overall design based on the key players of the system (Planner, Business Owner, Designer, Implementer, and Subcontractor) and the jobs that they have, then for each job and player there is a spcific type of artefact. [4]
Many attribute the beginning of the term "Enterprise Architectures" to an article written by J. A. Zachman, "A framework for information systems architecture". [2]  Zachman describes the framework as "simply a logical structure for classifying and organizing the descriptive representations of an Enterprise that are significant to the management of the Enterprise, as well as to the development of the Enterprise's systems" [3]  Paramount to this framework is the classification of artifactsArtifacts can be anything from a design document or a model or a diagram. [1]  Zachman breaks up the overall design based on the key players of the system (Planner, Business Owner, Designer, Implementer, and Subcontractor) and the jobs that they have, then for each job and player there is a specific type of artifact. [4]  A good diagram of the Zachman Framework can be found here, [http://sonoffiverivers.com/2010/02/the-business-analyst%E2%80%99s-toolbox/ The Business Analyst’s Toolbox]


picuture:
In OOD/OOA we also classify our design documents into specific types based on the job at hand.  CRC Cards, UML Diagrams, Inheritance modeling, and Use-case diagrams are all examples of artifacts used in OOD/OOA.  The person designing the database schema for an application doesn't necessarily need to know the class hierarchy and the person designing the class hierarchy doesn't necessarily need to know the details of the database schema.  With OOD/OOA specific diagrams and documents are created and used by the appropriate parties.  This is the same concept in the Zachman Framework for Enterprise Architectures.
http://sonoffiverivers.com/2010/02/the-business-analyst%E2%80%99s-toolbox/
 
In OOD/OOA we also classify our design documents into specific types based on the job at hand.  CRC Cards, UML Diagrams, Inheritance modeling, and Use-case diagrams are all examples of artefacts used in OOD/OOA.  The person designing the database schema for an application doesn't nessesarily need to know the class heierarchy and the person designing the class heierarchy doesn't nessesarily need to know the details of the database schema.  With OOD/OOA specific diagrams and documents are created and used by the appropriate parties.  This is the same concept in the Zachman Framework for Enterpise ARchitectures.


====The Open Group Architecture Framework (TOGAF)====
====The Open Group Architecture Framework (TOGAF)====


TOGAF takes the Zachman approch one step further, and defines a process to help you create your design specifications.  Basically, the TOGAF takes an overall design or architecture and breaks it up into seperate categories or levels.  The levels are ordered from very general to very specific. [1]  The process involves the design of each level in that order.  In OOD/OOA we also have taken this approch.  Software engineers do not start creating inheritance heirarchies before they know what classes they need; they also don't making class diagrams before reviewing the system requirements document.
TOGAF takes the Zachman approach one step further, and defines a process to help you create your design specifications.  Basically, the TOGAF takes an overall design or architecture and breaks it up into separate categories or levels.  The levels are ordered from very general to very specific. [1]  The process involves the design of each level in that order.  In OOD/OOA we also have taken this approach.  Software engineers do not start creating inheritance hierarchies before they know what classes they need; they also don't making class diagrams before reviewing the system requirements document.  [http://msdn.microsoft.com/en-us/library/bb466232.aspx A Comparison of the Top Four Enterprise-Architecture Methodologies] contains a good [http://i.msdn.microsoft.com/dynimg/IC90893.gif diagram of the TOGAF process], showing the different architecture levels and the Architecture Development Method (ADM) defined in the TOGAF.


picture:
Similar to the levels of enterprise architecture setup in the Open Group Framework, there are different levels of software design [7]:
http://i.msdn.microsoft.com/dynimg/IC90893.gif


Similar to the levels of enterprise architecture setup in the Open Group Framework, Skrien describes three levels of OOA and OOD:
:''Requirements analysis, which provides the basic charter for the system's functions''
:''Domain analysis, which provides the key logical structure of the system''
:''System design, which provides the key physical structure of the system''


Requirements analysis, which provides the basic charter for the system's fucntions
In each level, a specific set of documents (or artifacts) are created:
Domain analysis, which provides the key logical structure of the system.
System design, which provides the key physical structure of the system.


In each level, a specific set of documennts (or artefacts) are created:
{| class="wikitable" border="1" style="width:300px"
|-
|'''Requirements Analysis'''
|System Charter
|System Function Statement
|-
|'''Domain Analysis'''
|Class Diagrams
|Inheritance Diagrams
|Use-Case Diagrams
|-
|'''System Design'''
|Package Diagrams
|Component Diagrams
|Sequence Diagrams
|}


picture:
(Diagram taken from [http://courses.ncsu.edu/csc517//common/lectures/notes/lec15.pdf Lecture 15: Introduction to OOA/OOD])
picutre from notes "Object-oriented Languages and Systems" page 3 lecture 15.


====Federal Enterprise Architecture (FEA)====
====Federal Enterprise Architecture (FEA)====


The Federal Enterprise Architecture was created by the federal government to organize the many agencies and divisions. [1]  FEA breaks up common functions of an enterprise into segments. [1]  For example, Human Resourcese, Accounting, and Marketing could all be considered segments that can be used by each agency.  This allows for reuse of designs across many different divisions.  The same working setup for human resoruces in one division can be used in many other divisions
The Federal Enterprise Architecture was created by the federal government to organize the many agencies and divisions. [1]  FEA breaks up common functions of an enterprise into segments. [1]  For example, Human Resources, Accounting, and Marketing could all be considered segments that can be used by each agency.  This allows for reuse of designs across many different divisions.  The same working setup for human resources in one division can be used in many other divisions


picture:
Code reuse and the [http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Summer_2008/wiki2_5_mo D.R.Y principal] are fundamental concepts in object oriented programming.  Reuse-ability, the ability to create code that can be used in many completely different settings, is one of the ten criteria for elegant software. [5]
http://i.msdn.microsoft.com/dynimg/IC19073.gif
 
Code reuse and the D.R.Y principal (link to another wiki) are fundamental concepts in object oriented programming.  Reuseability, the ability to create code that can be used in many completly different settings, is one of the ten criteria for elegant software. [5]


===Enterprise Architecture and Service-Oriented Architecture===
===Enterprise Architecture and Service-Oriented Architecture===


Service-Oriented Architeture is another way of thinking when it comes to design.  Service-Oriented Architeture can mean many things, but generally it means designing a system around the services that system offers.  Enterprise ARchiecture deals with breaking up a system design into its different components, steps, levels and making a process to integrate each one and define how they work together.  Contrastly, Service-Oriented Archiecture breaks a system up into the different outputs and focuses more on loose coupling between the different parts.  Going back to our airline example, a service-oriented approch may be to design an available flight search module, purchasing moduel, flight status checker, and check-in module seperately from one antoher and have each accessible from a common interface.  Web services is a good example of this approch.  These seperate systems wouldn't nessisarly need to be directly tied to one another, but can be called throught he common interface. [6]
Service-Oriented Architecture is another way of thinking when it comes to design.  Service-Oriented Architecture can mean many things, but generally it means designing a system around the services that system offers.  Enterprise Architecture deals with breaking up a system design into its different components, steps, levels and making a process to integrate each one and define how they work together.  Contrastingly, Service-Oriented Architecture breaks a system up into the different outputs and focuses more on loose coupling between the different parts.  Going back to our airline example, a service-oriented approach may be to design an available flight search module, purchasing module, flight status checker, and check-in module separately from one another and have each accessible from a common interface.  Web services is a good example of this approach.  These separate systems wouldn't necessarily need to be directly tied to one another, but can be called through he common interface. [6]


== References ==


[1] http://msdn.microsoft.com/en-us/library/bb466232.aspx
[1] Sessions, Roger.  "[http://msdn.microsoft.com/en-us/library/bb466232.aspx A Comparison of the Top Four Enterprise-Architecture Methodologies]".  ''ObjectWatch''.  ObjectWatch, Inc.  May 2007.


[2] http://msdn.microsoft.com/en-us/library/aa479371.aspx
[2] Sessions, Roger.  "[http://msdn.microsoft.com/en-us/library/aa479371.aspx A Better Path to Enterprise Architectures]".  April 2006.


[3] Zachman, John A. "The Framework for Enterprise Architecture: Background, Description and Utility." Zachman Institute for Framework Advancement (ZIFA). Document ID: 810-231-0531
[3] Zachman, John A. "The Framework for Enterprise Architecture: Background, Description and Utility." Zachman Institute for Framework Advancement (ZIFA). Document ID: 810-231-0531


[4] http://sonoffiverivers.com/2010/02/the-business-analyst%E2%80%99s-toolbox/
[4] [http://sonoffiverivers.com/2010/02/the-business-analyst%E2%80%99s-toolbox/ The Business Analyst Toolbox]
 
[5] Skrien, Dale. (2009).  "Object-Oriented Design Using Java".  New York, NY.  McGraw-Hill Companies, Inc.


[5] Skrien
[6] Ibrahim, Mamdouh and Gil Long.  "[http://www.ibm.com/developerworks/webservices/library/ws-soa-enterprise1/ Service-Oriented Architecture and Enterprise Architecture]".  26 Apr 2007.


[6] http://www.ibm.com/developerworks/webservices/library/ws-soa-enterprise1/
[7] [http://courses.ncsu.edu/csc517//common/lectures/notes/lec15.pdf Lecture 15: Introduction to OOA/OOD]

Latest revision as of 23:04, 17 November 2010

Similarities of Enterprise Architecture and Object Oriented Programming

Enterprise Architecture describes a plan or strategy to incorporate a systems different divisions into an efficient system for achieving a system's goals. Similarly, Object Oriented Programming describes a design of classes and objects working together to achieve a particular output. Enterprise Architecture is a overarching term that deals with a number of different systems within an organization, most notably Information Technology. So it is no coincidence that similarities exist between Enterprise Architecture and Object Oriented Programming.

Enterprise Architecture methodologies were created to address the increasing complexity of information systems in large organizations. Software Engineering is a growing field created by the need to organize more and more complex applications. The airport example has been used many times in class when discussing design for an application. Consider the complexity of designing an airline company which consists of one airport hub and one plane. This example is fairly trivial and can probably be completed by one individual. Now consider an airline management design that deals with multiple airport hubs, with multiple planes, connecting flights, delays, gate changes, and flight schedules. That example is many times more complex. As the IT and management needs for industries grew more and more, the industries needed a more structured approach to design these systems, Enterprise Architectures fulfilled that role.

This chapter will discuss some of the major methodologies of Enterprise Architecture and how their underlying principals reflect the underlying principals of Software Engineering and Object Oriented programming design.

Popular Enterprise Architecture Frameworks



The Zachman Framework for Enterprise Architectures

Many attribute the beginning of the term "Enterprise Architectures" to an article written by J. A. Zachman, "A framework for information systems architecture". [2] Zachman describes the framework as "simply a logical structure for classifying and organizing the descriptive representations of an Enterprise that are significant to the management of the Enterprise, as well as to the development of the Enterprise's systems" [3] Paramount to this framework is the classification of artifacts. Artifacts can be anything from a design document or a model or a diagram. [1] Zachman breaks up the overall design based on the key players of the system (Planner, Business Owner, Designer, Implementer, and Subcontractor) and the jobs that they have, then for each job and player there is a specific type of artifact. [4] A good diagram of the Zachman Framework can be found here, The Business Analyst’s Toolbox

In OOD/OOA we also classify our design documents into specific types based on the job at hand. CRC Cards, UML Diagrams, Inheritance modeling, and Use-case diagrams are all examples of artifacts used in OOD/OOA. The person designing the database schema for an application doesn't necessarily need to know the class hierarchy and the person designing the class hierarchy doesn't necessarily need to know the details of the database schema. With OOD/OOA specific diagrams and documents are created and used by the appropriate parties. This is the same concept in the Zachman Framework for Enterprise Architectures.

The Open Group Architecture Framework (TOGAF)

TOGAF takes the Zachman approach one step further, and defines a process to help you create your design specifications. Basically, the TOGAF takes an overall design or architecture and breaks it up into separate categories or levels. The levels are ordered from very general to very specific. [1] The process involves the design of each level in that order. In OOD/OOA we also have taken this approach. Software engineers do not start creating inheritance hierarchies before they know what classes they need; they also don't making class diagrams before reviewing the system requirements document. A Comparison of the Top Four Enterprise-Architecture Methodologies contains a good diagram of the TOGAF process, showing the different architecture levels and the Architecture Development Method (ADM) defined in the TOGAF.

Similar to the levels of enterprise architecture setup in the Open Group Framework, there are different levels of software design [7]:

Requirements analysis, which provides the basic charter for the system's functions
Domain analysis, which provides the key logical structure of the system
System design, which provides the key physical structure of the system

In each level, a specific set of documents (or artifacts) are created:

Requirements Analysis System Charter System Function Statement
Domain Analysis Class Diagrams Inheritance Diagrams Use-Case Diagrams
System Design Package Diagrams Component Diagrams Sequence Diagrams

(Diagram taken from Lecture 15: Introduction to OOA/OOD)

Federal Enterprise Architecture (FEA)

The Federal Enterprise Architecture was created by the federal government to organize the many agencies and divisions. [1] FEA breaks up common functions of an enterprise into segments. [1] For example, Human Resources, Accounting, and Marketing could all be considered segments that can be used by each agency. This allows for reuse of designs across many different divisions. The same working setup for human resources in one division can be used in many other divisions

Code reuse and the D.R.Y principal are fundamental concepts in object oriented programming. Reuse-ability, the ability to create code that can be used in many completely different settings, is one of the ten criteria for elegant software. [5]

Enterprise Architecture and Service-Oriented Architecture

Service-Oriented Architecture is another way of thinking when it comes to design. Service-Oriented Architecture can mean many things, but generally it means designing a system around the services that system offers. Enterprise Architecture deals with breaking up a system design into its different components, steps, levels and making a process to integrate each one and define how they work together. Contrastingly, Service-Oriented Architecture breaks a system up into the different outputs and focuses more on loose coupling between the different parts. Going back to our airline example, a service-oriented approach may be to design an available flight search module, purchasing module, flight status checker, and check-in module separately from one another and have each accessible from a common interface. Web services is a good example of this approach. These separate systems wouldn't necessarily need to be directly tied to one another, but can be called through he common interface. [6]

References

[1] Sessions, Roger. "A Comparison of the Top Four Enterprise-Architecture Methodologies". ObjectWatch. ObjectWatch, Inc. May 2007.

[2] Sessions, Roger. "A Better Path to Enterprise Architectures". April 2006.

[3] Zachman, John A. "The Framework for Enterprise Architecture: Background, Description and Utility." Zachman Institute for Framework Advancement (ZIFA). Document ID: 810-231-0531

[4] The Business Analyst Toolbox

[5] Skrien, Dale. (2009). "Object-Oriented Design Using Java". New York, NY. McGraw-Hill Companies, Inc.

[6] Ibrahim, Mamdouh and Gil Long. "Service-Oriented Architecture and Enterprise Architecture". 26 Apr 2007.

[7] Lecture 15: Introduction to OOA/OOD