Software Design and Development
(CSE 2271)
Presidency School of Computer Science and
Engineering (PSCS)
General Instructions
• Follow the below mentioned instructions throughout the semester:
1) Maintain complete discipline in the class room & Be on time to every class.
2) No student will be allowed if they are late (after the scheduled time). So, be in the class before
faculty arrives.
3) Students should start filling the seats from the front rows. There should not be any row left
empty in between and there should not be scattered seating of the students in the classroom.
4) Boys and girls should sit separately, Girls on the right side and boys on the left side as per
the faculty view from the dais.
5) Students should keep their bags beside their chairs, not on the desks or not on their laps.
6) Students should strictly switch off their Mobile phones and keep it in their bags (not even in
their pockets too)
TEXT BOOK AND REFERENCE BOOKS
Text book(s):
Roger S. Pressman, “Software Engineering – A Practitioner’s Approach”, VII Edition, McGraw-
Hill, 2017.
Bob Hughes, Mike Cotterell, Rajib Mall, “Software Project Management”, VI Edition, McGraw-
Hill, 2018.
Reference book(s)
Ian Sommerville, “Software Engineering”, IX Edition, Pearson Education Asia, 2011.
Rajib Mall, “Fundamentals of Software Engineering”, VI Edition, PHI learning private limited,
2014.
Agile Software Development Principles, Patterns and Practices.1st Edition, Wiley, 2002
3
Module - 1
Introduction to Software Engineering and
Process Models
Introduction: Need for Software Engineering, Professional Software
Development, Software Engineering Ethics, Software Engineering Practice-
Essence of Practice, General Principles Software Development Life Cycle
Models: Waterfall Model – Classical Waterfall Model, Iterative Waterfall Model,
Evolutionary model-Spiral, Prototype.
CO1. Describe the Software Engineering principles, ethics
and process models(Understand)
CONTENTS SDLC:
Classical Waterfall Model
What is a software? Iterative Waterfall Model
Characteristics of Software Evolutionary model
Types of software Spiral
Need for S/W Engineering Prototype
S/W Engineering Ethics Incremental model
S/W Engineering Practice-Essence of Practice RAD model
Maturity Model
CMMI Model
What is a software?
• Instructions (computer programs) that when executed provide desired
function and performance
• Data structures that enable the programs to adequately manipulate
information
• Documents that describe the operation and use of the programs.
Characteristics of Software
• To gain an understanding of software (and ultimately an
understanding of software engineering), it is important to examine
the characteristics of software that make it different from other
things that human beings build.
• Software is a logical rather than a physical system element.
Therefore, software has characteristics that are considerably
different than those of hardware:
Characteristics of Software
1. Software is developed or engineered, it is not manufactured in
the classical sense.
Although some similarities exist between software development and
hardware manufacture, the two activities are fundamentally different.
In both activities, high quality is achieved through good design, but
the manufacturing phase for hardware can introduce quality problems
that are nonexistent (or easily corrected) for software.
Characteristics of Software
2. Software doesn't "wear out."
Characteristics of Software
2. Software doesn't "wear out."
• Above Figure depicts failure rate as a function of time for hardware. The
relationship, often called the "bathtub curve," indicates that hardware
exhibits relatively high failure rates early in its life (these failures are often
attributable to design or manufacturing defects); defects are corrected and
the failure rate drops to a steady-state level (ideally, quite low) for some
period of time.
• As time passes, however, the failure rate rises again as hardware
components suffer from the cumulative affects of dust, vibration, abuse,
temperature extremes, and many other environmental maladies. Stated
simply, the hardware begins to wear out.
Characteristics of Software
2. Software doesn't "wear out."
• Software is not susceptible to the environmental maladies that
cause hardware to wear out.
• In theory, therefore, the failure rate curve for software should take
the form of the “idealized curve” shown in Figure below.
• Undiscovered defects will cause high failure rates early in the life
of a program. However, these are corrected (ideally, without
introducing other errors) and the curve flattens as shown.
Characteristics of Software
2. Software doesn't "wear out."
Characteristics of Software
3. Although the industry is moving toward component-based
assembly, most software continues to be custom built
• As an engineering discipline evolves, a collection of standard design
components is created.
• The reusable components have been created so that the engineer can
concentrate on the truly innovative elements of a design, that is, the parts of
the design that represent something new.
• In the hardware world, component reuse is a natural part of the engineering
process. In the software world, it is something that has only begun to be
achieved on a broad scale
Characteristics of Software
3. Although the industry is moving toward component-
based assembly, most software continues to be custom built
• A software component should be designed and implemented so that it can
be reused in many different programs.
• For example, today's graphical user interfaces are built using reusable
components that enable the creation of graphics windows, pull-down
menus, and a wide variety of interaction mechanisms. The data structure
and processing detail required to build the interface are contained with a
library of reusable components for interface construction.
Types of Software
• System Software
Manages hardware and system resources.
• Includes Operating Systems (e.g., Windows, Linux), device drivers and
utilities.
• Application Software
Designed for end-users to perform specific tasks.
Examples: Word processors, web browsers and games.
Types of Software
• Development Software
Tools for building and maintaining software.
Includes compilers, debuggers and Integrated Development
Environments (IDEs).
• Embedded Software
Specialized software for controlling devices and machines.
Found in devices like microwaves, cars and IoT gadgets.
What is Software & What is Engineering?
• Software is the programs and routines for a computer or the program material
for an electronic device which make it run.
• Engineering on the other hand, is all about developing products, using well-
defined, scientific principles and methods.
What is Software Engineering?
• As per IEEE, in its standard 610.12-1990, defines software engineering as the
application of a systematic, disciplined approach for the development,
operation, and maintenance of software.
Need for Software Engineering
The need of software engineering arises because of higher rate of change in
user requirements and environment on which the software is working.
This includes:
To manage Large software - It is easier to build a wall than a house or
building, likewise, as the size of software become large, engineering has to
step to give it a scientific process.
For more Scalability- If the software process were not based on scientific and
engineering concepts, it would be easier to re-create new software than to
scale an existing one.
Contd..
Cost Management- As hardware industry has shown its skills and huge
manufacturing has lower down the price of computer and electronic
hardware. But the cost of software remains high if proper process is not
adapted.
To manage Dynamic Nature of software- The always growing and adapting
nature of software hugely depends upon the environment in which user
works. If the nature of software is always changing, new enhancements need
to be done in the existing one. This is where software engineering plays a
good role.
For better Quality Management- Better process of software development
provides better and quality software product.
Software Engineering Ethics
• Software engineering ethics establishes principles of conduct that
members of the profession are expected to observe in the practice of
software engineering.
• Software engineering ethics covers a wide ethical spectrum. It
participates in general, professional, and technical ethics.
Software Engineering Ethics
The software engineers shall adhere to the following Eight Principles:
1. PUBLIC – Software engineers shall act consistently with the public
interest.
2. CLIENT AND EMPLOYER – Software engineers shall act in a
manner that is in the best interests of their client and employer
consistent with the public interest.
3. PRODUCT – Software engineers shall ensure that their products
and related modifications meet the highest professional standards
possible.
4. JUDGMENT – Software engineers shall maintain integrity and
independence in their professional judgment.
Contd..
5. MANAGEMENT – Software engineering managers and leaders shall
subscribe to and promote an ethical approach to the management of
software development and maintenance.
6. PROFESSION – Software engineers shall advance the integrity and
reputation of the profession consistent with the public interest.
7. COLLEAGUES – Software engineers shall be fair to and supportive of
their colleagues.
8. SELF – Software engineers shall participate in lifelong learning
regarding the practice of their profession and shall promote an ethical
approach to the practice of the profession.
For details pls click this link
The Software Engineering Code of Ethics and Professional Practice
The Essence of Software Practice
George Polya, in a book written in 1945 (!), describes the essence of
software engineering practice and suggests:
[Link] the problem
(communication and analysis).
[Link] a solution
(modeling and software design).
[Link] out the plan (code generation).
[Link] the result for accuracy
(testing and quality assurance).
Dept. of CSE, SOE, Presidency University
25
Understand the Problem
• Who has a stake in the solution to the problem? That is, who are the
stakeholders?
• What are the unknowns? What data, functions, and features are required to
properly solve the problem?
• Can the problem be compartmentalized? Is it possible to represent smaller
problems that may be easier to understand?
• Can the problem be represented graphically? Can an analysis model be
created?
Dept. of CSE, SOE, Presidency University
26
Plan the Solution
• Have you seen similar problems before? Are there patterns that are
recognizable in a potential solution? Is there existing software that implements
the data, functions, and features that are required?
• Has a similar problem been solved? If so, are elements of the solution reusable?
• Can subproblems be defined? If so, are solutions readily apparent for the
subproblems?
• Can you represent a solution in a manner that leads to effective
implementation? Can a design model be created?
Dept. of CSE, SOE, Presidency University
27
Carry Out the Plan
• Does the solution conform to the plan? Is source code
traceable to the design model?
• Is each component part of the solution provably correct? Has
the design and code been reviewed, or better, have correctness
proofs been applied to algorithm?
Dept. of CSE, SOE, Presidency University
28
Examine the Result
• Is it possible to test each component part of the solution?
Has a reasonable testing strategy been implemented?
• Does the solution produce results that conform to the data,
functions, and features that are required? Has the software
been validated against all stakeholder requirements?
Dept. of CSE, SOE, Presidency University
29