Software Design and Architecture

Download as pdf or txt
Download as pdf or txt
You are on page 1of 31

Software Design and

Architecture

Lecture 1
Topics

 Stages in Software Process


 What is design?
 Importance of Design
 Difference between design and Architecture
Stages in Software Process
Stages in Software Process
 A structured set of activities required to develop a software system.
 Many different software processes but all involve:
 Specification – defining what the system should do;

 Design and implementation – defining the organization of the system


and implementing the system;
 Validation – checking that it does what the customer wants;

 Evolution – changing the system in response to changing customer


needs.
 A software process model is an abstract representation of a process. It
presents a description of a process from some particular perspective.
Stages in Software Process
Requirement Analysis
 The process of understanding what’s needed or wanted, and
expressing the results in writing
 The process of establishing what services are required and the constraints
on the system’s operation and development.
 Requirements engineering process

 Feasibility study

 Is it technically and financially feasible to build the system?

 Requirements elicitation and analysis

 What do the system stakeholders require or expect from the system?

 Requirements specification

 Defining the requirements in detail

 Requirements validation

 Checking the validity of the requirements


Stages in Software Process
Requirement Analysis – Key Challenges
 Stakeholder issues

 Engineer/developer issues

 The management issues

 The expert issues

 The budget issues

 The planning issues

 The novelty issues


Stages in Software Process
Design
 The design of an application expresses how the applicationis to be
constructed.
 It describes the parts involved and how they are to assembled.

 It consists of a set of documents (diagrams and text)

Design is at center of SE
Stages in Software Process
Design
 Regardless of how far we advance SE techniques, design will always be at
its heart.
 It comprises of artifacts to meet goals

 It helps to represent new ideas into achievable form

 It helps to create a balance between complexity and goal.


Stages in Software Process
Implementation
 In the form of coding

 Code only against a design

 Before compiling, satisfy yourself that the code you have typed is
correct. Read it thoroughly.
 ‘correct’ means that is satisfies what’s required of it

 This is “author-inspection” (What is it???)

 Author Inspection:
 Inspect and edit the block of code you have just written until you are
convinced it does exactly what it is meant to do. Only then compile it.
Stages in Software Process
Testing
 The testing phase consists of supplying input to the application and
comparing the output with that mandated by the software requirements
specification.
 Helps to uncover defects

 Proves the presence of defects, but never their absence

 Types of Testing: Black-Box Testing, White-Box Testing

 Verification and validation (V & V) is intended to show that a system


conforms to its specification and meets the requirements of the system
customer.
Stages in Software Process
Testing - Tips on Testing
 Test early and often

 Test with extreme values


 Very small, very big, etc.
 Borderline

 “Illegal” values

 Vary test cases


 Don’t repeat tests with same test data except when specifically
intended
Stages in Software Process
Maintenance
 Maintenance refers to the work performed on the application that occurs
after it has been delivered.

Types of maintenance
1. Corrective (Defect Removal)
Finding and fixing all inconsistencies with the requirements document
2. Perfective (Enhancement)
Introducing new or improved capability
3. Adaptive
Adapts software to new environment
4. Preventive
Changing some aspect of the system to prevent failures
What is design?
Design?
Definition
 It is the creation of a plan for the construction of an object or a system.

 It is a roadmap or a strategic approach for someone to achieve a unique


expectation.

 The goal of software design is to build a model that meets all customer
requirements and leads to successful implementation.

 It defines the specifications, plans, parameters, costs, activities, processes and


how and what to do within legal, political, social, environmental, safety and
economic constraints in achieving that objective.
Design?
 Requirements specification was about the WHAT the system will do

 Design is about the HOW the system functions


 provides the overall decomposition of the system

 allows to split the work among a team of developers


 also lays down the groundwork for achieving non-functional requirements
(performance, maintainability, reusability, etc.)
 takes target technology into account (e.g., database design, etc.)
Design?
 It is Decision Making done in requirement engineering
 Decisions of how to accomplish something
 Decisions of how to represent something

 Relation between a design and decision making


 What are the decisions?
 Capturing decisions, and their rationale
 Analyzing, contrasting, and managing alternatives
 Reflecting upon them to improve future designs (future decision making)
 Distilling them into practical, reusable design knowledge
Design?
Software Architecture
 “Software architecture is the set of design decisions which, if made
incorrectly, may cause you project to be cancelled.’

 A software architecture defines:


 The components of the software system

 How the components use each other’s functionality and data

 How control is managed between the components


Design?
Design?
Design?
Design?
Design?
Top-Down vs. Bottom-Up Design
Design?
What is Architecture?
Importance of Design
Importance of Design?
 As software systems continue to grow in scale, complexity, and
distribution, their proper design becomes extremely important in
software production.
 Any software, regardless of its application domain, should have an
overall architecture design that guides its construction and
development.
 The success of a software product or system largely depends on the
success of its architecture design.
 Architecture “constitutes a relatively small, intellectually graspable
model of how the system is structured and how its components work
together”
 Representations of software architecture are an enabler for
communication between all parties (stakeholders) interested in the
development of a computer-based system.
Importance of Design?
 A poor design may result in a deficient product that does not meet
system requirements,

 is not adaptive to future requirement changes,

 is not reusable,

 exhibits unpredictable behavior or performs badly.

 Without proper planning in the architecture design stage, software


production may be very inefficient in terms of time and cost.
Design vs. Archiecture
Levels of Design
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

Note: A high-level design document will usually include a high-level


architecture diagram depicting the components, interfaces and networks that
need to be further specified or developed.
Levels of Design
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
Difference?
Difference?

You might also like