Principles of Software Design & Concepts in Software Engineering

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

HOME COMPUTER FUNDAMENTAL NETWORKING C LANGUAGE JAVA TUTORIAL C PROGRAMMING

MANAGEMENT

Home Software Engineering

Principles of Software Design & Concepts in Software Engineering Prototyping Model in


Basic Courses
BY DINESH THAKUR Category: Software Engineering Software Engineering

Once the requirements document for the software to be developed is available, the What is Feasibility
Computer Fundamental
software design phase begins. While the requirement specification activity deals Study? Types of
entirely with the problem domain, design is the first phase of transforming the Computer Networking
Feasibility. Explain
problem into a solution. In the design phase, the customer and business Structured Query (SQL)
Feasibility Study
requirements and technical considerations all come together to formulate a product
Process Java Script
or a system.
What is software? HTML Language
The design process comprises a set of
principles, concepts and practices, which Characteristics and Cascading Style Sheet
allow a software engineer to model the Classification of C Programming
system or product that is to be built. This Software. (Theory)
C Programming
model, known as design model, is
What is SRS?List & (Pratical)
assessed for quality and reviewed before a Visual Basic
code is generated and tests are conducted. Describe Various
C++ Programming
The design model provides details about Characteristics of an
Java Programming
Try Netflix software data structures, architecture, SRS
WATCH NOW
One Month Free interfaces and components which are Java Servlet
Types of Software
required to implement the system. This Java Server Pages
Maintenance
chapter discusses the design elements that are required to develop a software design
model. It also discusses the design patterns and various software design notations Principles of Software Computer Graphics
used to represent a software design. Design & Concepts in Electronic Commerce
Software Engineering Management (MIS)
Basic of Software Design
Software Myths : What is Data Structures
Software design is a phase in software engineering, in which a blueprint is developed software myth in
to serve as a base for constructing the software system. IEEE defines software Software Engineering
software engineering.
design as 'both a process of defining, the architecture, components, interfaces, and Digital Electronics
other characteristics of a system or component and the result of that process.' What is Software
C# Programming
In the design phase, many critical and strategic decisions are made to achieve the desired functionality and Requirements
Database System
quality of the system. These decisions are taken into account to successfully develop the software and carry Specification? Explain
out its maintenance in a way that the quality of the end product is improved. Structure and
Advance Courses
Principles of Software Design Characteristics of SRS.

Project Planning in
Developing design is a cumbersome process as most expansive errors are often introduced in this phase. Website Developement
Software Engineering
Moreover, if these errors get unnoticed till later phases, it becomes more difficult to correct them.
Explain Software Struts 2 Tutorial
Therefore, a number of principles are followed while designing the software. These principles act as a
framework for the designers to follow a good design practice. Process & PHP
Characteristics How to
Discuss in Detail python
Coupling and Cohesion AngularJS Tutorial
Architectural Design in
Compiler Design
Software Engineering
Troubleshooting
Software Crisis in
Software Engineering

List & Explain Various

Components of an SRS

Classification of

Software Metrics in
Some of the commonly followed design principles are as following.
Software Engineering

Invest Your Money What are Various


Software Engineering
It's easy to nd ways to invest money with Yahoo Search! Start for free
today. Yahoo Search Problems? Explain

Explain Software
1. Software design should correspond to the analysis model: Often a design element corresponds
to many requirements, therefore, we must know how the design model satisfies all the requirements Configuration

represented by the analysis model. Management Process

Object-Oriented Testing
2. Choose the right programming paradigm: A programming paradigm describes the structure of
the software system. Depending on the nature and type of application, different programming paradigms Spiral model in Software

such as procedure oriented, object-oriented, and prototyping paradigms can be used. The paradigm Engineering
should be chosen keeping constraints in mind such as time, availability of resources and nature of user's What is Software
requirements. Requirement? Types of

3. Software design should be uniform and integrated: Software design is considered uniform and Requirements.

