SlideShare a Scribd company logo
1 of 49
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.
Software is
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
19
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
20
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
21
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
22
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
23
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
30
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
Incremental process model
Evolutionary Models
Dept. of CSE, SOE, Presidency University
43
• 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
44
• 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
45
communication
Quick
plan
Modeling
Quick design
Construction
of prototype
Deployment
delivery &
feedback
Evolutionary Models - Spiral
Dept. of CSE, SOE, Presidency University
46
• 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
47
Three Concerns of Evolutionary Models
Dept. of CSE, SOE, Presidency University
48
 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

Similar to CSE_2014 SE MODULE 1 V.10.pptx

unit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshunit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshsagarjsicg
 
Soft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxSoft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxKalpna Saharan
 
Introduction to Software Development Life Cycle.pptx
Introduction to Software Development Life Cycle.pptxIntroduction to Software Development Life Cycle.pptx
Introduction to Software Development Life Cycle.pptxGodwin Monserate
 
Rekayasa-Perangkat-Lunak-Pertemuan-1.ppt
Rekayasa-Perangkat-Lunak-Pertemuan-1.pptRekayasa-Perangkat-Lunak-Pertemuan-1.ppt
Rekayasa-Perangkat-Lunak-Pertemuan-1.pptAuliyaRahman9
 
01 fse software&sw-engineering
01 fse software&sw-engineering01 fse software&sw-engineering
01 fse software&sw-engineeringMohesh Chandran
 
An introduction to software engineering
An introduction to software engineeringAn introduction to software engineering
An introduction to software engineeringSHREEHARI WADAWADAGI
 
Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2Raj vardhan
 
UNIT V - 1 SPM.pptx
UNIT V - 1 SPM.pptxUNIT V - 1 SPM.pptx
UNIT V - 1 SPM.pptxDevnath13
 
Lecture 3 software_engineering
Lecture 3 software_engineeringLecture 3 software_engineering
Lecture 3 software_engineeringmoduledesign
 
Module1 - Introduction to Software Engineering.pdf
Module1 - Introduction to Software Engineering.pdfModule1 - Introduction to Software Engineering.pdf
Module1 - Introduction to Software Engineering.pdfGerard Alba
 
Software Engineering - Introdution.ppt
Software Engineering - Introdution.pptSoftware Engineering - Introdution.ppt
Software Engineering - Introdution.pptSasiR18
 
Software Engineering Basics.pdf
Software Engineering Basics.pdfSoftware Engineering Basics.pdf
Software Engineering Basics.pdfPriyajit Sen
 

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

Introduction Software engineering
Introduction   Software engineeringIntroduction   Software engineering
Introduction Software engineering
 
unit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshunit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbsh
 
A Software Engineer
A Software EngineerA Software Engineer
A Software Engineer
 
Soft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxSoft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptx
 
Introduction to Software Development Life Cycle.pptx
Introduction to Software Development Life Cycle.pptxIntroduction to Software Development Life Cycle.pptx
Introduction to Software Development Life Cycle.pptx
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
reaserch ppt.pptx
reaserch ppt.pptxreaserch ppt.pptx
reaserch ppt.pptx
 
Rekayasa-Perangkat-Lunak-Pertemuan-1.ppt
Rekayasa-Perangkat-Lunak-Pertemuan-1.pptRekayasa-Perangkat-Lunak-Pertemuan-1.ppt
Rekayasa-Perangkat-Lunak-Pertemuan-1.ppt
 
chapter 1.ppt
chapter 1.pptchapter 1.ppt
chapter 1.ppt
 
01 fse software&sw-engineering
01 fse software&sw-engineering01 fse software&sw-engineering
01 fse software&sw-engineering
 
An introduction to software engineering
An introduction to software engineeringAn introduction to software engineering
An introduction to software engineering
 
lect1.pdf
lect1.pdflect1.pdf
lect1.pdf
 
Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2Introduction To Software Concepts Unit 1 & 2
Introduction To Software Concepts Unit 1 & 2
 
UNIT V - 1 SPM.pptx
UNIT V - 1 SPM.pptxUNIT V - 1 SPM.pptx
UNIT V - 1 SPM.pptx
 
se
sese
se
 
Lecture 3 software_engineering
Lecture 3 software_engineeringLecture 3 software_engineering
Lecture 3 software_engineering
 
Module1 - Introduction to Software Engineering.pdf
Module1 - Introduction to Software Engineering.pdfModule1 - Introduction to Software Engineering.pdf
Module1 - Introduction to Software Engineering.pdf
 
Software Engineering - Introdution.ppt
Software Engineering - Introdution.pptSoftware Engineering - Introdution.ppt
Software Engineering - Introdution.ppt
 
Software Engineering Basics.pdf
Software Engineering Basics.pdfSoftware Engineering Basics.pdf
Software Engineering Basics.pdf
 
Software Engineering and Introduction, Activities and ProcessModels
Software Engineering and Introduction, Activities and ProcessModels Software Engineering and Introduction, Activities and ProcessModels
Software Engineering and Introduction, Activities and ProcessModels
 

Recently uploaded

Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Recently uploaded (20)

Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

CSE_2014 SE MODULE 1 V.10.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.
  • 6. 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.
  • 7.
  • 8. 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.
  • 9. 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.
  • 11.
  • 12. 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.
  • 13. 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.
  • 14. 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.
  • 15. 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.
  • 16. 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.
  • 17. 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.
  • 18.
  • 19. 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 19
  • 20. 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 20
  • 21. 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 21
  • 22. 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 22
  • 23. 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 23
  • 24. 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.
  • 25. 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.
  • 26. 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
  • 27. 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.
  • 28. 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.
  • 29. 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:
  • 30. Classical Waterfall Model Dept. of CSE, SOE, Presidency University 30
  • 31. 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.
  • 32. 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.
  • 33. 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.
  • 34. 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.
  • 35. 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.
  • 36. 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
  • 37. Drawbacks of Classical Waterfall Model •No feedback path •Difficult to accommodate change requests •No overlapping of phases
  • 38. 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.
  • 40. Advantages of Iterative Waterfall Model : •Feedback Path •Simple •Cost-Effective •Well-organized
  • 41. 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
  • 43. Evolutionary Models Dept. of CSE, SOE, Presidency University 43 • 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.
  • 44. Evolutionary Models - Prototyping Dept. of CSE, SOE, Presidency University 44 • 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.
  • 45. Evolutionary Models - Prototyping Dept. of CSE, SOE, Presidency University 45 communication Quick plan Modeling Quick design Construction of prototype Deployment delivery & feedback
  • 46. Evolutionary Models - Spiral Dept. of CSE, SOE, Presidency University 46 • 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.
  • 47. Evolutionary Models - Spiral Dept. of CSE, SOE, Presidency University 47
  • 48. Three Concerns of Evolutionary Models Dept. of CSE, SOE, Presidency University 48  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.