SlideShare a Scribd company logo
7
Most read
15
Most read
18
Most read
Presented by: 
Akbar Ali
Software Engineering 
Software Engineering Practice 
Essence of Practice 
Core Principles of Software Engineering 
Types of Practice 
• Communication Practice 
• Planning Practice
 Software engineering (SE) is concerned with 
developing and maintaining software systems that 
behave reliably and efficiently, are affordable to develop 
and maintain, and satisfy all the requirements that 
customers have defined for them.
• Analysis: decompose a large problem into smaller, 
understandable pieces 
 abstraction is the key 
• Synthesis: build (compose) software from smaller 
building blocks 
 composition is challenging
 The analysis process
 The synthesis process
 Consists of a collection of concepts, principles, methods, 
and tools that a software engineer calls upon on a daily 
basis 
 Equips managers to manage software projects and software 
engineers to build computer programs 
 Provides necessary technical and management how to 
getting the job done.
1) Understand the problem (communication and analysis) 
• Who has a stake in the solution to the problem? 
• What are the unknowns? and what (data, function, behavior) 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 analysis model 
be created? 
2) Plan a solution (planning, modeling and software design) 
• Have you seen similar problems like this before? 
• Has a similar problem been solved? If so, are the elements of the 
solution reusable? 
• Can sub problems be defined and are solutions available for the 
sub problems?
3) Carry out the plan (construction; code generation) 
• Does the solution conform to the plan? Is the source code 
traceable back to the design? 
• Is each component of the solution correct? Has the design and 
code been reviewed, or better? 
4) Examine the results for accuracy (testing and quality assurance) 
• Is it possible to test each component of the solution? Has a 
reasonable testing strategy been implemented? 
• Does the solution produce results that conform to the data, 
function, and behavior that are required? 
• Has the Software been validated against all stakeholders 
requirement?
1) Remember the reason that the software exists 
• The software should provide value to its users and satisfy the 
requirements 
2) Keep it simple 
• All design and implementation should be as simple as possible 
3) Maintain the vision of the project 
• A clear vision is essential to the project’s success 
4) Others will consume what you produce 
• Always specify, design, and implement knowing that someone else 
will later have to understand and modify what you did
5) Be open to the future 
• Never design yourself into a corner; build software that can be easily 
changed and adapted. 
6) Plan ahead for software reuse 
• Reuse of software reduces the long-term cost and increases the value of the 
program and the reusable components. 
7) Think, then act 
• Placing clear, complete thought before action will almost always produce 
better results
Communication Practice 
Planning Practice 
Modeling Practice 
Construction Practice 
Testing Practice 
Deployment Practice
Communication 
Project initiation 
Requirements gathering 
Planning Estimating 
Scheduling Tracking 
Modelling 
Analysis Design 
Construction 
Code Test 
Deployment 
Delivery 
Support 
Feedback
1) Listen to the speaker and concentrate on what is being said 
2) Prepare before you meet by researching and 
understanding the problem 
3) Someone should facility the meeting and have an agenda 
4) Face-to-face communication is best, but also have a 
document or presentation to focus the discussion 
5) Take notes and document decisions 
6) Strive for collaboration and consensus 
7) Stay focused on a topic; modularize your discussion 
8) If something is unclear, draw a picture 
9) Move on to the next topic a) after you agree to something, 
b) if you cannot agree to something, or c) if a feature or 
function is unclear and cannot be clarified at the moment 
10) Negotiation is not a contest or a game; it works best when 
both parties win 
14
1) Understand the scope of the project 
2) Involve the customer in the planning activity 
3) Recognize that planning is iterative; things will 
change 
4) Estimate based only on what you know 
5) Consider risk as you define the plan 
6) Be realistic on how much can be done each day 
by each person and how well 
7) Adjust granularity as you define the plan 
8) Define how you intend to ensure quality 
9) Describe how you intend to accommodate 
change 
10)Track the plan frequently and make adjustments 
as required 
15
1) The information domain of a problem (the data that 
flows in and out of a system) must be represented and 
understood 
2) The functions that the software performs must be 
defined 
3) The behavior of the software (as a consequence of 
external events) must be represented 
4) The models that depict information, function, and 
behavior must be partitioned in a manner that uncovers 
detail in a layered (or hierarchical) fashion 
5) The analysis task should move from essential 
information toward implementation detail
1) The design should be traceable to the analysis model 
2) Always consider the software architecture of the system to be 
built 
3) Design of data is as important as design of processing 
functions 
4) Interfaces (both internal and external) must be designed with 
care 
5) User interface design should be tuned to the needs of the 
end-user and should stress ease of use 
6) Component-level design should be functionally independent 
(high cohesion) 
7) Components should be loosely coupled to one another and to 
the external environment 
8) Design representations (models) should be easily 
understandable 
9) The design should be developed iteratively; with each 
iteration, the designer should strive for greater simplicity
1) Understand the problem you are trying to solve 
2) Understand basic design principles and concepts 
3) Pick a programming language that meets the needs of 
the software to be built and the environment in which it 
will operate 
4) Select a programming environment that provides tools 
that will make your work easier 
5) Create a set of unit tests that will be applied once the 
component you code is completed
1) Constrain your algorithms by following structured 
programming practices 
2) Select data structures that will meet the needs of the 
design 
3) Understand the software architecture and create 
interfaces that are consistent with it 
4) Keep conditional logic as simple as possible 
5) Create nested loops in a way that makes them easily 
testable 
6) Select meaningful variable names and follow other 
local coding standards 
7) Write code that is self-documenting 
8) Create a visual layout (e.g., indentation and blank lines) 
that aids code understanding
1) Conduct a code walkthrough 
2) Perform unit tests (black-box and white-box) and 
correct errors you have uncovered 
3) Refactor the code
1) All tests should be traceable to the software 
requirements 
2) Tests should be planned long before testing begins 
3) The Pareto principle applies to software testing 
• 80% of the uncovered errors are in 20% of the code 
4) Testing should begin “in the small” and progress toward 
testing “in the large” 
• Unit testing --> integration testing --> validation 
testing --> system testing 
5) Exhaustive testing is not possible
1) Customer expectations for the software must be 
managed 
• Be careful not to promise too much or to mislead the 
user 
2) A complete delivery package should be assembled and 
tested 
3) A support regime must be established before the 
software is delivered 
4) Appropriate instructional materials must be provided to 
end users 
5) Buggy software should be fixed first, delivered later

