Scope of Patterns in SDLC

SDLC
SDLC @Image courtesy of Stuart Miles/ FreeDigitalPhotos.net

Scope of Patterns in SDLC

Welcome to CodeSpread!

What is SDLC?

To understand SDLC, refer article.

What is a Pattern?

Web Definition says “A pattern is the formalization of a problem/solution pair, used to make an object-oriented design decision. The purpose of a pattern is to codify existing design knowledge so that developers are not constantly re-inventing the wheel. Also, by naming these patterns, it eases communication among developers.”

According to Pattern-Oriented Software Architecture “A particular recurring design problem that arises in specific design contexts, and presents a well-proven generic scheme for its solution. The solution scheme is specified by describing its constituent components, their responsibilities and relationships, and the ways in which they collaborate.”

We can easily think of it as a re-usable solution to a recurring problem which requires dismantling a large complex structure and rebuild it using simple parts. It provides a tried and tested solution for a recurring  problems.

What is a Design Pattern?

Wikipedia says “a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Patterns are formalized best practices that the programmer must implement themselves in the application.”

What is the difference between Pattern and Design Pattern?

Biggest difference is that the pattern can be applied at different stages of a problem where as design pattern applies to a specific stage like design stage. When we think of a large complex software, we have to think deep into it and take decisions which can affect till the granular level. To make this approach a success,patterns are identified and applied to each level.

One of the level is design level, where Design patterns are applied. These are the tools used at implementation level which are usually associated with code level issues. It provides various schemes for refining and building smaller subsystems. Patterns are more seen as approach at higher level than design patterns.

What is the scope of Patterns in SDLC?

Let’s go through each stage of SDLC from a technical perspective and find a pattern involved.

  • Requirements:

    • One to One Interaction: Communication between client and Analysts.
    • Visual Models: Models are used to gather and identify requirements.
    • Story Telling or Brainstorming.
  • Architecture:

    • Layer Architecture: Applications is trusted with different layers responsible for performing a designated role. It improves isolation of concerns. Mainly Layers are divided into
      • the Data Access layer
      • the Business Logic layer
      • the Graphical User Interface layer
    • Model-View-Controller:The controller manipulates model based on user’s input, and causes the view to update. There is a ‘separation principle’ followed to achieve this architecture.
      Model-view separation
      View-controller separation
    • Service Oriented Architecture : Wikipedia says “a service-oriented architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of inter-operable services.”
    • Client-Dispatcher-Server:The Client-Dispatcher-Server design pattern introduces an intermediate layer between clients and servers called as Dispatcher.It is responsible for establishing the communication channel between a client and a server.The dispatcher implements a name service that allows clients to refer to servers by names instead of physical locations, thus providing location transparency.
    • Publisher-Subscriber: Wikipedia says “publish–subscribe is a messaging pattern where senders of messages, called publishers, do not program the messages to be sent directly to specific receivers, called subscribers. Instead, published messages are characterized into classes, without knowledge of what, if any, subscribers there may be. Similarly, subscribers express interest in one or more classes, and only receive messages that are of interest, without knowledge of what, if any, publishers there are.”There are many other architectures available namely
    • Pipes and Filters
    • Broker
    • Presentation-Abstraction-Control
    • communication patterns
    • Forwarder-Receiver
  • Design:

    • Creational: Creational design patterns deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. Few examples are
      • Abstract factory
      • Builder
      • Factory
      • Singleton
    • Structural: Structural design patterns ease the design by identifying a simple way to realize relationships between entities.Few examples are
      • Adapter
      • Façade
      • Bridge
      • Proxy
    • Behavioral: Behavioral design patterns identify common communication patterns between objects and realize these patterns.Few examples are
      • Observer
      • Visitor
      • Chain of Responsibility
  • Development:

    • Data flow diagrams: Although included more in analysis phase, but is more relevant during the development stage. This diagram visualizes the interaction between the input of data, the system and external agents.
    • Pseudo code: This code can be termed as Human friendly code where all the technical complexity is avoided to understand the basic computations.
    • Decision tables: It is modeling technique to visualize any conditions involved. These tables are an effort to simplify the complicated logic.
    • Code Review: As expected, review of code is necessary to withhold the quality standards of the product.
  • Testing:

    • Pass/fail patterns: It mainly involves the input/output methodology where on providing a certain input, a definite output is expected.If its a success, case is passed else case id marked as failed.
    • Stress test patterns: Performance level of Application under lab environment and under real conditions varies a lot so application is tested under stress conditions to achieve the desired performance level.
    • Performance patterns:The basic types of performance that can be measured are:
      • Memory usage (physical, cache, virtual)
      • Resource (handle) utilization
      • Disk utilization (physical, cache)

    There are other testing patterns also available like

    • Process patterns
    • Simulation patterns
    • Multithreading patterns
  • Build:

    • Versioning: Releasing incremental versions of the system or software.
    • Chained Continuous Build :With the help of Chained Continuous Build, build stages are chained together in a flow. The goal is that with the chain, a latter stage only runs if the previous stage is passed.In this way,Earlier stages provides the fastest feedback possible, which helps in detecting build breakages early.
    • Build Time Limit: Setting an acceptable time limit for each build in continuous build will help keep productivity high. When there is continuous chained build involved over a build pipeline,it is always useful to set Build Time Limits for each stage in the pipeline.This will highlight in detecting build breakages early
    • Check-in Gate: There are always a defined set of tasks which are expected to be taken care of by developer prior to checking in. The purpose is to ease integration, and will give confidence to the team as the quality of checked in version is of a certain standard.
  • Deployment:

    • Application Patterns: These patterns defines the organization of an application and useful in deploying the applications.
      Layered application-This pattern organizes a software application into a set of logical layers for the purpose of managing dependencies and creating pluggable components.It provides an advantage that the well-defined interfaces and strong dependency management gives a great deal of flexibility in deploy an application.
      Layered Service Application-This pattern refines Layered Application so as to provide a structuring guidance for enterprise applications that collaborate with other enterprise applications in a larger service-oriented architecture. It expands on the typical three layers described earlier and defines a set of component types for each layer.
    • Infrastructure Patterns: These patterns focuses on the physical infrastructure.This can be more of a support variables which have to be considered for the original application.
      Tiered Distribution-This pattern organizes the system infrastructure into a set of physical tiers to provide specific server environments optimized for specific operational requirements and system resource usage.
      Deployment Plan-It is required to determine where each component would be deployed in one of the tiers.
    • Automated deployment Patterns: The main purpose is to speed up the deployment process.
      Scripted-It is an attempt which scripts all deployment actions so there’s no need for human intervention when a deployment is executed
      Tokenized Configuration-This pattern provides a repeatable way of injecting variable information into configuration files.
      Externalized configuration-It is one of the pattern which makes it simple to enter information only once that varies between target environments
      Unified deployment– This pattern goes by its name,it promotes a single deployment script that can be run in many target environments.

