Monday, April 22, 2013

Architectural Styles in Software Developments



There are different styles, patterns and principles used in software development. It’s very important to make the right choice of the architectural style for the application before starting the development. Developing application with proper architectural style avoids lot of problems occurring while developing or after the development is completed.  If the architecture selection is  proper then software development can easily distributed to various developers and simultaneous work can be carried out.

Application can easily incorporate the complex changes. Re engineering is also easy and application easily enhanced without affecting the existing development.
Below are some latest styles listed with its description. I have taken the MSDN reference to get this information.
Client/Server:  Segregates the system into two applications, where the client makes requests to the server. In many cases, the server is a database with application logic represented as stored procedures.
E.g. e-mail readers, FTP clients, and database query tools
Component-Based Architecture: Decomposes application design into reusable functional or logical components that expose well-defined communication interfaces.
Domain Driven Design: An object-oriented architectural style focused on modeling a business domain and defining business objects based on entities within the business domain. Key feature of a component environment is the role of metadata. A component’s technical contract includes both callback-like mechanisms that enable its life-cycle to be managed by a separate framework infrastructure technical contract includes both callback-like mechanisms that enable its life cycle to be managed by a separate framework infrastructure
Layered Architecture: Partitions the concerns of the application into stacked groups (layers).
E.g.  line-of-business (LOB) applications such as accounting and customer-management systems; enterprise Web-based applications and Web sites, and enterprise desktop or smart clients with centralized application servers for business logic
Message Bus: An architecture style that prescribes use of a software system that can receive and send messages using one or more communication channels, so that applications can interact without needing to know specific details about each other.
E.g. Publish/Subscribe pattern
N-Tier / 3-Tier: Segregates functionality into separate segments in much the same way as the layered style, but with each segment being a tier located on a physically separate computer.
E.g. Financial Web application,  Rich client connected application
Object-Oriented: An object-oriented framework provides a context for reuse based on individual classes that extend and use an existing API.  Design paradigm based on division of responsibilities for an application or system into individual reusable and self-sufficient objects, each containing the data and the behavior relevant to the object.

Service-Oriented Architectural Style
Service-oriented architecture (SOA) enables application functionality to be provided as a set of services, and the creation of applications that make use of software services. Services are loosely coupled because they use standards-based interfaces that can be invoked, published, and discovered.
E.g  Reservation systems and online stores




No comments: