Software Archtecture.
Software design is a process to transform user requirements into some suitable form, which helps the programmer in software coding and implementation.
Software design is the important step in SDLC (Software Design Life Cycle), which moves the concentration from problem domain to solution domain. It tries to specify how to fulfill the requirements mentioned in SRS.
Software design plays an important role in developing software: during software design, software engineers produce various models that form a kind of blueprint of the solution to be implemented
1. Define Software Process ? What are the activities include in Software Architecture ? Explain in detail
Definition: 1) A software process refers to the set of tools, methods, and practices used to produce a
software product.
2) A software process is a set of activities and associated results that produce the software
product
Software process involve following activities:
S-16 W-17 S-17 S-18 W-18 S-19
2. Software Specification: Where customer and engineers define the software that is to be produced
the constraints of the software.
S/W Development: Where the software is designed and programmed as per customer specification
S/W Validation: Where the software is checked to ensure that it is what the customer required
S/W Evolution: Where the software is modified according to customer need or market requirement
Continue….
The various activities involved in creating software architecture are:
Creating the business case for the system
Understanding the non functional requirements
Creating or selecting the architecture
Documenting and communicating the architecture
Analyzing or evaluating the architecture
Implementing the system based on the architecture
Ensuring that the implementation conforms to the architecture
3. What is the design process of software? Explain the importance of s/w design
Software design is a process to transform user requirements into some suitable form, which helps
the programmer in software coding and implementation.
Software design is the important step in SDLC (Software Design Life Cycle), which moves the
concentration from problem domain to solution domain. It tries to specify how to fulfill the
requirements mentioned in SRS.
Software design plays an important role in developing software: during software design, software
engineers produce various models that form a kind of blueprint of the solution to be implemented
Software design consists of two activities that fit between software requirements analysis and
software construction:
Software architectural design (sometimes called high-level design): develops top-level
structure and organization of the software and identifies the various components
Software detailed design: specifies each component in sufficient detail to facilitate its
construction. ----outcome module specification document
S-16 W-17 S-17
4. Architecture
design
Abstract
specification
design
Interface
design
Component
design
Data Structure
design
Algorithm
Design
Continue…
Stage 1:
Stage 2:
Architectural design (also: high-level design) •architecture -the overall
structure: main modules and their connections •design that covers the main
use-cases of the system •addresses the main non-functional requirements
(e.g., throughput, reliability) •hard to change
Detailed design (also: low-level design) •the inner structure of the main
modules •may take the target programming language into account •detailed
enough to be implemented in the programming language
5. Importance of Software Design:
Design provides best abstraction; it allows you to understand the requirements better,
meet them better.
Design prevents redundancy and increases reusability.
Design is also the best approach to mitigate the risk you have no idea about.
Design allows not only finding out how the software product is going to look, but also
allows both software owners and developers to realize how it's going to function.
Continue….
6. Why software architecture is important? Explain
Architecture focuses on how the major elements and components within an application are used
by, or interact with, other major elements and components within the application
There are fundamentally three reasons for software architecture is importance from a technical
perspective.
Communication among take holders: 1) Business owner customer and 2)Developers
Early design decisions:
Transferable abstraction of a system
Architecture last for long time
7. What is architecture style and architectural Pattern and Design Pattern? Also explain
difference between them..
Architectural Styles:
Definition: An architectural style defines a family of a system in terms of a pattern of
structural organization, a vocabulary of components and connectors, with constraints and
how they can be combine
Each architectural style describes a system category that encompasses
1. A set of components: database, computational unit module
2. A set of connectors:
3. Constraints:
4. Semantic model:
It also helps to invent more advance solution using basic solution
It’s the highest level of granularity and it specifies layers, high-level modules of the
application and how those modules and layers interact with each other, the relations between
them
8. Continue….
Architectural Patterns
Definition: pattern is a recurring solution to a recurring problem. An architectural pattern is a
general, reusable solution to a commonly occurring problem in software architecture within a
given context
Architectural patterns are similar to software design pattern but have a broader scope.
The architectural patterns address various issues in software engineering, such as computer hardware
performance limitations, high availability and minimization of a business risk.
In the case of Architectural Patterns, they solve the problems related to the Architectural Style. For
example, “what classes will we have and how will they interact, in order to implement a system with a
specific set of layers“, or “what high-level modules will have in our Service-Oriented Architecture and
how will they communicate“, or “how many tiers will our Client-server Architecture have“.
Architectural Patterns have an extensive impact on the code base, most often impacting the whole
application either horizontally (ie. how to structure the code inside a layer) or vertically (ie. how a request
is processed from the outer layers into the inner layers and back).
Examples of Architectural Patterns: MVC
9. Continue….
Design Patterns
Design Patterns differ from Architectural Patterns in their scope, they are more localized,
they have less impact on the code base, and they impact a specific section of the code base,
for example:
How to instantiate an object when we only know what type needs to be instantiated at
run time (maybe a Factory Class?);
How to make an object behave differently according to its state (maybe a state machine,
or a Strategy Pattern?).
10. Describe following terms: i) A reference model ii) A reference architecture
A reference model:
It’s a descriptive conceptual framework, establishing a common language of communication
and understanding, about elements of a system and their significant relationships, within a
community of interest. Blueprint for system development
A reference model is a division of functionality together with data flow between the pieces.
A reference model is a standard decomposition of a known problem into parts that
cooperatively solve the problem. It is widely used in telecommunication and defence system
A reference architecture:
A reference architecture is a document or set of documents to which a project manager or other
interested party can refer for best practices.
Whereas a reference model divides the functionality, A reference architecture is the mapping of
that functionality onto a system decomposition.
11. A reference architecture is a reference model mapped onto software elements (that cooperatively
implement the functionality defined in the reference model) and the data flows between them.
A reference architecture can be thought of as a resource that documents the learning experiences
gained through past projects. By using a reference architecture, a project team can potentially save
time and avoid mistakes by learning from past experiences.
One of the most popular examples of reference architectures in IT is the Java Platform Enterprise
Edition (Java EE) architecture, which provides a layered reference architecture and templates
addressing a range of technology and business issues that have guided many Java-based enterprise
systems. RA typically suggested the optimal delivering methods for specific technology
Reference architectures provide guidance on how to apply specific patterns and/or practices to
solve particular classes of problems.
Continue….
12. RA help project manager, S/W developers ,architect as well as It managers to collaborate and
communicate efficiently about an implementation project
RA help to answer the most common question that arises as a result they help teams to avoid
errors & delay that may occurred without the use of tested set of best practices (Reference
architecture)
RA—inhouse—third party service provider or vendor
Typically RA will document H/W and S/W processes ,specification & configuration as well as
logical components & interrelationship
It represent the building block of a system
It focus on key engg decision
It create a conceptual ,physical or logical view for a software system
It help to identify the key decisions and key risk early on
13. Continue….
Reference models, architectural patterns, and reference architectures are not architectures; they
are useful concepts that capture elements of an architecture. Each one is the outcome of early
design decisions. The relationship among these design elements is shown in Figure 2.2.
Typically, a reference architecture will document such things as hardware, software, processes,
specifications and configurations, as well as logical components and interrelationships.
14. Explain ADL
An architectural description language (ADL) is used to describe software architecture
An ADL may be a formal or semi-formal descriptive language, a graphics language, or
include both.
The advantage of using an ADL lies in the ability to rigorously specify architecture so that
it can be analyzed
Architectural Description Languages (ADLs) provide a means to model and analyze
software architectures in order to improve software quality and correctness.
ADL is used to solve design problems in software industry
Example: UML
AADL (architectural analysis & description language )
15. Path A-D is one in which an ADL is used as the modeling language. Path B-E is one in
which UML is used as the modeling notation. Path A-C-E, is one in which an
architecture is first represented in an ADL, but then transformed into UML before
producing an implementation.
Continue….
16. ADL Tools
ADL tools help to build the solution faster
It also help to validate the decision taken
It also provides means to an end
Diagramming tools: help to check diagrammatic solutions
Analyzer: These ADL tools are used to analyze the structural and behavioral properties
of a system
Simulator: It help to simulate the system
Conclusion: It is suitable for task of architecture creation, refinement and validation as
well as it will help to represent most of the common architectural styles
17. Explain Web application Architecture?
The basic web architecture is two tiered where a web browser display information content and web
server that transform information for client.
Web Server: Web server is a computer program that accept HTTP request and return HTTP
responses with optional data contents.
Server Side: 1) Stores persistent data 2) Cannot be seen by the user 3) Can only respond to HTTP requests for a particular URL
Client Side: 1) Languages used include: HTML, CSS, and Javascript. 2) Parsed by the user’s browser. 3) Reacts to user input.
19. Enlist the different architectural Style
1. Data Centered Architecture
2. Data Flow Architecture
3. Call & Return Architecture
4. Event Driven Architecture
20. 1. Data Centered Architecture Style: A data stored (file and DB)reside its center of the
architecture & is access frequently by other components that update add, update, delete or
modify data within the store
Client
Software
Client
Software
Client
Software
Client
Software
Data Store
Repository
Adv: Efficient way to
manage and add
components
Disadv: Difficult to
support expansion
This data-centered architecture will promote integrability. This means that the existing
components can be changed and new client components can be added to the architecture without
the permission or concern of other clients.
The data integrity is the key principle of such system (Access to shared data)
Involves:
Data store
S/w
Component
Agents
Explicit method invocation
Implicit method invocation
21. 2. Data Flow Architecture: This architecture is applied when input data are to be transformed
through a series of computation or manipulative components into output data
Example: Pipe and filter Pattern , Batch sequential:
Pipe and filter Pattern: This pattern can be used to structure systems which produce and
process a stream of data. Each processing step is enclosed within a filter component.
Data to be processed is passed through pipes. These pipes can be used for buffering or for
synchronization purposes.
Fig: Pipe-filter pattern
Transmitting
Data
Transforming data
independently Problem:
Need to apply
a series of
ordered but
independent
computations
Stateless
22. Continue..
Data Flow Architecture is transformed input data by a series of computational or manipulative
components into output data.
It has main objective is to achieve the qualities of reuse and modifiability.
In data flow architecture, the data can be flow in the graph topology with cycles or in a linear
structure without cycles.
Adv: It simplifies the system maintenance & provides reusability
It support both sequential and Parallel execution
Disadvantages: Performance is often poor
Many times parsing and unpairing overhead is involve
23. Usage :
Compilers. The consecutive filters perform lexical analysis, parsing, semantic analysis,
and code generation
3. Call and Return Architecture: Main program and Subprogram Architecture :
Decompose function into a control hierarchy where a main program invokes a subprogram
component which in turn may invokes many other components
Main
Program
Sub
Program
Sub
Program
Sub
Program
Sub
Program
Sub
Program
Sub
Program
Controlled Sub Program
Application Sub Program
Example 1: Main program & subroutine pattern
24. Example2 :Layered Architecture pattern N-tier architecture:
This pattern can be used to structure programs that can be decomposed into groups of subtasks,
each of which is at a particular level of abstraction. Each layer provides services to the next higher
layer.
A number of different layers are needed each accomplishing operation that progressively become
closer to the Machine instructions set.
At the outer layer ,component services ,user interface operations
At the inner layer component perform operating system interfacing
The most commonly found 4 layers of a general information system are as follows.
1. Presentation layer (also known as UI layer)
2. Application layer (also known as service layer)
3. Business logic layer (also known as domain layer)
4. Data access layer (also known as persistence layer)
Usage
•General desktop applications.
•E commerce web applications.
Note: In pure layer each layer should communicate only with its immediate
neighbors
Adv:
Ease of
Development
Testing is easy
DisAdv:
Performance is poor
Agility is low
Scalability is low
25. Example2 :Layered Architecture pattern :
The customer screen is responsible for accepting
the request and displaying the customer
information. It does not know where the data is,
how it is retrieved, or how many database tables
must be queries to get the data. Once the
customer screen receives a request to get
customer information for a particular individual, it
then forwards that request onto the customer
delegate module. This module again delegate the
request to business layer (customer object)
The customer object in the business layer is responsible
for aggregating all of the information needed by the
business request This module calls out to the customer
dao (data access object) module in the persistence
layer to get customer data, and also the order
dao module to get order information. These modules in
turn execute SQL statements to retrieve the
corresponding data and pass it back up to the customer
object in the business layer. Once the customer object
receives the data, it aggregates the data and passes
that information back up to the customer delegate,
which then passes that data to the customer screen to
Fig. Example of Layered Architecture
26. 4. Event-bus style/ Event Driven Architecture style
This pattern primarily deals with events and has 4 major components; event source,
event listener, channel and event bus. Sources publish messages to particular
channels on an event bus. Listeners subscribe to particular channels. Listeners are
notified of messages that are published to a channel to which they have subscribed
before.
Usage
Android development
Notification services
The event-driven architecture pattern is a
popular distributed asynchronous architecture
pattern used to produce highly scalable
applications.
It is also highly adaptable and can be used for
small applications and as well as large, complex
ones.
Agility high
Performance is high
Ease of development is low
Testability is low
27. Model-view-controller pattern
This pattern, also known as MVC pattern, divides an interactive application in to 3 parts as,
1. model—contains the core functionality and data ie business logic ,database query etc
2. view—displays the information to the user (more than one view may be defined),look& feel
3. controller—handles the input from the user ,affect either model or view
This is done to separate internal representations of information from the ways information is
presented to, and accepted from, the user. It decouples components and allows efficient code
reuse.
Usage
Architecture for World Wide Web applications in major programming languages.
Web frameworks such as Django and Rails.
The main purpose of MVC pattern is to
decouple the GUI from the data.
It also used to provide multiple views for
the same data
Model section is used for maintaining data Data access layer section
Handle Data representation
Dynamic rendering
Handles request flow
Never handle data logic
Event handling section
Handles Data logic flow
Interact with database
28. Client-server Architecture
This pattern consists of two parties; a server and multiple clients. The server component will
provide services to multiple client components. Clients request services from the server and
the server provides relevant services to those clients. Furthermore, the server continues to
listen to client requests.
Each client calls on the server, which performs some service and
returns the result.
The clients know the interface of the server.
The server does not need to know the interface of the client
The response in general is immediate
End users interact only with the client
Usage
•Online applications such as email, document sharing and banking.
Design Goals for Client/Server Architectures
It provide high performance
Server can handle large number of clients thus achieved scalability
It improve flexibility and reliability
29. Peer-to-peer pattern
In this pattern, individual components are known as peers. Peers may function both as a client,
requesting services from other peers, and as a server, providing services to other peers. A peer
may act as a client or as a server or as both, and it can change its role dynamically with time.
It is suitable for small applications.
Advantages:
Easy to install and configure
Eliminate central dependency
Less cost and easy maintaining
Disadvantages:
Difficult to administrate ie no control
Vulnerable to threat
Data recovery and backup is difficult
Client/Server
Client/Server
Client/Server
Client/Server
Client/Server
Client/Server
In p-2-p pattern
communication between
peers depends entirely on
application requirement