Thank God! I never imagined that i will complete this article. Its been a long time that i wanted to write something like this which can be single repository for me.I just wanted to summarize all the options available at each stage of SDLC which will in turn help me in taking decision well in advance like which pattern i am going to adopt at each stage of SDLC. I hope this article will help you also. Please mail me your suggestions or comments at admin@codespread.com. You can also help by writing your experience or articles on codespread.com

Author: hershey

A passion for knowledge drives me to do programming, A passion for programming drives me to create something different, A passion for creation drives me to spread the knowledge.

Share This Post On

0 Comments

  1. nice superb explaination

    Post a Reply
  2. thanks for the tutorial
    I am having a problem.
    The feature “Create SQL server database” isn’t available , I can’t select it.
    Can you help, please ?

    Post a Reply

Submit a Comment

Your email address will not be published. Required fields are marked *

More from CodeSpread:

  • Agile Encounters UnpredictabilityAgile Encounters UnpredictabilityWhat is Agile? Wikipedia says “Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through...
  • SDLC: Importance of Requirement Analysis.SDLC: Importance of Requirement Analysis.What is SDLC? SDLC is the acronym for Software Development Life Cycle or System Development Life Cycle.It is a conceptual model that describes the stages involved in development of a software or a...
  • Importance of Software MaintenanceImportance of Software MaintenanceWhat is Software Maintenance? Software maintenance is an important phase of SDLC. It is defined as a set of activities to keep the software functional and behavioral as intended for as long as ...
  • Sunday Splash: SDLCSunday Splash: SDLC
  • User Interface DesignUser Interface DesignWhat is a User Interface? Webopedia says “Abbreviated UI, the junction between a user and a computer program. An interface is a set of commands or menus through which a user communicates with a pr...
  • Nice reference for C# evolution Part 4Nice reference for C# evolution Part 4We completed till C# 4.0 introductions in last article,C# 3.0 in this article and C# 2.0 in first article . We will forward our journey with C# 5.0 features. C# 5.0 Async Feature There are new m...
  • REST- REpresentational State TransferREST- REpresentational State TransferREST – REpresentational State Transfer, is an enhanced version of client server style architecture for distributed communication. When we talk about distributed communication, we think of reques...
  • C#: Singleton Design PatternC#: Singleton Design PatternWe know the existence of a design pattern is dependent on a recurring problem. Once the problem is identified, then a well established solution is proposed theoretically and different implementatio...