This article defines a comprehensive set of guiding principles, called philosophy of architecture design (PAD), as a means of coping with the architecture design complexity and managing the architectural assets of Web information systems in a service-oriented paradigm. This coherent model comprises a multidimensional collection of key guiding principles and criteria in system analysis, modeling, design, development, testing, deployment, operations, management, and governance. The systematic framework provides a multidisciplinary view of the design tenets, idioms, principles, and styles (TIPS) in the IT architecting practices for engineering process and quality assurance. There are 26 constituent elements defined in the scheme, the names of which form an array of A-Z using the first letter. The characteristics and applicability of all 26 dimensions in the PAD model are articulated in detail. Recommendations and future trends are also presented in the context. This overarching model has been extensively leveraged in one format or another to design a wide range of Web-based systems in various industry sectors.
Key Terms in this Chapter
Inversion of Control: High-level modules should not depend upon low-level modules. Details should depend upon abstractions, but not the other way around. The dependency of an object is injected in this approach.
Framework: A well-defined reusable structural and behavioral model in which applications can be organized and developed
A-PIE: Abstraction, polymorphism, inheritance, and encapsulation in the object-oriented method
Normalization: The process of restructuring the logical data model of a database to remove redundancy, rearrange data elements, eliminate repeating data, and reduce the potential for anomalies during data operations
Liskov Substitution: References to base types in a module must be replaceable by the references to derived types without changing the behaviors of the module.
Yin-Yang: A pair of primal opposing but complementary forces found in all things in the universe, with respect to balancing, interdependency, and transformation
Reflection: Dynamic instantiation of class instances for loose-coupling flexibility
Design by Contract: Every method/service invocation has preconditions and post-conditions, as well as exceptions defined between the caller and the provider
Just-in-Time: Optimized on-the-fly compilation by the virtual machine during the program execution
Hungarian Notation: A naming convention in computer programming, in which an object is named in such a way that the name reflects the object’s type or intended use