integrated, if the interfaces are properly defined among the design components. For this, rules, format, Software Metrics in
and styles are established before the design team starts designing the software. Software Engineering

4. Software design should be flexible: Software design should be flexible enough to adapt changes Requirements Analysis

easily. To achieve the flexibility, the basic design concepts such as abstraction, refinement, and modularity in Software Engineering
should be applied effectively. What is Process Model?

5. Software design should ensure minimal conceptual (semantic) errors: The design team must Explain Waterfall Model

ensure that major conceptual errors of design such as ambiguousness and inconsistency are addressed in Along With its

advance before dealing with the syntactical errors present in the design model. Limitations

Debugging in Software
6. Software design should be structured to degrade gently: Software should be designed to handle
unusual changes and circumstances, and if the need arises for termination, it must do so in a proper Testing

manner so that functionality of the software is not affected. Software Testing

Strategies - Types of
7. Software design should represent correspondence between the software and real-world
problem: The software design should be structured in such away that it always relates with the real- Software Testing

world problem. Strategies

Software Engineering -
8. Software reuse: Software engineers believe on the phrase: 'do not reinvent the wheel'. Therefore,
software components should be designed in such a way that they can be effectively reused to increase the What is Software

productivity. Engineering? Write

Basic Objective and


9. Designing for testability: A common practice that has been followed is to keep the testing phase
Need for Software
separate from the design and implementation phases. That is, first the software is developed (designed
and implemented) and then handed over to the testers who subsequently determine whether the software Engineering

is fit for distribution and subsequent use by the customer. However, it has become apparent that the What is Formal Methods
process of separating testing is seriously flawed, as if any type of design or implementation errors are Model? Advantages and
found after implementation, then the entire or a substantial part of the software requires to be redone. Disadvantages of Formal
Thus, the test engineers should be involved from the initial stages. For example, they should be involved
Methods Model
with analysts to prepare tests for determining whether the user requirements are being met.
Differentiate Between
10. Prototyping: Prototyping should be used when the requirements are not completely defined in the Process, Project and
beginning. The user interacts with the developer to expand and refine the requirements as the Products
development proceeds. Using prototyping, a quick 'mock-up' of the system can be developed. This mock-
Rapid Application
up can be used as a effective means to give the users a feel of what the system will look like and
Development (RAD)
demonstrate functions that will be included in the developed system. Prototyping also helps in reducing
Model and its
risks of designing software that is not in accordance with the customer's requirements.
Advantages and
Note that design principles are often constrained by the existing hardware configuration, the
Disadvantages of RAD
implementation language, the existing file and data structures, and the existing organizational practices.
Model
Also, the evolution of each software design should be meticulously designed for future evaluations,
references and maintenance. What is build and fix

model or ad hoc model?


Software Design Concepts
and Explaini its
Every software process is characterized by basic concepts along with certain practices or methods. Methods Advantages and
represent the manner through which the concepts are applied. As new technology replaces older
Disadvantages
technology, many changes occur in the methods that are used to apply the concepts for the development of
Definition of Software
software. However, the fundamental concepts underlining the software design process remain the same,
some of which are described here. Engineering and

Abstraction Software Engineering

Abstraction refers to a powerful design tool, which allows software designers to consider components at an Layers

abstract level, while neglecting the implementation details of the components. IEEE defines abstraction as Software Engineering
'a view of a problem that extracts the essential information relevant to a particular purpose and ignores the Challenges
remainder of the information.' The concept of abstraction can be used in two ways: as a process and as an
What is Structural
entity. As a process, it refers to a mechanism of hiding irrelevant details and representing only the
Testing? Explain any
essential features of an item so that one can focus on important things at a time. As an entity, it refers to a
model or view of an item. Two Techniques used in

Each step in the software process is accomplished through various levels of abstraction. At the highest it

