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.
- Designers can apply a design pattern, with possible modifications, to an application.
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:
- Name – provides a handle and a vocabulary for discussion and use of the pattern.
- Problem – provides a context in which the pattern is applicable.
- Solution – describes the components of the pattern and their interaction, including their responsibilities, relationships, and collaborations.
- Consequences – trade-offs and implications that arise from adapting the solution to the problem.
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.
- These are used as the foundations of all other patterns.
-
These original twenty-three patterns have since been expanded upon, but there are three basic patterns
that are especially useful to understand. They are Singletons, Factories, and Builders.
- Singleton – the instantiation of a class is restricted within a single object, and that object can be shared across an entire application.
- Factory – provides a single location where all instantiations of a class or series of classes are defined.
- Builder – used to create complex objects with lots of parts and/or when the order in which the parts are put together matters
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.
- Frameworks provide structure by enforcing naming conventions (directories, files) and rules for constructing a system.
- A framework is basically a development environment in which programmers can develop applications of all types much easier and faster, including web applications.
- A framework may consist of source code libraries, utilities, plug-ins, development models, and a wide range of tools, all of which are intended to accelerate the development pace of an application.
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:
- A design model, typically model-view-controller, to serve as the architectural basis for a web application and the coordination mechanism for all application components.
- A user interface toolkit including widgets, forms, and templates that can be adapted to create interface components.
- Common business application transaction templates such as eCommerce transaction suites.
- Database access support, including automatic object-relation mapping, which converts object instances to and from relational database rows.
- User authentication and authorization services, to handle user login and registration.
- Support for distributed applications and integration with legacy systems.
Here is an overview of some well-known frameworks.
- Java EE
- The Java EE framework includes a variety of tools that are all based on the Java programming language.
- Java EE is designed to support business applications of all types, including web applications, and to support enterprise-wide integration of business information systems.
- .NET Framework
- The .NET Framework supports development of a wide variety of business applications on different scales, including web applications.
- It is characterized by its ability to easily integrate components written in various languages.
- Ruby on Rails
- Ruby is a dynamically typed, object-oriented programming language.
- Ruby is especially popular with developers who are used to working with an agile methodology.
- Rails is a web application framework developed for creating conventional web applications with Ruby.
- The Ruby on Rails philosophy emphasizes minimizing coding and configuration tasks by automating tasks and reusing code as much as possible.
- Struts
- Struts is an open-source web application framework that is based on Java EE technology.
- Struts provides a rigid model-view-controller architecture with simplified configuration with support for common tasks such as form processing and data display.
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.
- Developers familiar with design structures can apply them immediately to design problems without having to rediscover them.
- Less experienced software developers can benefit from design patterns by taking advantage of the lessons and outcomes learned by more experienced developers.
- Design patterns also facilitate the reuse of successful solutions, because expressing proven techniques as design patterns makes them more readily accessible to other developers.
Most commercial software is developed using a framework by extending and customizing the default, generic functionality that it provides.
- Frameworks not only help in understanding and constructing real world applications, but also provide additional reusability of both design and implementation.
- Frameworks offer numerous technical and organizational advantages over classical development methods, such as faster development and cleaner application structure.
The use of frameworks also reduces time spent on code maintenance and future development in many ways:
- Frameworks provide numerous libraries and helpers, making it possible for developers to achieve comparable functionality with less code, so the software is more easily maintainable.
- Software unit testing is facilitated by the framework rather than performed manually.
- Those tasked with software maintenance will require significantly less time deciphering existing code developed via a framework, thanks to the Model-View-Controller pattern and other coding conventions.
- Future improvements, such as protection measures against future hacking attack techniques and yet unknown vulnerabilities, may be addressed by future releases of the framework, and may only require upgrading the framework to a newer version.
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.
- LAMP
- LAMP is an acronym for the set of free, open-source components
that constitute the LAMP platform:
- Linux operating system
- Apache web server
- MySQL database management system
- PHP server-side scripting language
- LAMP has become very popular with websites ranging from small personal servers to very large distributed commercial sites.
- Surveys indicate that Apache is the mostly widely used web server in the world.
- Variations of the LAMP components include substituting either Perl or Python for PHP and WAMP, which uses the Windows operating system instead of Linux.
- LAMP is an acronym for the set of free, open-source components
that constitute the LAMP platform:
- Microsoft .NET
- The Microsoft .NET platform consists of Microsoft system components plus the .NET Framework for application development.
- Although Microsoft has begun to open some .NET Framework standards in order to facilitate deployment on other platforms, the .NET Framework is still implemented primarily on Microsoft server platforms.
- A typical platform implementation includes:
- Windows operating system
- Microsoft's Internet Information Services (IIS) web server
- SQL Server database management system
- .NET Framework including ASP, VB, C#
- These components can be quite expensive.
- Java Enterprise Edition (Java EE)
- Java EE is an operating system-independent application development platform based on the Java programming language.
- The platform was known as Java 2 Platform, Enterprise Edition or J2EE until the name was changed to Java EE in version 5. The current version is called Java EE 8.
- It is intended to offer a comprehensive suite of tools for development and integration of distributed enterprise systems, including business applications, web applications, and web services.
- The Java EE development framework evolved independently of the server and RDBMS components of the platform, and is frequently used independently of them.
- It is available under both free and commercial licenses (the latter provides direct technical support).
- Java EE components include:
- Glassfish: A web application server (a web server with additional built-in framework features)
- MySQL
- Web Framework: Tools for implementing web applications.
- Web Services: Tools for implementing distributed components based on web services standards
Java EE and .NET are similar in scope and overall functionality.
- Most components of the two systems have direct correlates in the other, which is not surprising because the two vendors have borrowed successful ideas from each other as the products evolved.
- In general, the primary differences between them are that .NET is
essentially tied to Microsoft operating systems whereas Java EE is
system-independent, and that Java EE is available under a free license,
while .NET licensing is strictly commercial.
- Being tied to a particular operating system does have its advantages, including execution efficiency and integration with other products.
- Platform independence, on the other hand, offers the potential for greater flexibility and lower-cost implementation.
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:
- platforms
- frameworks
- web content management systems
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.
- Web Application Platform
- A web application platform is a host environment for web application deployment.
- A platform includes basic operational components such as an operating system, web server, programming languages and compilers, interpreters and other language run-time support systems, database drivers, and database management systems.
- Not all of these components are essential to every platform; some platforms may be operating-system neutral, for example.
- Web Application Framework
- A web application framework is a web application development environment that provides reusable components and designs that are used to implement the application requirements.
- For example, a framework might provide user interface templates, user authentication and authorization services, or common transaction processing logic that can be used directly in an application.
- Logically, a framework operates on top of a platform, that is, it depends upon services provided by a platform, and below the application that it supports.
-
The distinction between platform and framework is useful for
understanding the functionality that products offer, but it
is not precisely applied in practice.
- Some platforms also include framework features, and the extent of services offered varies among platforms and frameworks.
- Web Content Management System
-
A web content management system (WCMS) is a tool for creating,
cataloging, and providing access to HTML pages, images, and
other items that a web application might provide to users.
-
For large and complex web applications, there is typically
a process for integrating new content into the application that
might entail various levels of production and authorization.
- For example, a typical WCMS includes an approval mechanism that prevents content from being posted to the site until it has been approved by the appropriate moderator.
- This process can be controlled via a WCMS workflow management process that is configured for the needs and policies of the organization in which it operates.
- A WCMS may also be responsible for version control, if there are multiple versions of some documents, and the process of removing and archiving obsolete content.
- A WCMS also simplifies the process of content creation by separating semantic content from web page structure and layout, just as CSS separates style from structure and content.
- A WCMS makes it possible for nontechnical users to update and manage the content of a highly professional website without having any expertise in expert in HTML, CSS, JavaScript, PHP or MySQL.
-
A WCMS brings several benefits to organizations that use them:
- First, they bring efficiency to the process of creating and deploying web content by reducing the number of steps required, reducing the degree of technical support required, and by automating the process.
- Second, they help to manage the content development process by enforcing correct workflow and authorization protocols.
- Third, they help to establish a brand image by enforcing standard configuration and appearance of web content.
- Fourth, they enable the creation of content in popular formats without requiring custom application programming to create and deploy it.
- See the Web Content Management Systems notes for more detail.
-
A web content management system (WCMS) is a tool for creating,
cataloging, and providing access to HTML pages, images, and
other items that a web application might provide to users.
The platform, framework, and application can be thought of as parts of a layered architecture.

-
This layered model of web system architecture is sometimes referred
to as the web application software stack.
- Both the platform and framework layers are likely to be off-the-shelf software, either proprietary or open-source multiuser products.
- The platform serves as the system base and provides services to the framework and WCMS.
- The application layer then extends and/or customizes the framework and WCMS to create a unique web application. It is likely to be highly specific and unique.
-
The web application infrastructure in turn depends on a networking
infrastructure that might include components such as a firewall,
load balancer, DNS server, proxy cache server, local area network,
and so on.
- These components are responsible for Internet-level services that support the web and for local networking within the multitier architecture.