Software Design & Architecture
System:
A system is a set of rules an arrangement of things or a group of related things that work
toward a common goal.
System is a collection of components.
Software is the one of component of system.
Requirements:
Requirements will be a statement and it would be able to make our sense.
A statement that identifies a product or process operational, functional or design characteristics
which is unambiguous, testable and necessary for process acceptability (by consumer or internal
Quality Assurance Guidelines).
CMM (Capability Maturity Model)
CMMI was developed by SEI (Software Engineering Institute).
It is not software process model.
It is used as a benchmark to measure the maturity of organization software.
1. Initial: (Level-1)
Work is performed Informally
Organized not planned and advanced
Ad hoc activity
2. Repeatable: (Level-2)
Work is planned and tracked
Track cost, schedule and functionality
Proper Management
3. Defined: (Level-3)
Work is well defined
Every phase of process has made documentation
Defined & Documentation
4. Managed: (Level-4):
Work is Quantitatively control
Quantitative measure of time
Measure every phase of process (time) etc.
5. Optimizing (Level-5):
Work is based upon continuous Improvement
Best Software companies
Process change management
Technology change management
Defect Prevention
Software Design architecture:
The Software architecture of a program or computing system is
the structure of the system which comprise:
Software components
Externally visible properties of those components
Relationship among the components
Software architectural design represents the structure of the data and program components that
are required to build a computer-based-system.
Why we need?
The architecture is not the operational software. Rather, it is a representation that enables a
software engineer to:
[1] Analyse the effectiveness of the design: In meeting its stated requirements.
[2] Reduce the risks: Associated with the construction of the software.
Why Architecture is important?
Representations of software architecture are an enabler for communication between all parties
(Stakeholder) interested in the development of a computer-based system.
Controls Complexity
Gives Consistency
Reduce risk
Enable re-use
Architecture Design Process:
Creation: of the data design
Derivation: of one or more representations of the architectural structure of the
system.
Analysis: of alternative architectural styles to choose the one best suited to
customer requirements and equality attributes.
Elaboration: of the architecture based on the selected architecture.
Architecture Attributes:
Performance: Localize operations to minimize sub-system communication.
Security: Use a layered architecture with critical assets in inner layers.
Safety: Isolate safety-critical components.
Availability: Include redundant components in the architecture.
Maintainability: Use fine-grain, self-contained components.
Architecture Styles:
Each style describes a system category that encompasses:
1) Set of components: ( a system e.g database, computational models that perform a
function required)
2) Set of connectors: that enable “communication, coordination and cooperation” among
components.
3) Constraints: that define how components can be integrated to form the system.
Data-centre architectures
Data flow architectures
Call and return architectures
Object-Oriented architectures
Layered architectures
Data-centre architectures Client Client
Software Software
Client
Software
Client
Software
Client
Software Data store (repository)
Client Client
Software Software
Client
Software
Data flow architectures
Characterized by viewing the system as a series of transformations on successive pieces of input
data. Data enters the system and then flows through the components one at a time until they are
assigned to output of data store.
Database
Database result Server
Requests Query Result
Web
Client Side
Server
HTML HTML Files
Page
Generator