EO Software Patterns

Home
EO News
EO Clients
EO Products
EO Services
EO Software
EO Careers
EO Contact
 

Executive Order

Defense and
Aerospace Systems
/\ /\ /\
Computer Software
Consultants and
Professional
Software
Development
Services.

Executive Order
Corporation is
the information
technology
company to offer
business solutions
for every point in
the technology
information supply
chain, including
retailers, carriers,
portals, developers
and enterprises.
/\ /\ /\
At Executive
Order we
make a difference
in your business!

What are patterns / What are Anti Patterns 

What will Patterns do for you / Why use Patterns

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Patterns describe simple and elegant solutions to specific problems in 00 software design.  Each pattern systematically names, explains, and evaluates an important and recurring design in 00 systems.

Each pattern has 4 parts:

Name, which allows developers to speak the same language.

Problem, which describes when the pattern should be applied and in what context it is appropriate.

Solution, which is described in terms of the relationships, responsibilities and collaborations of the objects involved in the pattern.

Consequences of using the pattern, such as the costs and benefits of applying the pattern.

There are 3 types of design patterns:

Creational design patterns concern the process of object creation.  An example is the Singleton pattern which ensures that a class only has one instance, and provides a global point of access to it.

Structural design patterns deal with the composition of classes or objects.  An example is the Composite pattern which composes objects into tree structures to represent part-whole hierarchies and allows clients to treat individual objects and compositions of objects uniformly.

Behavioral design patterns characterize the ways in which classes or objects interact and distribute responsibility.  An example is the Observer pattern which defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.

Patterns are language (and methodology) independent.  They can be used to capture common design practices, frameworks and architectures.  They are also being used to capture existing large legacy systems such as the 4E and GTD-5 switching systems (at GTE and AT&T) and to examine ways to re-engineer process and organizations (Coplien's Process and Organizational Patterns).

Patterns and Software Design.  Thus, when using patterns as part of software design methodology, we get the term used throughout this web - Design Patterns

AntiPatterns are Negative Solutions that present more problems than they address.  AntiPattens bridge the gap between architectural concepts and real-world implementations.  Understanding AntiPatterns provides the knowledge to prevent or recover from them.

AntiPatterns are a method of efficiently mapping a situation to a specific class of solutions.  AntiPatterns provide a real-world experience in recognizing recurring problems in the software industry, providing a detailed remedy fro the most common predicaments.  AntiPatterns provide a common vocabulary for identifying problems and discussing solutions.  AntiPatterns support the holistic resolution of conflicts utilizing organizational resources at several levels, where possible.  AntiPatterns provide stress release in the form of shared misery for the most common pitfalls in the software industry.

Portability - Allow you to develop more portable and extensible software.

Change Management - Allow you to focus on software architecture that accommodates change without impacting existing code.

Parallel Development - Allow you to structure a system to enable parallel Development.

Simplify/Speed Documentation - Give your developers a powerful common vocabulary to drastically improve the productivity of design reviews and make documentation easier to produce and more meaningful.

Simplify On the Job Training - Allow developer experience to be easily and consistently transferred to other by:

-  Providing additional design tools to compliment developers existing experience.
-  Providing ways to capture the existing practice and knowledge in an organization.
-  Gain greater insight into the practice of developing systems/software by understanding the principles at work.

Patterns are a recurring architectural theme that provides a solution to a problem within a particular context.

Patterns enhance Software Development by capturing successful expert practice in an accessible and systematic manner.

Patterns ask for each thing we do:

Why do we do it like this?
What's right about this method?
What principles are at work?
Where else might these principles be applied?
Aids in Problem Understanding
Eases Change Management
Simplifies/Speed Documentation
Simplifies on the Job Training
Enables Flexible Software Development

-  Aids in Problem Understanding

Provides greater insight into the practice of developing systems/software by understanding the principles at work
A good pattern allows not only the recording of existing practices, but provides a context where the solution is appropriate and rationale as to why it works.

-  Erases Change Management

Allows one to focus on software architectures that accommodates change without impacting existing code
We can focus on the existing system requirements without compromising future expansion

-  Simplifies/Speed Documentation

Gives developers a powerful common vocabulary to drastically improve the productivity of design reviews and make documentation easier to produce and more meaningful.
Can describe the abstract relationships between objects at both high and low levels.
In documenting frameworks, the use of patterns to describe the system can be essential.

-  Simplifies on the Job Training

Create guidebook/trade book of best practices.
Allows developer experience to be more readably and consistently transferred to others.
Patterns can address many different levels and kinds of knowledge.

-  Enables Flexible Software Development

Many patterns are designed to allow new features to be added without affecting existing systems (Meyer's open-closed principle).
Allows a system to be structured to enable parallel development.

Why use Anti Patterns?
AntiPatterns are a method of efficiently mapping a general situation to a specific class of solutions.
AntiPatterns provide real world experience in recognizing recurring problems in the software industry, providing a detailed remedy for the most common predicaments.
AntiPatterns provide a common vocabulary for identifying problems and discussing solutions.
AntiPatterns support the holistic resolution of conflicts utilizing organizational resources at several levels, where possible.
AntiPatterns provide stress release in the form of shared misery for the most common pitfalls in the software industry

Patterns and Design
When a person is faced with an act of design, what he does is governed entirely by the pattern language which he has in his mind at that moment.  Of course, the pattern languages in each mind are evolving all the time, as each person's experience grows.  But at the particular moment he has to make a design, he relies entirely on the pattern language he happens to have accumulated up until that moment.  His act of design, whether humble or gigantically complex, is governed entirely by the patterns he has in his mind at that moment, and his ability to combine these patterns to form a new design.

[Alexander, 79]

Back to Top

 

Home ] Up ] EO Professional Services ] EO Java Software ] EO Object Model ] [ EO Software Patterns ] EO UML Design ]

e-mail Executive Order at

Send email to website@eodas.com with questions or comments about this web site.
Copyright © 1997, 2009 Executive Order Corporation. All Rights Reserved.
Executive Order® is a Registered trademark of Executive Order Corporation.
Legal Terms and Conditions Copyright Notice and Internet Privacy Policy of Executive Order Corp.

Executive Order Corporation - We make IT happen.

Design and Development for your custom software.

Custom wireless solution provider for you organization.