[go: up one dir, main page]

0% found this document useful (0 votes)
69 views22 pages

Definition of System and Software Architecture

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 22

Definition of System and Software

Architecture
 Eberhardt Rechtin’s definition of system architecture states “A system is defined ...
as a set of different elements so connected or related as to perform a unique
function not performable by the elements alone.”

 To understand it, take the example of a Car, it consists of tyre, engine and body as
elements, each element alone cannot perform the functionality of car unless they
are all assembled.

 Another widely quoted definition of software architecture given by Bass,


Clements, and Karman says “the software architecture of a program or computing
system is the structure or structures of the system, which comprise: software
components, the externally visible properties of those components and the
relationships among them.”
System Architecture
Under system architecture:

1) All the requirements are partitions into different categories,

2) Sub system are identified,

3) Requirements are assigned to different sub system,

4) The functionality of each sub system is specified and

5) Interface design is created for enabling communication between sub systems.


Software Architecture
 Software architecture is the description of structure of new software which is under
planning, description of data, interfaces and algorithms used in it. The large system are
designed iteratively, architects keep adding details by moving back and forth in previous
version and current version of architecture design.

Here relationships between different sub systems are identified.

An abstract specification of services and constraints of each sub systems are
defined.

Interface description is defined and documented

Data structure required to implement system is described in details.

Algorithms used to deliver services are defined.


Define Structure
Q. The key question is how to define structure of the system. Views are used to define
structure

A. In software architecture, several models are used to produce different views, static
models are used to produce structure of a Logical View, dynamic models are used
to depict Process View and Interface models are used to depict communication
between sub systems.

B. A sub system consists of set of modules, provides set of services and it is


independent of other sub systems so it is a system in its own realm.

C. Modules of the system are used to depict Development View.

D. Deployment diagrams depicting servers are used to show physical view of


architecture.
Model Views
The four views of the model of a real system are: logical, development, process and
physical view are produced for better communication.

 Logical view: It is the functionality that the system provides to end-users. So it is an


external view that shows the attributes of the architecture such as maintainability,
extensibility, performance and security.

 Process view: It deals with the dynamic behaviour of the system, i.e., the system
processes, their communication, data flow and focuses on the runtime behaviour of the
system. Process and data flow diagrams are used to represent it.

 Development view: It depicts a system from a programmers perspective. It is


concerned with software management. Components or Modules of the system are shown
here.

 Physical view: It depicts the servers and storage system. It is concerned with the
topology of software components on the physical layer, as well as communication
between these components. Deployment diagrams are used to represent it.
Architecture Styles
 Client/Server Architectural Style

It is a distributed design system involving clients and servers, which reside on
separate machines and they are connected through network. It is called as 2 Tier
architectural system.

 The example of client server architecture is Web Browser over which clients send request to
database servers and obtain response over from them. User interface is always on client and data
management is on server.

 Layered Architectural Style

 Under this style application functionality is broken down into various layers by grouping relevant
functions into one layer and placing the layers one after another in vertical fashion. Each layer is
assigned a particular role, the interaction between layers is through interfaces.

 For example, the interaction of users over internet with first layer, say, presentation is through
http, interaction between middle layer (business logic) and back layer (database) is through JDBC

 By dividing responsibility among different layers, separates out concerns, which makes it easy for
architects to bring flexibility and maintainability.

 There are two styles of layered architecture: strict layering and relax layering architecture
styles....Cntd
Architecture Styles
 Layered Architectural Style

 In a strict layering style, components of one layer can only talk to components
present either in same layer or with components which are directly below it.

 In relaxed layering style, components can interact with components of same


layer or with all components present in any layer which is below it.

 The layers can come all on a single hardware machine or each layer on one
separate hardware computer. If layers are mapped to individual hardware
machines, it is known as n-tier.

 Generally, web applications are spread over minimum 3 layers, first layer is
presentation layer, second layer consists of business logic processing and third
layer is data access.
Cont...d
Architecture Styles
 Separated Presentation Pattern

 Model View Controller or MVC, it is a software design pattern for developing web applications.

 MVC pattern has three parts:


 Model - The lowest level of the pattern which is responsible for maintaining data. It accepts requests from
View and responds to instructions from the controller to update its data. It is the data base layer.
 View - This is responsible for displaying all or a portion of the data to the user. This is screen form design
portion. They are script based systems such as JSP, ASP, PHP. etc..
 Controller – This is Software Code that controls the interactions between the Model and View.

 It receives the input, validates it and then performs the business operation that modifies the state of the data
model. Typically, it reads data from a view (form), control user input, and send input data to the model
(database).

 MVC isolates the application logic from the user interface layer and supports separation of concerns.

 N-Tier / 3-Tier Architectural Style

 It is an improved way of designing layered architecture style, here instead of assigning all layers to one