More Related Content

What's hot (20)

PPTX
software project management Artifact set(spm)
REHMAT ULLAH
 
PPTX
Software Process Models
Hassan A-j
 
PPT
REQUIREMENT ENGINEERING
Saqib Raza
 
PPT
Risk management(software engineering)
Priya Tomar
 
PPTX
Data Designs (Software Engg.)
Arun Shukla
 
PPTX
Software development life cycle (SDLC)
Simran Kaur
 
PPT
Agile Development | Agile Process Models
Ahsan Rahim
 
PDF
Symbol table in compiler Design
Kuppusamy P
 
PPT
CHAPTER 6 REQUIREMENTS MODELING: SCENARIO based Model , Class based moddel
mohamed khalaf alla mohamedain
 
PPTX
Software design
Syed Muhammad Hammad-ud-Din
 
PPT
UML
iQra Rafaqat
 
PPTX
Introduction to Software Engineering
Saqib Raza
 
PDF
Code optimization in compiler design
Kuppusamy P
 
PPT
Debugging
Indu Sharma Bhardwaj
 
ODP
Evolutionary process models se.ppt
bhadjaashvini1
 
PDF
Agile model
DivyaStephen3
 
PPTX
Software quality
Sara Mehmood
 
PPT
Uml in software engineering
Mubashir Jutt
 
PPTX
Design Concepts in Software Engineering-1.pptx
KarthigaiSelviS3
 
PPT
Chapter 13 software testing strategies
SHREEHARI WADAWADAGI
 
software project management Artifact set(spm)
REHMAT ULLAH
 
Software Process Models
Hassan A-j
 
REQUIREMENT ENGINEERING
Saqib Raza
 
Risk management(software engineering)
Priya Tomar
 
Data Designs (Software Engg.)
Arun Shukla
 
Software development life cycle (SDLC)
Simran Kaur
 
Agile Development | Agile Process Models
Ahsan Rahim
 
Symbol table in compiler Design
Kuppusamy P
 
CHAPTER 6 REQUIREMENTS MODELING: SCENARIO based Model , Class based moddel
mohamed khalaf alla mohamedain
 
Introduction to Software Engineering
Saqib Raza
 
Code optimization in compiler design
Kuppusamy P
 
Evolutionary process models se.ppt
bhadjaashvini1
 
Agile model
DivyaStephen3
 
Software quality
Sara Mehmood
 
Uml in software engineering
Mubashir Jutt
 
Design Concepts in Software Engineering-1.pptx
KarthigaiSelviS3
 