level, an outline of the solution to the problem is presented whereas at the lower levels, the solution to the Differentiate Between
problem is presented in detail. For example, in the requirements analysis phase, a solution to the problem Top Down and Bottom
is presented using the language of problem environment and as we proceed through the software process,
UP Approaches
the abstraction level reduces and at the lowest level, source code of the software is produced.
Requirements Validation
Create Your Website for Free - in Software Engineering
See What People Are Using Incremental Model or
AdIt's easy to build your website with iterative enhancement
Yahoo Search! Start for free today.
model in software
Yahoo Search
engineering
Learn more Differentiate Between

Error, Fault and Failure


There are three commonly used abstraction mechanisms in software design, namely, functional
Component-Level Design
abstraction, data abstraction and control abstraction. All these mechanisms allow us to control the
complexity of the design process by proceeding from the abstract design model to concrete design model in in software engineering
a systematic manner. Data Design in Software

1. Functional abstraction: This involves the use of parameterized subprograms. Functional abstraction Engineering

can be generalized as collections of subprograms referred to as 'groups'. Within these groups there exist When is Cost Estimation
routines which may be visible or hidden. Visible routines can be used within the containing groups as well Done? Discuss the
as within other groups, whereas hidden routines are hidden from other groups and can be used within the COCOMO Model along
containing group only. with the Parameters

2. Data abstraction: This involves specifying data that describes a data object. For example, the data Defined in it
object window encompasses a set of attributes (window type, window dimension) that describe the Coding Guidelines in
window object clearly. In this abstraction mechanism, representation and manipulation details are Software Engineering
ignored.
Describe Difference
3. Control abstraction: This states the desired effect, without stating the exact mechanism of control. Between Top-Down &
For example, if and while statements in programming languages (like C and C++) are abstractions of Bottom up Coding
machine code implementations, which involve conditional instructions. In the architectural design level,
Techniques for
this abstraction mechanism permits specifications of sequential subprogram and exception handlers
Programming
without the concern for exact details of implementation.
Software Testing – What
Architecture is Software Testing?
Software architecture refers to the structure of the system, which is composed of various components of a Characteristics of
program/ system, the attributes (properties) of those components and the relationship amongst them. The
Software Test.
software architecture enables the software engineers to analyze the software design efficiently. In addition,
Time Boxing Model in
it also helps them in decision-making and handling risks. The software architecture does the following.
Software Engineering
Provides an insight to all the interested stakeholders that enable them to communicate with each other
Highlights early design decisions, which have great impact on the software engineering activities (like Software Testing

coding and testing) that follow the design phase Techniques

Creates intellectual models of how the system is organized into components and how these components Discuss the Different
interact with each other. Levels of Testing

Currently, software architecture is represented in an informal and unplanned manner. Though the What are the Different
architectural concepts are often represented in the infrastructure (for supporting particular architectural Methods Used for
styles) and the initial stages of a system configuration, the lack of an explicit independent characterization
Monitoring a Project
of architecture restricts the advantages of this design concept in the present scenario.
Write and Explain
Note that software architecture comprises two elements of design model, namely, data design and
Software Development
architectural design.
Phases
Patterns
Explain Software
A pattern provides a description of the solution to a recurring design problem of some specific domain in
Components
such a way that the solution can be used again and again. The objective of each pattern is to provide an
insight to a designer who can determine the following. Applications
Programming Practices
1. Whether the pattern can be reused
with Top-Down, Bottom-
2. Whether the pattern is applicable to the current project
Up, Structured
3. Whether the pattern can be used to develop a similar but functionally or structurally different design Programming, and
pattern.
Information Hiding
Types of Design Patterns What is Functional
Software engineer can use the design pattern during the entire software design process. When the analysis
Testing? What are the
model is developed, the designer can examine the problem description at different levels of abstraction to
Different Techniques
determine whether it complies with one or more of the following types of design patterns.
used in it
1. Architectural patterns: These patterns are high-level strategies that refer to the overall structure and
Software Process
organization of a software system. That is, they define the elements of a software system such as
Assessment
subsystems, components, classes, etc. In addition, they also indicate the relationship between the
elements along with the rules and guidelines for specifying these relationships. Note that architectural Software Measurement