physical server, each layer is assigned and hosted to a separate physical computer.

 The tiers interact with each other using platform specific protocol of communication- HTTP, JDBC, etc.
Object-Oriented
Architecture
In an object oriented architecture, the functionality is broken down into sub
systems using the constructs of object oriented data models such as object
classes, attributes and operations.

It is a modular decomposition architectural style which is applied at


application design level.

This architecture is based on breaking the responsibilities of an application


into separate reusable independent objects.

Data and methods, i.e., structure and behaviour both are kept in the object.
This kind of style views the system as a collection of cooperating objects
instead of set of sub programs or procedures.

Objects are solid, independent and loosely coupled. Interfaces or messages are
used by the objects to communicate with each other.
Principles of Object-Oriented
 Abstraction:- Conceive the complex operations at a higher level by generalizing it and
retaining fundamental characteristics of operations and leaving irrelevant details.

 Decomposition:- The larger problem can be broken down into smaller components which
can be easily solved.

 Composition:-A large object can be carved out by combining other objects. The non
required objects can be masked.

 Inheritance:- No need to write functionality already addressed by some objects by a new


object. It can inherit it and provide new behaviour.

 Encapsulation: - The objects functionality is provided through their operations and


properties. The access to internal variables and operations of the objects are not provided
for modifications. So encapsulation ensures that internal details such as variables and
operations are secure from unauthorized access

 Polymorphism: As the name indicates, the functionality of base class can be used by its
sub classes in poly (many) ways.

 Decoupling: An abstract interface provided by object decouples it from consumer or caller


object.
Inter Organizational Communication
 Some time organizations follow distributed architecture or they need to talk to
each other to get specialized services from other organizations.

 These days in each transaction based application where payment is involved,


requires integration with payment gateways.

 In such cases, either message or web services based architecture can be adopted.

 It is an example of distributed architecture systems which can support resource


sharing, interoperability, scalability and transparency.
Message Oriented Architecture
 The need for integrating different systems is increasing. The way departments is to define schema
which contains semantics of information which will be exchanged between two departments. It is
called as contract between Service Provider and Service Consumer. It is expressed in WSDL
document.

 On the basis of format of information agreed, an XML packet is generated. It is sent over transport
protocol, http. The envelope so created is called as SOAP. The way to achieve the above integration is
either use Message Oriented architecture (MOA) or SOA (Web Services).

 In SOA, the integration takes place between components (web services) which are identical so
integration is seamless. The SOA integration is Action Oriented, i.e., message is sent, operation is
performed over it and results are delivered back by the invoked web service. Integration is on point
to point basis.

 In Message Oriented Architecture, the integration components are not necessarily identical but
message format is identical.

 A message bus is capable of providing:


 Message-oriented communications: The communication between disparate applications is based on known
protocol, message format (known schema) and protocol.

 Complex processing logic: Complex operations is broken down into simple operations and results are computed
in multiple stages. The final results are joined up.
Enterprise Service Bus (ESB)
 ESB uses message router which locates the desired web services in UDDI based
directory before sending the request.

 It then interacts with its port on the web site called as endpoint on behalf of Service
consumer application acting as proxy for Service Provider.

 So all service consumers only talk to single point of contact, i.e., enterprise service
bus.

 As a value added service, an ESB usually provides data transformational services


which transform messages from one data format to another.
Principles of SOA Architecture Style
 Independence among services.: Development, deployment, maintenance and version
control for each service is not dependent on other services.

 Loose coupling of services: Services interact with each other through well defined
interfaces so their maintenance is easy as it does not impact application.

 Services share schema and binding agreement, not class: Schema and binding
agreement are used to share information with service consumers allowing them to use services
it is a better way of sharing compared to sharing internal details of classes.

 Policy based Compatibility: Policy is defined in terms of data format (XML), transport
protocol (http) and security. It is called as SOAP, it brings interoperability since services can
run on any platform.
Component-Based Architectural Style
 The architecture of component based style assumes that components will be developed
independently as standalone entities by different people

 As per Ivica Crnkovic, Magnus Larsson, definitions of component are:

 A component is a non-trivial, nearly independent, and replaceable part of a system that fulfils a clear
function in the context of a well-defined architecture.

 A component conforms to and provides the physical realization of a set of interfaces.

 A run-time software component is a dynamically linkable package of one or more programs managed as a
unit and accessed through documented interfaces that can be discovered at run-time.

 The widely accepted definition of component is “a component is a constituent of software is in binary form
so that the need tore compile it is alleviated, it has specified interface or Application Programming
Interface and it can be deployed or dynamically loaded or replaced.”

 It is integrals in the system without the need for modifying and rebuilding it.

 The components express their functionality through interfaces, so it is from where the user
connects to the component. It gives designer the opportunity to abstract the design at a higher
level than what is abstracted by the principles of object-oriented design. It does not pay
attention on issues like communication protocols and shared state.
Domain Driven Design Style

 Common Communication Language: Building model of domain facilitates both IT


