Patterns in software engineering – An Introduction

What is a pattern? (in software engineering world)

A predefined solution for a problem for the given context.

Key words in the above definition is problem, solution and the context.

What are the different categories of the patterns ? (in software engineering)

  • Analysis patterns
  • Design patterns
  • Architectural patterns
  • Technology patterns
  • Integration patterns

Why do we use the patterns?

Objective of patterns is to enhance

  • Reusabililty
  • Repeatability

in return will fetch

  • Cost efficiency
  • Agility (time to market)

Where the pattern concepts started in general ?

The pattern concept has been in use for thousands of years. In the building architecture and design, we have been using the patterns quite extensively. Ancient buildings like pyramids, roman collegium and lot more used the patterns in the implementation. For instance, the pillars used in ancient temples built in Thailand, India and etc are patterns. They did not design the pillars every time. The pillars are to hold the load of the building. We can notice the reusability and repeatability of the pillars in multiple places in those ancient building architecture which in returned improved the ancients to be effective and quick.

What are the types of patterns in each category?

There are conceptual, logical and physical patterns in each category. Conceptual patterns are very high level solution for the given problem at the given context. Physical patterns spells out the implementation solution for the given problem at the given context. Logical patterns are between physical and conceptual.

Different types of architects

Architect defines the architecture. Broadly the architects are divided into the technical and business architects. The business architect are focused on the economical change of the market and devise  a set of  business process  for enterprise or systems adaption and to attain enterprise or system’s mission and vision.  The technical architects are  focused on implementation of the business architecture defined to meet enterprise’s or system’s mission and vision.

The technical architects are broadly divided into

    System/Product architect
    Domain Architect
    Solution Architect
    Applied Architect
    Enterprise architect

Based on the architect characteristics, the types of technical architects shall be divided into the generalist and specialist. The specialist focus on one specific area and the knowledge acquired and possessed by the architect is deep. Where as the generalist, knowledge acquired and possessed in a set of areas is broad.
System/product Architect

System/Product architect are the generalist, responsible for the cohesive architecture solution of the system or product. They have equal strength in the both technical and business area. Plays a vital role to bring all the stake holders together and ensure all the stake holders concern’s are captured methodologically, formally documented and validated. Assist the project manager to make the management decision and makes key technical decision for the project/system/product. Brings all the technical architects, development teams, system analyst, and support teams together to ensure the cohesive architecture is defined to meet the stake holders concern and ensures the defined architecture is implemented. The system architecture validation is done by using the user case scenarios. +1 view of the architecture. The architecture verification is done through reviews.

Domain Architect

Domain architects are the specialist, responsible for the architecture solution for that domain. The domain architect is an abstract definition and there are various domain architects. The domain architects specific to the web development projects are

  • Application architect
  • Data architect
  • Information architect
  • Integration architect
  • Security architect
  • IT Process architect
  • Infrastructure architect
    • Network architect
    • Server architect
    • Web run time architect

Solution Architect

Solution architecture team is the set of specialist working together to research and seek solutions for a specific problem.

Applied Architect

Applied architects are match makers. The applied architects have the known set of problems, solution and context. The architectural patterns are applied to the system or product. The architectural patterns includes to the process solution or methodology for the implementation and its style.

Enterprise Architect

Enterprise architect are responsible for defining the holistic architecture solution for the entire enterprise.