patterns are often considered equivalent to software architecture. in Software Engineering


Explain Classical Life
2. Design patterns: These patterns are medium-level strategies that are used to solve design problems.
They provide a means for the refinement of the elements (as defined by architectural pattern) of a Cycle Model or linear

software system or the relationship among them. Specific design elements such as relationship among sequential model

components or mechanisms that affect component-to-component interaction are addressed by design What is a Test Plan?
patterns. Note that design patterns are often considered equivalent to software components. What should a Test Plan

3. Idioms: These patterns are low-level patterns, which are programming-language specific. They Include

describe the implementation of a software component, the method used for interaction among software Explain Various DESIGN
components, etc., in a specific programming language. Note that idioms are often termed as coding TECHNIQUES
patterns. What do you Mean by

Modularity Structured Analysis.

Modularity is achieved by dividing the software into uniquely named and addressable components, which Discuss the Objectives

are also known as modules. A complex system (large program) is partitioned into a set of discrete of the Design Phase
modules in such a way that each module can be developed independent of other modules. After developing Criteria for Selecting
the modules, they are integrated together to meet the software requirements. Note that larger the number
Software Process
of modules a system is divided into, greater will be the effort required to integrate the modules.
Models
Software Engineering

Phases
Software Design

Documentation (SDD)
Write Different Software
Quality Factors

What are Function


Points? How are they

Computed? Explain
Modularizing a design helps to plan the development in a more effective manner, accommodate changes What is Risk
easily, conduct testing and debugging effectively and efficiently, and conduct maintenance work without
Management? Give Brief
adversely affecting the functioning of the software.
Ideas for Risk
Information Hiding
Assessment and Control
Modules should be specified and designed in such a way that the data structures and processing details of
Code Verification
one module are not accessible to other modules. They pass only that much information to each other,
which is required to accomplish the software functions. The way of hiding unnecessary details is referred to Techniques in Software
as information hiding. IEEE defines information hiding as 'the technique of encapsulating software Engineering
design decisions in modules in such a way that the module's interfaces reveal as little as possible about the Requirements
module's inner workings; thus each module is a 'black box' to the other modules in the system.
Management Process in

Software Engineering
What is V-model ?
Advantages and

Disadvantages of V
Model.

What do you Mean by


Staffing

Software Maintenance in
Software Engineering

Software Maintenance

Information hiding is of immense use when modifications are required during the testing and maintenance Models
phase. Some of the advantages associated with information hiding are listed below. What are Test Case

1. Leads to low coupling Specifications

Test Case Design |


2. Emphasizes communication through controlled interfaces
Software Testing
3. Decreases the probability of adverse effects
Discuss Briefly the
4. Restricts the effects of changes in one component on others Validation of SRS

5. Results in higher quality software. Software Maintenance

Life Cycle
Stepwise Refinement
What is Exhaustive
Stepwise refinement is a top-down design strategy used for decomposing a system from a high level of
Testing
abstraction into a more detailed level (lower level) of abstraction. At the highest level of abstraction,
function or information is defined conceptually without providing any information about the internal Emergence of Software
workings of the function or internal structure of the data. As we proceed towards the lower levels of Engineering
abstraction, more and more details are available. Measuring Software
Software designers start the stepwise refinement process by creating a sequence of compositions for the Quality in Software
system being designed. Each composition is more detailed than the previous one and contains more
Engineering
components and interactions. The earlier compositions represent the significant interactions within the
Software Design
system, while the later compositions show in detail how these interactions are achieved.
Reviews in Software
Only $5 for 10pcs 2 Layer PCB Engineering
Prototype in 24 Hours. Order Object Oriented Metrics
Now.
in Software Engineering
Ad ALLPCB What is Quality
Assurance Plans?
Learn more
Discuss the Different
Approaches Used
To have a clear understanding of the concept, let us consider an example of stepwise refinement. Every
computer program comprises input, process, and output. Levels of Software
Testing
1. INPUT
Coding Documentation
Get user's name (string) through a prompt.
in Software Engineering
Get user's grade (integer from 0 to 100) through a prompt and validate.
Coding Methodology in
2. PROCESS
Software Engineering
3. OUTPUT
What are the Different
This is the first step in refinement. The input phase can be refined further as given here. Verification Methods

