SlideShare a Scribd company logo
SOFTWARE ENGINEERING
(CSE 2014)
Department of Computer Science and Engineering
School of Engineering,
PRESIDENCY UNIVERSITY
TEXT BOOK AND REFERENCE BOOKS
Dept. of CSE, SOE, Presidency University
2
 REFERENCE MATERIALS:
 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.
CHAPTER 1 - CONTENTS
1.Need for Software Engineering
2.Professional Software Development
3.Software Engineering Ethics
4.Software Engineering Practice-Essence of Practice,
5.General Principles Software Development Life Cycle
6.Waterfall Model – Classical Waterfall Model
7.Waterfall Model – Iterative Waterfall Model
8.Evolutionary model-Spiral
9.Evolutionary model-Prototype
What is Software & What is
Engineering?
•The term is made of two words, software and
engineering.
•Software is the programs and routines for a
computer or the program material for an
electronic device which make it run.
•Example: Excel or Windows or iTunes.
•Engineering on the other hand, is all about
developing products, using well-defined, scientific
principles and methods.
What is Software Engineering?
•Software engineering is defined as a process of
analyzing user requirements and then designing,
building, and testing software application which will
satisfy those requirements.
•As per IEEE, in its standard 610.12-1990, defines
software engineering as the application of a
systematic, disciplined, which is a computable
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:
Large software - It is easier to build a wall than to a house or
building, likewise, as the size of software become large
engineering has to step to give it a scientific process.
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- 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.
Dynamic Nature- 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.
Quality Management- Better process of software development
provides better and quality software product.
Professional Software Development
•Professional Software Development is about the
emerging profession of software engineering – and
professional software practices that support
economical creation of high-quality software.
•What does a professional software engineer do?
•Software engineers develop, design, and test software
applications. They apply engineering principles to the
process of building software.
•Programming languages like C++, Java, and Python,
they design software for computer applications, mobile
apps, cloud platforms, and web applications.
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.
What is the essence of software engineering practice?
•Essence intuitively describes all common aspects of
a software development endeavour and helps teams
understand where they are, what's missing or what
needs to be addressed - regardless of each team's
prescribed way of working.
•The essence of software engineering practice might
be described as: understand the problem, plan a
solution, carry out the plan, and examine the result
for accuracy.
Software Practice
•Practice is a broad array of concepts, principles,
methods, and tools that you must consider as
software is planned and developed.
•It represents the details—the technical
considerations —that are below the surface of the
software process—the things that you’ll need to
actually build high-quality computer software.
The Essence of Software Practice
George Polya, in a book written in 1945 (!), describes the
essence of software engineering practice and suggests:
1.Understand the problem
(communication and analysis).
2.Plan a solution
(modeling and software design).
3.Carry out the plan (code generation).
4.Examine the result for accuracy
(testing and quality assurance).
Dept. of CSE, SOE, Presidency University
14
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
15
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
16
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
17
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
18
Core Principles of Software Development Life Cycle
• The Reason It All Exists: Provide value to the customer and
the user. If you can’t provide value, then don’t do it.
• KISS:Keep It Simple, Stupid! All design should be as simple
as possible, but no simpler. This facilitates having a more
easily understood and easily maintained system.
• Maintain the product and project “vision”: A clear vision is
essential to the success of a S/W project.
• What you produce, others will consume: Always specify,
design, and implement knowing someone else have to
understand what you are doing.
Contd..
• Be open to the Future: Never design yourself into a corner.
Always ask “what if,” and prepare yourself for all possible
answers by creating systems that solve the general problem,
not just the specific one.
• Plan Ahead for Reuse: Planning ahead for reuse reduces the
cost and increases the value of both the reusable components
and the systems into which they are incorporated.
• Think! : Placing clear, complete thought before action
almost always produces better results.
Software Process Model
•A software process model is an abstraction of the
actual process, which is being described.
•It can also be defined as a simplified representation
of a software process.
•Each model represents a process from a specific
perspective
Waterfall Model
•The waterfall model is a classical model used in
system development life cycle to create a system
with a linear and sequential approach.
•It is termed as waterfall because the model develops
systematically from one phase to another in a
downward fashion.
Classical Waterfall Model
• The classical waterfall model is the basic software
development life cycle model.
• It is very simple but idealistic.
• Earlier this model was very popular but nowadays it is not
used. But it is very important because all the other software
development life cycle models are based on the classical
waterfall model.
• The classical waterfall model divides the life cycle into a set
of phases. This model considers that one phase can be started
after the completion of the previous phase.
Classical Waterfall Model
• That is the output of one phase will be the input to the next
phase.
• Thus the development process can be considered as a
sequential flow in the waterfall. Here the phases do not
overlap with each other.
• The different sequential phases of the classical waterfall
model are shown in the below figure:
Classical Waterfall Model
Dept. of CSE, SOE, Presidency University
25
Classical Waterfall model Phases
• Feasibility Study:
• The main goal of this phase is to determine whether it would
be financially and technically feasible to develop the
software.
• The feasibility study involves understanding the problem and
then determining the various possible strategies to solve the
problem.
• These different identified solutions are analyzed based on
their benefits and drawbacks, The best solution is chosen and
all the other phases are carried out as per this solution
strategy.
Classical Waterfall model Phases
• Requirements analysis and specification: The aim of the
requirement analysis and specification phase is to understand
the exact requirements of the customer and document them
properly. This phase consists of two different activities.
• Requirement gathering and analysis: All the requirements
regarding the software are gathered from the customer and
then the gathered requirements are analyzed.
• Requirement specification: These analyzed requirements are
documented in a software requirement specification (SRS)
document. SRS document serves as a contract between the
development team and customers.
Classical Waterfall model Phases
• Design: The goal of this phase is to convert the requirements
acquired in the SRS into a format that can be coded in a
programming language.
• It includes high-level and detailed design as well as the
overall software architecture. A Software Design Document
is used to document all of this effort (SDD)
• Coding and Unit testing: In the coding phase software design
is translated into source code using any suitable
programming language.
• Thus each designed module is coded. The aim of the unit
testing phase is to check whether each module is working
properly or not.
Classical Waterfall model Phases
• Integration and System testing: Integration of different
modules are undertaken soon after they have been coded and
unit tested.
• System testing consists of three different kinds of testing
activities as described below :
• Alpha testing: Alpha testing is the system testing performed
by the development team.
• Beta testing: Beta testing is the system testing performed by a
friendly set of customers.
• Acceptance testing: After the software has been delivered,
the customer performed acceptance testing to determine
whether to accept the delivered software or reject it.
Classical Waterfall model Phases
• Maintenance: Maintenance is the most important phase of a
software life cycle. The effort spent on maintenance is 60% of the
total effort spent to develop a full software.
There are basically three types of maintenance :
• Corrective Maintenance: This type of maintenance is carried out to
correct errors that were not discovered during the product
development phase.
• Perfective Maintenance: This type of maintenance is carried out to
enhance the functionalities of the system based on the customer’s
request.
• Adaptive Maintenance: Adaptive maintenance is usually required
for porting the software to work in a new environment such as
working on a new computer platform or with a new operating
system.
Advantages of Classical Waterfall Model
• This model is very simple and is easy to understand.
• Phases in this model are processed one at a time.
• Each stage in the model is clearly defined.
• This model has very clear and well-understood milestones.
• Process, actions and results are very well documented.
• Reinforces good habits: define-before- design, design-before-
code.
• This model works well for smaller projects and projects
where requirements are well understood
Drawbacks of Classical Waterfall Model
•No feedback path
•Difficult to accommodate change requests
•No overlapping of phases
Iterative Waterfall Model
• the classical waterfall model is hard to use.
• The Iterative waterfall model can be thought of as
incorporating the necessary changes to the classical waterfall
model to make it usable in practical software development
projects.
• It is almost the same as the classical waterfall model except
some changes are made to increase the efficiency of the
software development.
• The iterative waterfall model provides feedback paths from
every phase to its preceding phases, which is the main
difference from the classical waterfall model.
Iterative Waterfall Model
Advantages of Iterative Waterfall
Model :
•Feedback Path
•Simple
•Cost-Effective
•Well-organized
Drawbacks of Iterative Waterfall Model :
•Difficult to incorporate change requests
•Incremental delivery not supported
•Overlapping of phases not supported
•Risk handling not supported
•Limited customer interactions
Evolutionary Models
Dept. of CSE, SOE, Presidency University
37
• Software system evolves over time as requirements often
change as development proceeds.
• Usually a set of core product or system requirements is well
understood, but the details and extension have yet to be defined.
• You need a process model that has been explicitly designed to
accommodate a product that evolved over time.
• It is iterative that enables you to develop increasingly more
complete version of the software.
• Types: Prototyping and Spiral models.
Evolutionary Models - Prototyping
Dept. of CSE, SOE, Presidency University
38
• When to use: Customer defines a set of general objectives but
does not identify detailed requirements for functions and features.
Or Developer may be unsure of the efficiency of an algorithm, the
form that human computer interaction should take.
• Advantages: Both stakeholders and software engineers like the
prototyping paradigm. Users get a feel for the actual system, and
developers get to build something immediately. However,
engineers may make compromises in order to get a prototype
working quickly. The less-than-ideal choice may be adopted
forever after you get used to it.
Evolutionary Models - Prototyping
Dept. of CSE, SOE, Presidency University
39
communication
Quick
plan
Modeling
Quick design
Construction
of prototype
Deployment
delivery &
feedback
Evolutionary Models - Spiral
Dept. of CSE, SOE, Presidency University
40
• It couples the iterative nature of prototyping with the controlled
and systematic aspects of the waterfall model and is a risk-driven
process model generator that is used to guide multi-stakeholder
concurrent engineering of software intensive systems.
• Two main distinguishing features: one is cyclic approach for
incrementally growing a system’s degree of definition and
implementation while decreasing its degree of risk. The other is a
set of anchor point milestones for ensuring stakeholder
commitment to feasible and mutually satisfactory system
solutions.
Evolutionary Models - Spiral
Dept. of CSE, SOE, Presidency University
41
Three Concerns of Evolutionary Models
Dept. of CSE, SOE, Presidency University
42
 First concern is that prototyping poses a problem to project