teams and business stakeholders to articulate business wisdom and requirements
in a common language free from technical jargons.

 Easy of Testing: Loose coupling and cohesion are the cornerstone of domain
modelling, which make this style easy to test the application.

 Extensible: As this style is based upon object oriented design, which in turn
supports the principles of inheritance so it implies that this style is extensible.
Cloud Computing Architecture Style
 Cloud computing is defined as delivering compute power as service instead of a product to the
customers. Thus shared resources such as storage box, software and information are provided to
customers as utility like water or phone connection over an internet. The customers pay for
resources as per usage.
 It supports multi tenancy architecture whereby it enables sharing of resources and costs across a large
number of users by centralizing infrastructure at those locations which has lower costs of land, electricity,
labour. It also enables better utilization and efficiency of system resources which are not utilized fully.

 Cloud Computing comes in three flavours: Infrastructure as a Service ( IaaS ), Platform as a Service ( PaaS )
and Software as a Service (SaaS ).

 Infrastructure as a Service: The cloud providers are expected to create fabric of all the hardware servers,
storage boxes and system software as a common pool in the data Canters so that as per the requirements
of each application, the resources can be assigned to it instantaneously

 Platform as a Service: Besides, building the pool of Infrastructure, the cloud providers are expected to
install both open source and proprietary Web Servers, Application Servers, Databases and tools so that a
technology agnostic development platform becomes available for application development. The
development platform should be available in an on-demand provision mode to the customer
organizations.

 Software as a Service: The cloud Providers, install on the Infrastructure pool, some commonly used
finished products both COTS and be spoke applications such e-mail, Customer Relationship Module
(CRM)MS office, Star Office. It also includes other customized applications which the organization is
developing for sharing with others such as HR, Payroll, Accounting, etc. on pay as per usage pattern.
GRID Computing and Cloud Computing
 Grid Computing is an aggregation, selection and sharing of geographically distributed resources
such as computers, storage, data sources and specialized devices owned by different
organizations for solving resource intensive specific engineering and science problems.

 Creating Cloud Computing Platform:- Hypervisor software (e.g. Xen, ESX, Hyper V, KVM)
(refer layer 4 in Figure 4.9) is used to partition a single physical machine into several virtual
machines.
 The operating system which runs inside the virtual machine is called as Guest Operating
System.

 Hypervisor is positioned between the guest operating system running in the virtual machine and
hardware resources.

 This positioning enables the hypervisor to control how guest operating system running inside a
virtual machine uses hardware resources.

 This enables administrator to control all hardware resources using the hypervisor as single point
of control, which allows him to view hardware as a pool of resources which can run arbitrary
services on demand.
Multi Tenancy Architecture
 Multi tenancy means a type of architecture in which single instance of software hosted on a server
serves several customers organizations (tenants). Multi tenancy is different from multi instance
architecture. In the latter case separate software instances or hardware systems are enabled for
different organizations.

 But in case of multitenant architecture, the application is designed in such a way so that it can be
configured for different customer organizations and dataset of each organization is stored separately.
Separate virtual instance of application is created for each organization. There are three ways to
implement it.

 Separate Databases separate schema

 Common application source code and common system resources are used by all the tenants.
 The data base and schema are different for different tenants. The data and schema of each tenant
is stored separately.
 It results in sound and robust security and privacy for the data of each tenant.

 Shared Database, Separate Schemas

 Another approach involves housing several tenants in one database, each tenant has separate
set of tables, indexes, triggers and a schema.
 The data is stored at one place for all the tenants so security and privacy of data are concern.
 But each tenant has separate schema, it allows each tenant to exercise its own strategic control
over the database design.
Multi Tenancy Architecture
 Shared Database, Separate Schemas
 This approach is good for applications which use small number of tables, say of the order
of 100 or less.

 The cost of hosting a tenant is lower since database of all the tenants is common so costs of
data storage and maintenance gets shared among the tenants.

 Shared Database, Shared Schema

 This approach uses one database and same set of tables for all the tenants hosted on the
server.

 The tables store records of all tenants in same table; tenant ID is assigned to each row (refer
Figure 4.8).

 This approach is good if large number of tenants with small number of hardware servers
are to be served.

 Naturally, both the cost of tenancy and degree of data isolation are lowest in this kind of
data architecture.
Core Configurable and Customizable
Architecture
 Core:- Applications which have the potential for replication should be designed
following paradigm of core, configurable and customizable one.

 Configuration:- Out of 15 services, only 5 optional services as chosen by state will


be enabled. The fonts, layout and colour of different forms will be enabled as per
the choice of state.

 Customization: - In program code may be required to meet state specific


requirements.

Some of the key benefits of configurable solutions are that only one ? version of
application is maintained so a better support can be provided. Quality control
remains focused which results in stable and reliable system.
Thank you

You might also like