Design Process 1111111

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 42

Software Design

Process
Software Design Process
• The design phase of software development deals with transforming
the customer requirements as described in the SRS documents into a
form implementable using a programming language.

• The software design process can be divided into the following three
levels of phases of design:
• 1. Interface Design
• 2. Architectural Design
• 3. Detailed Design
Interface Design
• The first stage in any software design process is to develop an
understanding of the relationships between the software that is being
designed and its external environment.

• This is essential for deciding how to provide the required system


functionality and how to structure the system to communicate with its
environment.

• Setting the system boundaries helps you decide what features are
implemented in the system being designed and what features are in other
associated systems.
This helps designers identify objects in the system and gives them an understanding of
what the system is intended to do.

Weather station use cases


2.Architectural design

• In architectural design, the overall structure of the system is chosen, but


the internal details of major components are ignored.

• The major components that make up the system and their interactions,
and then may organize the components.

• The key benefit of this architecture is that it is easy to support different


configurations of subsystems.

• The architectural design adds important details ignored during the


interface design.
4.Detailed Design models

• Design or system models, show the objects or object classes in a


system. They also show the associations and relationships
between these entities.

• These models are the bridge between the system requirements


and the implementation of a system.
Software quality guidelines
• A design is generated using the recognizable architectural styles and
compose a good design characteristic of components and it is
implemented in evolutionary manner for testing.

• A design of the software must be modular i.e the software must be


logically partitioned into elements.

• In design, the representation of data , architecture, interface and


components should be distinct.
• A design must carry appropriate data structure and recognizable data
patterns.

• Design components must show the independent functional


characteristic.

• A design creates an interface that reduce the complexity of


connections between the components.

• A design must be derived using the repeatable method.

• The notations should be use in design which can effectively


communicates its meaning.
Design concepts
• The set of fundamental software design concepts are as follows:

• 1. Abstraction
• 2. Architecture
• 3. Patterns
• 4. Modularity
• 5. Information hiding
• 6. Functional independence
• 7. Refinement
• 8. Refactoring
• 9. Design classes
• 1. Abstraction
• A solution is stated in large terms using the language of the problem
environment at the highest level abstraction.

• 2. Architecture
• The complete structure of the software is known as software
architecture.

• 3. Patterns
• A design pattern describes a design structure and that structure solves
a particular design problem in a specified content.
• 4. Modularity
• A software is separately divided into name and addressable components.
Sometime they are called as modules which integrate to satisfy the problem
requirements.

• 5. Information hiding
• Modules must be specified and designed so that the information like algorithm
and data presented in a module is not accessible for other modules not requiring
that information.

• 6. Functional independence
• The functional independence is the concept of separation and related to the
concept of modularity, abstraction and information hiding.
• The functional independence is accessed using two criteria i.e Cohesion and
coupling.
• 7. Refinement:
• A hierarchy is established by decomposing a statement of function in a
stepwise manner till the programming language statement are
reached.

• 8. Refactoring:
• Refactoring is the process of changing the software system in a way
that it does not change the external behaviour of the code still
improves its internal structure.

• 9. Design classes :
• The model of software is defined as a set of design classes.
Design model
• Design modeling provides a variety of different views of the system.
• It is mainly classified into four
• categories – Data design, architectural design, interface design, and
component-level design.
1)Data design:
• It represents the data objects and their interrelationship in an entity-
relationship diagram.
• Entity-relationship consists of information required for each entity or data
objects as well as it shows the relationship between these objects.

2)Architectural design:
• It defines the relationship between major structural elements of the
software.
• It is expressed as a block diagram defining an overview of the system
structure – features of the components and how these components
communicate with each other to share data.
3)User Interfaces design:
• It represents how the Software communicates with the user i.e. the
behavior of the system.
4)Component level design:
• It transforms the structural elements of the software architecture into
a procedural description of software components.
Pattern based software design
• A design pattern provides a general reusable solution for the common
problems that occur in software design.

• The pattern typically shows relationships and interactions between


classes or objects.
• Types of Design Patterns
• 1. Creational Design Pattern
• 2. Structural Design Pattern
• 3. Behavioral Design Pattern
Architectural Design
• 1] Data centered architectures
• 2] Data flow architectures
• 3]Call and Return architectures
• i] Remote procedure call architecture
• ii] Main program or Subprogram architectures
• 4] Object Oriented architecture
• 5] 5] Layered architecture
1] Data centered architectures

• A data store will reside at the center of this architecture and is


accessed frequently by the other components that update, add,
delete or modify the data present within the store.
2] Data flow architectures

• This kind of architecture is used when input data is transformed into


output data through a series of computational manipulative
components.
4] Object Oriented architecture
• The components of a system encapsulate data and the operations that
must be applied to manipulate the data. The coordination and
communication between the components are established via the
message passing.
• Class
• Object
• Encapsulation
• Polyporhism
• Inheritance
• Abstraction
5] Layered architecture:
• A number of different layers are defined with each layer performing a
well-defined set of operations. Each layer will do some operations
that becomes closer to machine instruction set progressively.
• At the outer layer, components will receive the user interface
operations and at the inner layers, components will perform the
operating system interfacing(communication and coordination with OS)
• Intermediate layers to utility services and application software
functions.
• One common example of this architectural style is OSI-ISO (Open
Systems Interconnection-International Organisation for
Standardisation) communication system.
User Interface Design
• User interface is the front-end application view to which user
interacts in order to use the software. The software becomes more
popular if its user interface is:

• Attractive
• Simple to use
• Responsive in short time
• Clear to understand
• Consistent on all interface screens
• There are two types of User Interface:

• Command Line Interface: Command Line Interface provides a command


prompt, where the user types the command and feeds to the system. The
user needs to remember the syntax of the command and its use.

• Graphical User Interface: Graphical User Interface provides the simple


interactive interface to interact with the system. GUI can be a combination
of both hardware and software. Using GUI, user interprets the software.
User Interface Design Process:
UML
• Unified Modeling Language (UML) is a general purpose modelling
language. The main aim of UML is to define a standard way to
visualize the way a system has been designed.

• Diagrams in UML can be broadly classified as:


• 1. Structural Diagrams
• 2. Behavior Diagrams
• 1. Structural Diagrams –
• Capture static aspects or structure of a system. Structural Diagrams include:
I)Component Diagrams,
II)Object Diagrams,
III)Class Diagrams
IV)Deployment Diagrams.

• 2. Behavior Diagrams –
• Capture dynamic aspects or behavior of the system. Behavior diagrams
include:
• I)Use Case Diagrams
• II)State Diagrams
• III)Activity Diagrams
• IV)Interaction Diagrams.
Rumbaugh Methodology (OMT)
• The Rumbaugh methodology also known as OMT (Object Modeling Technique) is
an approach used to develop manageable object-oriented systems and host
object oriented programming.

• The purpose is to allow for class attributes, methods, inheritance, and association
to be easily expressed. OMT is used in the real world for software modeling and
designing.

• According to Rumbaugh, there are several main reasons to utilize this modeling
approach. One is to simulate entities before constructing them and another is to
make communication with customers easier. Additionally, it help to reduce
complexity through visualization.
• OMT consists of four stages(Phases):
• Analysis: Assigns an object, dynamic and functional model to the
design.

Systems Design: Outlines the basic systems structure of the
program

Object Design: Classifies objects and determines operations and
data structures. Inheritance and different associations are also
checked.

Implementation: Conveys design through code.
Booch Methodology
• Booch’s methodology focuses on object-oriented analysis and design
and consists of five activities: conceptualization, analysis, design,
evolution, and maintenance.
• Conceptualization: Establish requirements taking into account the
perspective of the customer
• Analysis: Develop a model by defining object classes, their
attributes, methods, and inheritance. Include associations, the
dynamic part of a model.
• Design: Develop a structure/architecture where logical and physical
details are discussed.
• Evolution: As it relates to the implementation
• Maintainance: Maintainance following the delivery of the product
Jacobson Methodology (OOSE)

• The Jacobson methodology, also known as Object-Oriented Software


Engineering (OOSE) or even Objectory, is a method used to plan,
design, and implement object-oriented software.

• The method is broken down into five parts: a set of requirements, an


analysis, a design, an implementation, and a testing model. Uniquely,
the methodology or OOSE utilizes use cases in its design.
• Models:
Requirements: Create problem domain object diagram (as they
satisfy requirements) and specifies use case diagrams

Analysis: Analysis of requirement specification .

Design: State transition diagrams and interaction diagrams.

Implementation: Implementation of the model

Testing Model: Testing of the model
Need for standardization:
• standardization is the key to working efficiently:

1)Better Software: Standardized software is more transparent since it


uses well-understood modules arranged in a well-defined architecture.

2) Better Interfaces: This reduces the costs surrounding integrating your


machines into a production line and adds value to your machines.
3) Increased Efficiency: Since software modules are reused across
projects, less engineering effort is spent on each project creating
software objects.
4)Automation Possibilities: code generation is faster than manually
creating code and contains fewer defects since the code is created based
on a set of rules provided by the user.
CASE Tools
• CASE stands for Computer Aided Software Engineering. It means,
development and maintenance of software projects with help of
various automated software tools.

• CASE tools are set of software application programs, which are used
to automate SDLC activities. CASE tools are used by software project
managers, analysts and engineers to develop software system.
Components of CASE Tools
• CASE tools can be broadly divided into the following parts based on
their use at a particular SDLC stage:

• Upper Case Tools


• Lower Case Tools
• Integrated Case Tools
Case Tools Types
• Diagram tools: These tools are used to represent system components, data
and control flow among various software components and system structure
in a graphical form.

• Process Modeling Tools:Process modeling tools help the managers to


choose a process model or modify it as per the requirement of software
product.

• Project Management Tools:These tools are used for project planning, cost
and effort estimation, project scheduling and resource planning.

• Documentation Tools:Documentation tools generate documents for


technical users and end users.
• Analysis Tools:These tools help to gather requirements, automatically check for
any inconsistency, inaccuracy in the diagrams, data redundancies .

• Design Tools:These tools help software designers to design the block structure of
the software, which may further be broken down in smaller modules using
refinement techniques.

• Configuration Management Tools:An instance of software is released under one


version.

• Change Control Tools:They deal with changes made to the software after its
baseline is fixed or when the software is first released.

• Programming Tools: These tools consist of programming environments like IDE


(Integrated Development Environment), in-built modules library and simulation
tools.
• Prototyping Tools: Prototype provides initial look and feel of the product and
simulates few aspect of actual product.

• Web Development Tools:These tools used to designing web pages with all allied
elements like forms, text, script, graphic and so on. Web tools also provide live
preview of what is being developed and how will it look after completion.

• Quality Assurance Tools:Quality assurance in a software organization is


monitoring the engineering process and methods adopted to develop the
software product in order to ensure conformance of quality as per organization
standards.

• Maintenance Tools:Software maintenance includes modifications in the


software product after it is delivered.

You might also like