planning because of the uncertain number of cycles required to
construct the product.
 Second, it does not establish the maximum speed of the evolution.
If the evolution occur too fast, without a period of relaxation, it is
certain that the process will fall into chaos. On the other hand if the
speed is too slow then productivity could be affected.
 Third, software processes should be focused on flexibility and
extensibility rather than on high quality. We should prioritize the
speed of the development over zero defects. Extending the
development in order to reach high quality could result in a late
delivery of the product when the opportunity niche has disappeared.
Module 1 Completed

More Related Content

PPTX
CSE_2014 SE MODULE 1 V.10.pptx
AbdulMateen516672
 
PPT
Introduction of Software Engineering
MuhammadTalha436
 
PPTX
Unit 1 OOSE
saranive23
 
PDF
Various Process of Software Engineering notes
Dr Anuranjan Misra
 
PDF
SE notes by k. adisesha
Prof. Dr. K. Adisesha
 
PPTX
Software engineering ppt it will be useful for the people
AnushaAnusha291014
 
PDF
Introduction to Software Engineering & Project Management.pdf
yogeshgehlot987
 
PDF
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
Jayanthi Kannan MK
 
CSE_2014 SE MODULE 1 V.10.pptx
AbdulMateen516672
 
Introduction of Software Engineering
MuhammadTalha436
 