Chapter 13 software testing strategies
SHREEHARI WADAWADAGI
 

Similar to Software Engineering Practice (20)

PPTX
Week 1Lecture2222222222222222222222.pptx
hamzaprince9t9
 
PPT
Software engineering -core topics
Amnah_Ch
 
PDF
Introduction to software engineering
Hitesh Mohapatra
 
PPT
Software engineering
Hitesh Mohapatra
 
PPT
Unit 2 SEPM_ Requirement Engineering
KanchanPatil34
 
DOCX
Function Oriented and Object Oriented Design,Modularization techniques
nimmik4u
 
PPTX
3.pptx
ssusere16bd9
 
PPTX
Lecture 1 SE.pptx
MaryamMahjabeenYouni
 
DOC
Chapter1
mansab MIRZA
 
PPT
Introduction of Software Engineering
MuhammadTalha436
 
PPT
Ch 9-design-engineering
SHREEHARI WADAWADAGI
 
PPTX
Software Engineering Methodologies
Nesrine Shokry
 
PPT
unit - 2 - software engineer practices.ppt
Chaitanyabenade
 
PPTX
Design engineering
Preeti Mishra
 
PPTX
Basics of software engineering
Madhav Suratkar
 
PDF
The Nature of Software and Software Engineering ppt.pdf
MutwakilElsadig
 
PPTX
Introduction To Software Concepts Unit 1 & 2
Raj vardhan
 
PPT
Design final
Indu Sharma Bhardwaj
 
PPTX
unit 1.pptx regasts sthatbabs shshsbsvsbsh
sagarjsicg
 
PPT
Pressman_ch_9_design_engineering.ppt
MotherTheresa2
 
Week 1Lecture2222222222222222222222.pptx
hamzaprince9t9
 
Software engineering -core topics
Amnah_Ch
 
Introduction to software engineering
Hitesh Mohapatra
 
Software engineering
Hitesh Mohapatra
 
Unit 2 SEPM_ Requirement Engineering
KanchanPatil34
 
Function Oriented and Object Oriented Design,Modularization techniques
nimmik4u
 
3.pptx
ssusere16bd9
 
Lecture 1 SE.pptx
MaryamMahjabeenYouni
 
Chapter1
mansab MIRZA
 
Introduction of Software Engineering
MuhammadTalha436
 
Ch 9-design-engineering
SHREEHARI WADAWADAGI
 
Software Engineering Methodologies
Nesrine Shokry
 
unit - 2 - software engineer practices.ppt
Chaitanyabenade
 
Design engineering
Preeti Mishra
 
Basics of software engineering
Madhav Suratkar
 
The Nature of Software and Software Engineering ppt.pdf
MutwakilElsadig
 
Introduction To Software Concepts Unit 1 & 2
Raj vardhan
 
Design final
Indu Sharma Bhardwaj
 
unit 1.pptx regasts sthatbabs shshsbsvsbsh
sagarjsicg
 
Pressman_ch_9_design_engineering.ppt
MotherTheresa2
 
Ad

Recently uploaded (20)

PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Python basic programing language for automation
DanialHabibi2
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Ad