1. INPUT Used for Detailed Design

Get user's name through a prompt. Discuss Briefly Test

Cases and Test Criteria


Get user's grade through a prompt.
What are the Matrices,
While (invalid grade)
Measurements and

Ask again: Models of Project


Management Process
2. PROCESS
What are Test Oracles
3. OUTPUT
What is Black Box
Note: Stepwise refinement can also be performed for PROCESS and OUTPUT phase. Testing
Refactoring Write a Note on Software
Refactoring is an important design activity that reduces the complexity of module design keeping its Design Phases
behaviour or function unchanged. Refactoring can be defined as a process of modifying a software system Tools for Software
to improve the internal structure of design without changing its external behavior. During the refactoring
Maintenance
process, the existing design is checked for any type of flaws like redundancy, poorly constructed algorithms
What are Requirement
and data structures, etc., in order to improve the design. For example, a design model might yield a
component which exhibits low cohesion (like a component performs four functions that have a limited Reviews
relationship with one another). Software designers may decide to refactor the component into four Explain Object Oriented
different components, each exhibiting high cohesion. This leads to easier integration, testing, and
Analysis and Dsign
maintenance of the software components.
Tools
Structural Partitioning
What do you Mean by
When the architectural style of a design follows a hierarchical nature, the structure of the program can be
Process Improvement
partitioned either horizontally or vertically. In horizontal partitioning, the control modules are used to
and Maturity. Explain the
communicate between functions and execute the functions. Structural partitioning provides the following
benefits. CMM Model

The testing and maintenance of software becomes easier. Explain Various Phases

The negative impacts spread slowly. of Process Management


The software can be extended easily. Write Major Problems in

Besides these advantages, horizontal partitioning has some disadvantage also. It requires to pass more data System (Software)
across the module interface, which makes the control flow of the problem more complex. This usually Development
happens in cases where data moves rapidly from one function to another.
What are Various Types
of Errors that Occur in

SRS
What is Static Analysis?

How is it Performed?
What are its Uses
Software Testing Tools

What is Bottom-Up
Design?

In vertical partitioning, the functionality is distributed among the modules--in a top-down manner. The Techniques for
modules at the top level called control modules perform the decision-making and do little processing Maintenance
whereas the modules at the low level called worker modules perform all input, computation and output What is Mutation Testing
tasks.
What are the Different
Concurrency
Techniques Used for
Computer has limited resources and they must be utilized efficiently as much as possible. To utilize these Proving the Correctness
resources efficiently, multiple tasks must be executed concurrently. This requirement makes concurrency
of a Program
one of the major concepts of software design. Every system must be designed to allow multiple processes to
execute concurrently, whenever possible. For example, if the current process is waiting for some event to Responsibilities of

occur, the system must execute some other process in the mean time. Software Project

However, concurrent execution of multiple processes sometimes may result in undesirable situations such Manager
as an inconsistent state, deadlock, etc. For example, consider two processes A and B and a data item Q1 Software Process and
with the value '200'. Further, suppose A and B are being executed concurrently and firstly A reads the value
Life Cycle
of Q1 (which is '200') to add '100' to it. However, before A updates es the value of Q1, B reads the value
Designing Software
ofQ1 (which is still '200') to add '50' to it. In this situation, whether A or B first updates the value of Q1, the
value of would definitely be wrong resulting in an inconsistent state of the system. This is because the Metrics in Software
actions of A and B are not synchronized with each other. Thus, the system must control the concurrent Engineering
execution and synchronize the actions of concurrent processes. What is the Psychology

