Patterns, Frameworks, and Platforms



index
Disabled back button Next Section
printable version




Section 0: Module Objectives or Competencies
Course Objective or Competency Module Objectives or Competency
The student will be introduced to patterns, frameworks, and platforms. The student will be able to explain what design patterns are and how they can be used to facilitate the design of software.
The student will be able to explain the role of frameworks (development environments) like .NET in developing web applications.
The student will be able to explain the advantages of platforms like LAMP in developing web applications.


Section 1: Design Patterns

A design pattern is a documented, reusable solution to a specific problem or type of problems used to guide designers.

A design pattern presents the interaction of data and methods in multiple classes, describes the implementation of classes and features needed for the interaction, and offers insight to problems that may arise in the application.

A design pattern is generally defined as a schema comprised of four parts:

Software professionals have embraced patterns as a means of recording and sharing expert knowledge for building software, because experience often makes the difference between being a poor and good designer.

The Gang of Four initially presented twenty-three design patterns for purposes such as object creation, modification, reuse, implementation, and data sharing.

Here is a review page to accompany my notes.



Section 2: Frameworks

A framework defines a family of related applications, and contains elements that are common to those applications.

There are dozens of web application development frameworks that are based in many different programming languages.

Language Frameworks
ASP, C#, VB .NET Framework
Java Java EE, Struts, Spring
Perl Maypole, Catalyst
PHP CakePHP, Symfony, Zend, Yii, CodeIgniter
Python Django, TurboGears, Zope
Ruby Nitro, Merb, Rails
Smalltalk AIDA, Seaside
Tcl OpenACS

Besides the language that they support, frameworks differ in complexity and the set of services that they provide. Common features of frameworks include:


Here is an overview of some well-known frameworks.



Section 3: Benefits of Patterns and Frameworks

Design patterns have become an extremely effective tool with which to solve software development problems because they represent language and application independent solutions to commonly occurring design problems.

Most commercial software is developed using a framework by extending and customizing the default, generic functionality that it provides.

The use of frameworks also reduces time spent on code maintenance and future development in many ways:



Section 4: Platforms

The web application platforms discussed in this section are well-known and are representative of web application platforms in general, but other alternatives are available.


Java EE and .NET are similar in scope and overall functionality.



Section 5: Infrastructure

Developers now have available a vast collection of reusable components that provide much of the required functionality for applications.

Combining, configuring, and customizing this standard application infrastructure is now as much a part of application development as is programming from scratch.


Infrastructure Overview

Thus, there are three categories of infrastructure components that can help to provide the basis for web application development:

Each of these provides reusable, configurable components that help to reduce the need for custom programming, especially for the common functionality that most web applications require.


The platform, framework, and application can be thought of as parts of a layered architecture.

Diagram 2


Section 6: Resources

Design Patterns - An introduction

What is Software Framework

Platform Technologies

IT Infrastructure Components

Software unit testing

Software unit testing is defined as a process that includes the performance of test planning, the acquisition of a test set, and the measurement of a test unit against its requirements.

Gang of Four Design Pattern

Over 20 years ago, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides ("The Gang of Four") published the iconic computer science book “Design Patterns: Elements of Reusable Object-Oriented Software”.

Creational Design Patterns

Structural Design Patterns

Behavior Design Patterns