Unit 1 OOSE
saranive23
 
Various Process of Software Engineering notes
Dr Anuranjan Misra
 
SE notes by k. adisesha
Prof. Dr. K. Adisesha
 
Software engineering ppt it will be useful for the people
AnushaAnusha291014
 
Introduction to Software Engineering & Project Management.pdf
yogeshgehlot987
 
MODULE 1 Software Product and Process_ SW ENGG 22CSE141.pdf
Jayanthi Kannan MK
 

Similar to CSE_2014 SE MODULE 1 V.10 (2).pptx (20)

PPT
lecture_01_software_engineering introduction .ppt
Logandata
 
PPTX
3.pptx
ssusere16bd9
 
PPTX
SOFTWARE ENGINEERING-UNIT-1SOFTWARE ENGINEERING
PrabhuB33
 
PPTX
unit 1 introudction of the file and sepm
rajaramvijayakumarma
 
PPTX
Software process is tge helpful for software engineer
rajajacobc
 
PDF
Introduction to software engineering
Hitesh Mohapatra
 
PPTX
Introduction Software engineering
Jennifer O. Contreras Coloma
 
PPTX
Lecture 1 SE.pptx
MaryamMahjabeenYouni
 
PDF
The Nature of Software and Software Engineering ppt.pdf
MutwakilElsadig
 
PPTX
Module 1(Introduction to Software Engineering).pptx
317shreyac
 
PPTX
A Software Engineer
Abbasgulu Allahverdili
 
