Before you start
This series is divided into two parts that can be read by programmers, architects, developers, and technology enthusiasts who are interested in improving software application design. After you have completed this series of studies, you will be able to use the best practices described in it and choose the right design patterns to solve specific problems.
About this series
This series of tutorials shows how to apply design patterns to address architectural design issues by using a railway booking case study.
The 1th part introduces a railway booking system that takes you through several considerations in the design that can help you decide where to use design patterns to improve your design and thus improve the overall performance of your system.
This tutorial discusses the non-functional requirements of the application and explains why the software architect must address these requirements that will affect the performance, availability, scalability, and enhancement of the application. Considerations for disaster recovery and recovery features are also discussed in more detail. The end of this tutorial will discuss the issue of using the framework in your design.
About this tutorial
Architecture patterns can help you define an infrastructure organization or schema for your software system. It also provides a predefined set of subsystems that specify responsibility for each component used in the system, and it also contains rules and guidelines for use in relationships between organizational subsystems. Design patterns provide a pattern that is designed to refine the subsystems or components that define the entire software application. It also provides a glossary that defines the relationships between subsystems. Design patterns are used to describe solutions to general design problems that occur in a particular environment.
This tutorial expands the railway booking system discussed in part 1th, in which several architectural patterns are applied. The architecture pattern can be divided into different types. Deploying architectural patterns is most important, because the way applications are deployed is critical to all non-functional requirements, such as performance and availability.
In this tutorial, you will look at the non-functional requirements of railway booking systems from an architect's perspective. You will learn how to use different architectural patterns to improve the basic design of your system. This tutorial will also discuss using frameworks such as MVC, Struts, and Spring to handle other design issues, including code reuse and overall time issues for application development using a framework (or combination of multiple frameworks).
Some of the architectural considerations discussed in this tutorial are:
Performance
High scalability
Failover and Fault feedback features
Disaster recovery
Prerequisite
This tutorial assumes that you are familiar with design patterns and understand basic object-oriented concepts. If you have some knowledge of the Unified Modeling Language (Unified Modeling Language, UML), this will help, but it is not necessary. The sample code is written in Java™, but its contents are simple enough to be easily converted to the language of your choice.
You can download Java 5.0 if you want.