One way to achieve synchronization is mutual exclusion, which ensures that two concurrent processes do of Testing
not interfere with the actions of each other. To ensure this, mutual exclusion may use locking technique. In What is Design Review?
this technique, the processes need to lock the data item to be read or updated. The data item locked by
How Automated Cross-
some process cannot be accessed by other processes until it is unlocked. It implies that the process, that
Checking Determines
needs to access the data item locked by some other process, has to wait.
Review of System
Developing a Design Model
Explain Various

To develop a complete specification of design (design model), four design models are needed. These Programming Practices
models are listed below. used in Coding. What is

1. Data design: This specifies the data structures for implementing the software by converting data meant by Information
objects and their relationships identified during the analysis phase. Various studies suggest that design Hiding
engineering should begin with data design, since this design lays the foundation for all other design Write Down Various
models. Software Problems

2. Architectural design: This specifies the relationship between the structural elements of the software, Test Plan | Software
design patterns, architectural styles, and the factors affecting the ways in which architecture can be Testing
implemented. Analysis Patterns in

3. Component-level design: This provides the detailed description of how structural elements of Software Engineering
software will actually be implemented. Write a Short Note on

4. Interface design: This depicts how the software communicates with the system that interoperates Project Control

with it and with the end-users. Termination Analysis

Requirements Elicitation
or requirements capture

or requirements

acquisition

Software Requirements
Engineering Tools

Features of Software

Code in Software
Engineering

What are the Different

Methods Used to Specify

the Modules in Detailed


Design

What Do You Mean by

Knot Count

Write Management
Concealed -Thriller Novel - Books To Read - Dan W. Approaches in Software
Roberts OPEN
Engineering
Could a pilot change an airplane's identity to mask a deadly scheme? danwroberts.com
Issues in Software

Metrics
What are the Different

Approaches Used for the

Verification of a Design
Document

Write Role of

Management
Guest House In Karachi Software Engineering To Be or Not to Be - Definition of Software
Phases Save Your Family Engineering and Apart from Requirement
Business Software Engineering...
Reviews what are the
Ad Guest House In Karachi ecomputernotes.com Ad amazon.com ecomputernotes.com other Methods Used for

the Validation of SRS

Quantitative Process
Management (QPM)

Process Change

Management (PCM)
Free IT Training Software Process Component-Level Software Testing
Assessment Design in software Strategies - Types of Technology Change
engineering Software Testing...
Management (TCM)

Ad Connect Soft Ltd ecomputernotes.com ecomputernotes.com ecomputernotes.com Coding Tools in Software

Engineering
Organization Process
About Dinesh Thakur
Definition (OPD)
Dinesh Thakur holds an B.SC (Computer Science), MCSE, MCDBA, CCNA, CCNP, A+, SCJP
Organization Process
certifications. Dinesh authors the hugely popular Computer Notes blog. Where he writes how-
Focus (OPF)
to guides around Computer fundamental , computer software, Computer programming, and
web apps. For any type of query or something that you think is missing, please feel free to Contact us.

Advance Courses Basic Courses Top Category

Website Developement Computer Fundamental Basic Computer


Struts 2 Tutorial Computer Networking Networking
PHP (Hypertext Preprocessor) Structured Query (SQL) C Programming
How to C Programming C++ Programming
Python C++ Programming Java Programming
AngularJS Tutorial Java Programming Management (MIS)
Compiler Design Computer Graphics Computer Graphics

Sitemap | Contact Us | About Us | Privacy Policy


Dinesh Thakur is a Technology Columinist and founder of Computer Notes and Technology Motivation. Mail Me At (@Computer Notes)

You might also like