PPTX
unit 1.pptx regasts sthatbabs shshsbsvsbsh
sagarjsicg
 
PDF
Chapter 1 Introduction to Software Engineering and Process Models.pdf
MeghaGupta952452
 
PPT
04 Software Engin Practice with best example
AssadLeo1
 
PPT
Software engineering
Hitesh Mohapatra
 
PPTX
Introduction to Software Development Life Cycle.pptx
Godwin Monserate
 
PPTX
reaserch ppt.pptx
BinyamBekele3
 
PPTX
Soft.Engg. UNIT 1.pptx
Kalpna Saharan
 
PPT
chapter 1.ppt
MaddalaSeshu
 
PPTX
Software engineering Computer science and engineering unit 1
gauravghatol05
 
lecture_01_software_engineering introduction .ppt
Logandata
 
3.pptx
ssusere16bd9
 
SOFTWARE ENGINEERING-UNIT-1SOFTWARE ENGINEERING
PrabhuB33
 
unit 1 introudction of the file and sepm
rajaramvijayakumarma
 
Software process is tge helpful for software engineer
rajajacobc
 
Introduction to software engineering
Hitesh Mohapatra
 
Introduction Software engineering
Jennifer O. Contreras Coloma
 
Lecture 1 SE.pptx
MaryamMahjabeenYouni
 
The Nature of Software and Software Engineering ppt.pdf
MutwakilElsadig
 
Module 1(Introduction to Software Engineering).pptx
317shreyac
 
A Software Engineer
Abbasgulu Allahverdili
 
unit 1.pptx regasts sthatbabs shshsbsvsbsh
sagarjsicg
 
Chapter 1 Introduction to Software Engineering and Process Models.pdf
MeghaGupta952452
 
04 Software Engin Practice with best example
AssadLeo1
 
Software engineering
Hitesh Mohapatra
 
Introduction to Software Development Life Cycle.pptx
Godwin Monserate
 
reaserch ppt.pptx
BinyamBekele3
 
Soft.Engg. UNIT 1.pptx
Kalpna Saharan
 
chapter 1.ppt
MaddalaSeshu
 
Software engineering Computer science and engineering unit 1
gauravghatol05
 
Ad

Recently uploaded (20)

PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
Software Development Methodologies in 2025
KodekX
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Software Development Methodologies in 2025
KodekX
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
Doc9.....................................
SofiaCollazos
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Ad