Software Engineering Practice

  • 2. Software Engineering Software Engineering Practice Essence of Practice Core Principles of Software Engineering Types of Practice • Communication Practice • Planning Practice
  • 3.  Software engineering (SE) is concerned with developing and maintaining software systems that behave reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that customers have defined for them.
  • 4. • Analysis: decompose a large problem into smaller, understandable pieces  abstraction is the key • Synthesis: build (compose) software from smaller building blocks  composition is challenging
  • 7.  Consists of a collection of concepts, principles, methods, and tools that a software engineer calls upon on a daily basis  Equips managers to manage software projects and software engineers to build computer programs  Provides necessary technical and management how to getting the job done.
  • 8. 1) Understand the problem (communication and analysis) • Who has a stake in the solution to the problem? • What are the unknowns? and what (data, function, behavior) 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 analysis model be created? 2) Plan a solution (planning, modeling and software design) • Have you seen similar problems like this before? • Has a similar problem been solved? If so, are the elements of the solution reusable? • Can sub problems be defined and are solutions available for the sub problems?
  • 9. 3) Carry out the plan (construction; code generation) • Does the solution conform to the plan? Is the source code traceable back to the design? • Is each component of the solution correct? Has the design and code been reviewed, or better? 4) Examine the results for accuracy (testing and quality assurance) • Is it possible to test each component of the solution? Has a reasonable testing strategy been implemented? • Does the solution produce results that conform to the data, function, and behavior that are required? • Has the Software been validated against all stakeholders requirement?
  • 10. 1) Remember the reason that the software exists • The software should provide value to its users and satisfy the requirements 2) Keep it simple • All design and implementation should be as simple as possible 3) Maintain the vision of the project • A clear vision is essential to the project’s success 4) Others will consume what you produce • Always specify, design, and implement knowing that someone else will later have to understand and modify what you did
  • 11. 5) Be open to the future • Never design yourself into a corner; build software that can be easily changed and adapted. 6) Plan ahead for software reuse • Reuse of software reduces the long-term cost and increases the value of the program and the reusable components. 7) Think, then act • Placing clear, complete thought before action will almost always produce better results
  • 12. Communication Practice Planning Practice Modeling Practice Construction Practice Testing Practice Deployment Practice
  • 13. Communication Project initiation Requirements gathering Planning Estimating Scheduling Tracking Modelling Analysis Design Construction Code Test Deployment Delivery Support Feedback
  • 14. 1) Listen to the speaker and concentrate on what is being said 2) Prepare before you meet by researching and understanding the problem 3) Someone should facility the meeting and have an agenda 4) Face-to-face communication is best, but also have a document or presentation to focus the discussion 5) Take notes and document decisions 6) Strive for collaboration and consensus 7) Stay focused on a topic; modularize your discussion 8) If something is unclear, draw a picture 9) Move on to the next topic a) after you agree to something, b) if you cannot agree to something, or c) if a feature or function is unclear and cannot be clarified at the moment 10) Negotiation is not a contest or a game; it works best when both parties win 14
  • 15. 1) Understand the scope of the project 2) Involve the customer in the planning activity 3) Recognize that planning is iterative; things will change 4) Estimate based only on what you know 5) Consider risk as you define the plan 6) Be realistic on how much can be done each day by each person and how well 7) Adjust granularity as you define the plan 8) Define how you intend to ensure quality 9) Describe how you intend to accommodate change 10)Track the plan frequently and make adjustments as required 15
  • 16. 1) The information domain of a problem (the data that flows in and out of a system) must be represented and understood 2) The functions that the software performs must be defined 3) The behavior of the software (as a consequence of external events) must be represented 4) The models that depict information, function, and behavior must be partitioned in a manner that uncovers detail in a layered (or hierarchical) fashion 5) The analysis task should move from essential information toward implementation detail
  • 17. 1) The design should be traceable to the analysis model 2) Always consider the software architecture of the system to be built 3) Design of data is as important as design of processing functions 4) Interfaces (both internal and external) must be designed with care 5) User interface design should be tuned to the needs of the end-user and should stress ease of use 6) Component-level design should be functionally independent (high cohesion) 7) Components should be loosely coupled to one another and to the external environment 8) Design representations (models) should be easily understandable 9) The design should be developed iteratively; with each iteration, the designer should strive for greater simplicity
  • 18. 1) Understand the problem you are trying to solve 2) Understand basic design principles and concepts 3) Pick a programming language that meets the needs of the software to be built and the environment in which it will operate 4) Select a programming environment that provides tools that will make your work easier 5) Create a set of unit tests that will be applied once the component you code is completed
  • 19. 1) Constrain your algorithms by following structured programming practices 2) Select data structures that will meet the needs of the design 3) Understand the software architecture and create interfaces that are consistent with it 4) Keep conditional logic as simple as possible 5) Create nested loops in a way that makes them easily testable 6) Select meaningful variable names and follow other local coding standards 7) Write code that is self-documenting 8) Create a visual layout (e.g., indentation and blank lines) that aids code understanding
  • 20. 1) Conduct a code walkthrough 2) Perform unit tests (black-box and white-box) and correct errors you have uncovered 3) Refactor the code
  • 21. 1) All tests should be traceable to the software requirements 2) Tests should be planned long before testing begins 3) The Pareto principle applies to software testing • 80% of the uncovered errors are in 20% of the code 4) Testing should begin “in the small” and progress toward testing “in the large” • Unit testing --> integration testing --> validation testing --> system testing 5) Exhaustive testing is not possible
  • 22. 1) Customer expectations for the software must be managed • Be careful not to promise too much or to mislead the user 2) A complete delivery package should be assembled and tested 3) A support regime must be established before the software is delivered 4) Appropriate instructional materials must be provided to end users 5) Buggy software should be fixed first, delivered later