CSE_2014 SE MODULE 1 V.10 (2).pptx

  • 1. SOFTWARE ENGINEERING (CSE 2014) Department of Computer Science and Engineering School of Engineering, PRESIDENCY UNIVERSITY
  • 2. TEXT BOOK AND REFERENCE BOOKS Dept. of CSE, SOE, Presidency University 2  REFERENCE MATERIALS:  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.
  • 3. CHAPTER 1 - CONTENTS 1.Need for Software Engineering 2.Professional Software Development 3.Software Engineering Ethics 4.Software Engineering Practice-Essence of Practice, 5.General Principles Software Development Life Cycle 6.Waterfall Model – Classical Waterfall Model 7.Waterfall Model – Iterative Waterfall Model 8.Evolutionary model-Spiral 9.Evolutionary model-Prototype
  • 4. What is Software & What is Engineering? •The term is made of two words, software and engineering. •Software is the programs and routines for a computer or the program material for an electronic device which make it run. •Example: Excel or Windows or iTunes. •Engineering on the other hand, is all about developing products, using well-defined, scientific principles and methods.
  • 5. What is Software Engineering? •Software engineering is defined as a process of analyzing user requirements and then designing, building, and testing software application which will satisfy those requirements. •As per IEEE, in its standard 610.12-1990, defines software engineering as the application of a systematic, disciplined, which is a computable approach for the development, operation, and maintenance of software.
  • 6. 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: Large software - It is easier to build a wall than to a house or building, likewise, as the size of software become large engineering has to step to give it a scientific process. 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.
  • 7. Contd.. Cost- 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. Dynamic Nature- 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. Quality Management- Better process of software development provides better and quality software product.
  • 8. Professional Software Development •Professional Software Development is about the emerging profession of software engineering – and professional software practices that support economical creation of high-quality software. •What does a professional software engineer do? •Software engineers develop, design, and test software applications. They apply engineering principles to the process of building software. •Programming languages like C++, Java, and Python, they design software for computer applications, mobile apps, cloud platforms, and web applications.
  • 9. 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.
  • 10. 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.
  • 11. 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.
  • 12. What is the essence of software engineering practice? •Essence intuitively describes all common aspects of a software development endeavour and helps teams understand where they are, what's missing or what needs to be addressed - regardless of each team's prescribed way of working. •The essence of software engineering practice might be described as: understand the problem, plan a solution, carry out the plan, and examine the result for accuracy.
  • 13. Software Practice •Practice is a broad array of concepts, principles, methods, and tools that you must consider as software is planned and developed. •It represents the details—the technical considerations —that are below the surface of the software process—the things that you’ll need to actually build high-quality computer software.
  • 14. The Essence of Software Practice George Polya, in a book written in 1945 (!), describes the essence of software engineering practice and suggests: 1.Understand the problem (communication and analysis). 2.Plan a solution (modeling and software design). 3.Carry out the plan (code generation). 4.Examine the result for accuracy (testing and quality assurance). Dept. of CSE, SOE, Presidency University 14
  • 15. 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 15
  • 16. 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 16
  • 17. 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 17
  • 18. 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 18
  • 19. Core Principles of Software Development Life Cycle • The Reason It All Exists: Provide value to the customer and the user. If you can’t provide value, then don’t do it. • KISS:Keep It Simple, Stupid! All design should be as simple as possible, but no simpler. This facilitates having a more easily understood and easily maintained system. • Maintain the product and project “vision”: A clear vision is essential to the success of a S/W project. • What you produce, others will consume: Always specify, design, and implement knowing someone else have to understand what you are doing.
  • 20. Contd.. • Be open to the Future: Never design yourself into a corner. Always ask “what if,” and prepare yourself for all possible answers by creating systems that solve the general problem, not just the specific one. • Plan Ahead for Reuse: Planning ahead for reuse reduces the cost and increases the value of both the reusable components and the systems into which they are incorporated. • Think! : Placing clear, complete thought before action almost always produces better results.
  • 21. Software Process Model •A software process model is an abstraction of the actual process, which is being described. •It can also be defined as a simplified representation of a software process. •Each model represents a process from a specific perspective
  • 22. Waterfall Model •The waterfall model is a classical model used in system development life cycle to create a system with a linear and sequential approach. •It is termed as waterfall because the model develops systematically from one phase to another in a downward fashion.
  • 23. Classical Waterfall Model • The classical waterfall model is the basic software development life cycle model. • It is very simple but idealistic. • Earlier this model was very popular but nowadays it is not used. But it is very important because all the other software development life cycle models are based on the classical waterfall model. • The classical waterfall model divides the life cycle into a set of phases. This model considers that one phase can be started after the completion of the previous phase.
  • 24. Classical Waterfall Model • That is the output of one phase will be the input to the next phase. • Thus the development process can be considered as a sequential flow in the waterfall. Here the phases do not overlap with each other. • The different sequential phases of the classical waterfall model are shown in the below figure:
  • 25. Classical Waterfall Model Dept. of CSE, SOE, Presidency University 25
  • 26. Classical Waterfall model Phases • Feasibility Study: • The main goal of this phase is to determine whether it would be financially and technically feasible to develop the software. • The feasibility study involves understanding the problem and then determining the various possible strategies to solve the problem. • These different identified solutions are analyzed based on their benefits and drawbacks, The best solution is chosen and all the other phases are carried out as per this solution strategy.
  • 27. Classical Waterfall model Phases • Requirements analysis and specification: The aim of the requirement analysis and specification phase is to understand the exact requirements of the customer and document them properly. This phase consists of two different activities. • Requirement gathering and analysis: All the requirements regarding the software are gathered from the customer and then the gathered requirements are analyzed. • Requirement specification: These analyzed requirements are documented in a software requirement specification (SRS) document. SRS document serves as a contract between the development team and customers.
  • 28. Classical Waterfall model Phases • Design: The goal of this phase is to convert the requirements acquired in the SRS into a format that can be coded in a programming language. • It includes high-level and detailed design as well as the overall software architecture. A Software Design Document is used to document all of this effort (SDD) • Coding and Unit testing: In the coding phase software design is translated into source code using any suitable programming language. • Thus each designed module is coded. The aim of the unit testing phase is to check whether each module is working properly or not.
  • 29. Classical Waterfall model Phases • Integration and System testing: Integration of different modules are undertaken soon after they have been coded and unit tested. • System testing consists of three different kinds of testing activities as described below : • Alpha testing: Alpha testing is the system testing performed by the development team. • Beta testing: Beta testing is the system testing performed by a friendly set of customers. • Acceptance testing: After the software has been delivered, the customer performed acceptance testing to determine whether to accept the delivered software or reject it.
  • 30. Classical Waterfall model Phases • Maintenance: Maintenance is the most important phase of a software life cycle. The effort spent on maintenance is 60% of the total effort spent to develop a full software. There are basically three types of maintenance : • Corrective Maintenance: This type of maintenance is carried out to correct errors that were not discovered during the product development phase. • Perfective Maintenance: This type of maintenance is carried out to enhance the functionalities of the system based on the customer’s request. • Adaptive Maintenance: Adaptive maintenance is usually required for porting the software to work in a new environment such as working on a new computer platform or with a new operating system.
  • 31. Advantages of Classical Waterfall Model • This model is very simple and is easy to understand. • Phases in this model are processed one at a time. • Each stage in the model is clearly defined. • This model has very clear and well-understood milestones. • Process, actions and results are very well documented. • Reinforces good habits: define-before- design, design-before- code. • This model works well for smaller projects and projects where requirements are well understood
  • 32. Drawbacks of Classical Waterfall Model •No feedback path •Difficult to accommodate change requests •No overlapping of phases
  • 33. Iterative Waterfall Model • the classical waterfall model is hard to use. • The Iterative waterfall model can be thought of as incorporating the necessary changes to the classical waterfall model to make it usable in practical software development projects. • It is almost the same as the classical waterfall model except some changes are made to increase the efficiency of the software development. • The iterative waterfall model provides feedback paths from every phase to its preceding phases, which is the main difference from the classical waterfall model.
  • 35. Advantages of Iterative Waterfall Model : •Feedback Path •Simple •Cost-Effective •Well-organized
  • 36. Drawbacks of Iterative Waterfall Model : •Difficult to incorporate change requests •Incremental delivery not supported •Overlapping of phases not supported •Risk handling not supported •Limited customer interactions
  • 37. Evolutionary Models Dept. of CSE, SOE, Presidency University 37 • Software system evolves over time as requirements often change as development proceeds. • Usually a set of core product or system requirements is well understood, but the details and extension have yet to be defined. • You need a process model that has been explicitly designed to accommodate a product that evolved over time. • It is iterative that enables you to develop increasingly more complete version of the software. • Types: Prototyping and Spiral models.
  • 38. Evolutionary Models - Prototyping Dept. of CSE, SOE, Presidency University 38 • When to use: Customer defines a set of general objectives but does not identify detailed requirements for functions and features. Or Developer may be unsure of the efficiency of an algorithm, the form that human computer interaction should take. • Advantages: Both stakeholders and software engineers like the prototyping paradigm. Users get a feel for the actual system, and developers get to build something immediately. However, engineers may make compromises in order to get a prototype working quickly. The less-than-ideal choice may be adopted forever after you get used to it.
  • 39. Evolutionary Models - Prototyping Dept. of CSE, SOE, Presidency University 39 communication Quick plan Modeling Quick design Construction of prototype Deployment delivery & feedback
  • 40. Evolutionary Models - Spiral Dept. of CSE, SOE, Presidency University 40 • It couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall model and is a risk-driven process model generator that is used to guide multi-stakeholder concurrent engineering of software intensive systems. • Two main distinguishing features: one is cyclic approach for incrementally growing a system’s degree of definition and implementation while decreasing its degree of risk. The other is a set of anchor point milestones for ensuring stakeholder commitment to feasible and mutually satisfactory system solutions.
  • 41. Evolutionary Models - Spiral Dept. of CSE, SOE, Presidency University 41
  • 42. Three Concerns of Evolutionary Models Dept. of CSE, SOE, Presidency University 42  First concern is that prototyping poses a problem to project planning because of the uncertain number of cycles required to construct the product.  Second, it does not establish the maximum speed of the evolution. If the evolution occur too fast, without a period of relaxation, it is certain that the process will fall into chaos. On the other hand if the speed is too slow then productivity could be affected.  Third, software processes should be focused on flexibility and extensibility rather than on high quality. We should prioritize the speed of the development over zero defects. Extending the development in order to reach high quality could result in a late delivery of the product when the opportunity niche has disappeared.