SlideShare a Scribd company logo
Acropolis Institute of Technology &
Research, Indore
www.acropolis.in
CS703 Agile Software
Development
By: Prof.Pirmohammad
2
Pirmohammad@acropolis.in
Agile Software Development
Pirmohammad@acropolis.in 3
UNIT - V
Agile Software Development
Pirmohammad@acropolis.in 4
Agile Software Design and
Development
Agile Practices
Pirmohammad@acropolis.in 5
1. Release frequently
2. Design for ideas
3. Test
4. Code for future
5. Communicate agilely
Release Frequently
Pirmohammad@acropolis.in 6
Release monthly and you will...
1. Assure about integration and deployment issues early
2. Your project is always ready to submit
3. Use automated installer
Be Productive
1. Time boxed forces you to implement only the MOST important
2. Reachable goal boosts
Release Frequently
Pirmohammad@acropolis.in 7
Get Feedback
1. Evaluate trade-offs , actively
2. Design is gradually more accurate direction
Design for ideas
Pirmohammad@acropolis.in 8
1. Design idea will be evolving during development
2. (Especially when using unfamiliar technology)
3. If you design it too specifically(method details , data
types , parameters)
4. And even document it
5. You will surely REDO it again or else GET STUCK with your
bad design
Design for ideas
Pirmohammad@acropolis.in 9
Suggestion 1
✔ Design in paper or whiteboard
✔ Take a photo for sharing
Suggestion 2
CRC design method
o Class name
o Responsibility
❖ What is supposed to do?
o Collaborator
❖ What other objects it works with?
Design for ideas
Pirmohammad@acropolis.in 10
Suggestion 3
✔ Make it easy for test
Suggestion 4
✔ As simple as possible
Test
Pirmohammad@acropolis.in 11
1. Test it programmatically
2. Fewer bugs & faster debug-know problems early and specifically
3. Comfortable Refectory-No need to check if it still really work
4. Simple design
o Test before : design will be never over complicated
o Test After : method that hard to test is need to simplify
Test
Pirmohammad@acropolis.in 12
o Good documentation - Good test covers use cases
o Unit testing framework (NUnit for ..NET, Junit for java, HttpUnit
for testing web)
o Use Mock when method touches another class
Code for future
Pirmohammad@acropolis.in 13
1.Your code is used many many more times than it is written
2. Make code EASY to read , test and debug
Easy to Read
❖Reader get what code does without reading comment
❑Expressive naming
❖Comment why code does it
❖use enum
❖don't quick hack
❑insert +1 or -1 and it just works!
❖don't concern performance too much
❑<<1 instead of *2
Easy to Test
Pirmohammad@acropolis.in 14
▪ Quer - command separation
o make query code has no side effect
• -small class
• -one method one purpose
Easy to Debug
Pirmohammad@acropolis.in 15
▪ Always handle or throw all exception
o No empty catch block
▪ Provide useful error messages
o Categorize them
✔ Program defects
✔ Environment problems
✔ User Error
Communicate agilely
Pirmohammad@acropolis.in 16
1. Document that dictate all of what to do
2. Need more dynamic communication techniques
3. Complete but flexible
What is Refactoring?
Pirmohammad@acropolis.in 17
o It is a valuable weapon which benefit you to keep excellent hold
on your code & so the project (software/application).
o It is a scientific process of taking existing code and improves it
while it makes code more readable, understandable, and clean.
o It becomes very handy to add new features, build large
applications and spot & fix bugs.
o It is a law of nature for fully successful iterative projects. You
don’t decide to refactor, you refactor because you want to do
something else and refactoring helps you to do that. When you
refactor existing code of a project (software/app etc) by altering
its internal structure but you are not changing its external
behavior.
What is Refactoring?
Pirmohammad@acropolis.in 18
o Refactoring even take a bad design of a project and rework it into
a good one. You are not changing observable behavior of the
project you improves the internal structure by Refactoring.
o It is a activity which is a solution to your problems, its performed
when modifying the existing code of a project to incorporate new
features or to enhance.
Types of Refactoring
Pirmohammad@acropolis.in 19
Code Refactoring:
o Simply known as Refactoring, this is the refactoring of source code, it include (Rename
method, Encapsulated field, Extract class, Introduce assertion, and Pushdown method). It
changes structure of a program, but the functionality is the same.
Database Refactoring:
o A simple change to a database schema that improves its design while re-tuning both its
behavioral and into semantics such as (Rename column, Split table, Move method, Replace
LOB with table, Introduce column constraint)
User Interface Refactoring:
o A simple change to the UI retains its semantics such as (Align entry field, Apply common
button size, Apply font, Indicate format, Reword in active voice and Increase color contrast) It
delivers consistency for all users -both within your organization and your customers
organization.
Reasons why Refactoring is Important
Pirmohammad@acropolis.in 20
✔ To improve the design of software/application.
✔ To make software easier to understand.
✔ To find bugs
✔ To make program run faster.
✔ To fix existing legacy database
✔ To support revolutionary development
✔ To provide greater consistency for user.
Refactoring benefits your software to
Pirmohammad@acropolis.in 21
✔ Makes code more readable.
✔ Cleanup code and makes it tidier.
✔ Removes redundant, unused code and comments.
✔ Improves performance.
✔ Makes some things more generic.
✔ Keeps code DRY ( Don’t Repeat Yourself)
✔ Combines and dispose “Like” or “Similar” code.
✔ Splitting out long functions into more manageable bite.
✔ Create re-usable code.
✔ Better class and function cohesion.
Refactoring Techniques
Pirmohammad@acropolis.in 22
Composing Methods
Much of refactoring is devoted to correctly composing methods. In
most cases, excessively long methods are the root of all evil. The
vagaries of code inside these methods conceal the execution logic
and make the method extremely hard to understand—and even
harder to change.
The refactoring techniques in this group streamline methods, remove
code duplication, and pave the way for future improvements.
Refactoring Techniques
Pirmohammad@acropolis.in 23
Moving Features between Objects
Even if you have distributed functionality among different classes in a
less-than-perfect way, there is still hope.
These refactoring techniques show how to safely move functionality
between classes, create new classes, and hide implementation
details from public access.
Refactoring Techniques
Pirmohammad@acropolis.in 24
Organizing Data
These refactoring techniques help with data handling, replacing
primitives with rich class functionality. Another important result is
untangling of class associations, which makes classes more portable
and reusable.
Simplifying Conditional Expressions
Conditionals tend to get more and more complicated in their logic
over time, and there are yet more techniques to combat this as well.
Refactoring Techniques
Pirmohammad@acropolis.in 25
Simplifying Method Calls
These techniques make method calls simpler and easier to
understand. This, in turn, simplifies the interfaces for interaction
between classes.
Dealing with Generalization
Abstraction has its own group of refactoring techniques, primarily
associated with moving functionality along the class inheritance
hierarchy, creating new classes and interfaces, and replacing
inheritance with delegation and vice versa.
Continuous integration
Pirmohammad@acropolis.in 26
What is continuous integration?
Continuous integration is an agile and DevOps best practice of routinely
integrating code changes into the main branch of a repository, and testing
the changes, as early and often as possible. Ideally, developers will
integrate their code daily, if not multiple times a day.
Benefits of continuous integration
Investing in CI results in fast feedback on code changes. Fast as in "within
minutes" fast. A team that relies primarily on manual testing may get
feedback in a couple hours, but in reality, comprehensive test feedback
comes a day–or several days–after the code gets changed. And by that
time more changes have occurred, making bug-fixing an archeological
expedition with developers digging through several layers of code to get at
the root of the problem.
Continuous integration
Pirmohammad@acropolis.in 27
What is continuous integration?
Continuous integration is an agile and DevOps best practice of routinely
integrating code changes into the main branch of a repository, and testing
the changes, as early and often as possible. Ideally, developers will
integrate their code daily, if not multiple times a day.
Benefits of continuous integration
Investing in CI results in fast feedback on code changes. Fast as in "within
minutes" fast. A team that relies primarily on manual testing may get
feedback in a couple hours, but in reality, comprehensive test feedback
comes a day–or several days–after the code gets changed. And by that
time more changes have occurred, making bug-fixing an archeological
expedition with developers digging through several layers of code to get at
the root of the problem.
Continuous integration
Pirmohammad@acropolis.in 28
Protect quality with continuous builds and test automation
Continuous builds: Building the project as soon as a change is made.
Ideally, the delta between each build is a single change-set.
Test automation: Programmatic validation of the software to ensure
quality. Tests can initiate actions in the software from the UI (more
on that in a moment), or from within the backend services layer.
Testing in CI
Pirmohammad@acropolis.in 29
Unit Tests
Unit tests run very close to core components in the code. They are the first
line of defense in ensuring quality.
Benefits: Easy to write, run fast, closely model the architecture of the code
base.
Drawbacks: Unit tests only validate core components of software; they
don't reflect user workflows which often involve several components
working together.
Since a unit test explains how the code should work, developers can
review unit tests to get current on that area of the code.
Testing in CI
Pirmohammad@acropolis.in 30
API tests
Good software is modular, which allows for clearer separation of
work across several applications. APIs are the end points where
different modules communicate with one another, and API tests
validate them by making calls from one module to another.
Benefits: Generally easy to write, run fast, and can easily model how
applications will interact with one another.
Drawbacks: In simple areas of the code, API tests can mimic some
unit tests.
Testing in CI
Pirmohammad@acropolis.in 31
Functional tests
Functional tests work over larger areas of the code base and model
user workflows. In web applications, for example, HTTPUnit and
Selenium directly interact with the user interface to test the product.
Benefits: More likely to find bugs because they mimic user actions
and test the interoperability of multiple components.
Drawbacks: Slower than unit tests, and sometimes report false
negatives because of network latency or a momentary outage
somewhere in the technology stack.
Pirmohammad@acropolis.in 32
For other additional information on Agile software development
Refer to
https://www.agilealliance.org/
Ad

More Related Content

Similar to agile refactoring and integration techniques.pdf (20)

Extreme programming
Extreme programmingExtreme programming
Extreme programming
Mr SMAK
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
Saqib Raza
 
Adm Initial Proposal
Adm Initial ProposalAdm Initial Proposal
Adm Initial Proposal
cfry
 
Waterfallacies V1 1
Waterfallacies V1 1Waterfallacies V1 1
Waterfallacies V1 1
Jorge Boria
 
Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
Ryan Polk
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
International Islamic University Islamabad
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
FarjanaAhmed3
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
John Lewis
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
Heiswayi Nrird
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answers
HopeTutors1
 
Lect7
Lect7Lect7
Lect7
Sulman Ahmed
 
Lect7
Lect7Lect7
Lect7
Sulman Ahmed
 
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINALJun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Alex Tarra
 
Ch17
Ch17Ch17
Ch17
phanleson
 
ch2-Agile-Software-Development-engineerning.pdf
ch2-Agile-Software-Development-engineerning.pdfch2-Agile-Software-Development-engineerning.pdf
ch2-Agile-Software-Development-engineerning.pdf
yedej15330
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
Adam Stephensen
 
Pm soln9416141129710
Pm soln9416141129710Pm soln9416141129710
Pm soln9416141129710
Nikhil Todkar
 
presentation slides of Week 3 for 1st.pptx
presentation slides of Week 3 for 1st.pptxpresentation slides of Week 3 for 1st.pptx
presentation slides of Week 3 for 1st.pptx
RafiaKhalil3
 
Agiel sw development
Agiel sw developmentAgiel sw development
Agiel sw development
Noor Ul Hudda Memon
 
Large scale agile development practices
Large scale agile development practicesLarge scale agile development practices
Large scale agile development practices
Skills Matter
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
Mr SMAK
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
Saqib Raza
 
Adm Initial Proposal
Adm Initial ProposalAdm Initial Proposal
Adm Initial Proposal
cfry
 
Waterfallacies V1 1
Waterfallacies V1 1Waterfallacies V1 1
Waterfallacies V1 1
Jorge Boria
 
Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
Ryan Polk
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
FarjanaAhmed3
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
John Lewis
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
Heiswayi Nrird
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answers
HopeTutors1
 
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINALJun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Jun 08 - PMWT Featured Paper -Tarabykin - XP PAPER - FINAL
Alex Tarra
 
ch2-Agile-Software-Development-engineerning.pdf
ch2-Agile-Software-Development-engineerning.pdfch2-Agile-Software-Development-engineerning.pdf
ch2-Agile-Software-Development-engineerning.pdf
yedej15330
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
Adam Stephensen
 
Pm soln9416141129710
Pm soln9416141129710Pm soln9416141129710
Pm soln9416141129710
Nikhil Todkar
 
presentation slides of Week 3 for 1st.pptx
presentation slides of Week 3 for 1st.pptxpresentation slides of Week 3 for 1st.pptx
presentation slides of Week 3 for 1st.pptx
RafiaKhalil3
 
Large scale agile development practices
Large scale agile development practicesLarge scale agile development practices
Large scale agile development practices
Skills Matter
 

Recently uploaded (20)

Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Library Association of Ireland
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
Odoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo SlidesOdoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo Slides
Celine George
 
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptxSCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
Ronisha Das
 
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
Celine George
 
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam SuccessUltimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Mark Soia
 
New Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptxNew Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptx
milanasargsyan5
 
How to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odooHow to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odoo
Celine George
 
Operations Management (Dr. Abdulfatah Salem).pdf
Operations Management (Dr. Abdulfatah Salem).pdfOperations Management (Dr. Abdulfatah Salem).pdf
Operations Management (Dr. Abdulfatah Salem).pdf
Arab Academy for Science, Technology and Maritime Transport
 
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Celine George
 
GDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptxGDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptx
azeenhodekar
 
SPRING FESTIVITIES - UK AND USA -
SPRING FESTIVITIES - UK AND USA            -SPRING FESTIVITIES - UK AND USA            -
SPRING FESTIVITIES - UK AND USA -
Colégio Santa Teresinha
 
Metamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative JourneyMetamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative Journey
Arshad Shaikh
 
2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx
contactwilliamm2546
 
Social Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy StudentsSocial Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy Students
DrNidhiAgarwal
 
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 AccountingHow to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
Celine George
 
Biophysics Chapter 3 Methods of Studying Macromolecules.pdf
Biophysics Chapter 3 Methods of Studying Macromolecules.pdfBiophysics Chapter 3 Methods of Studying Macromolecules.pdf
Biophysics Chapter 3 Methods of Studying Macromolecules.pdf
PKLI-Institute of Nursing and Allied Health Sciences Lahore , Pakistan.
 
YSPH VMOC Special Report - Measles Outbreak Southwest US 5-3-2025.pptx
YSPH VMOC Special Report - Measles Outbreak  Southwest US 5-3-2025.pptxYSPH VMOC Special Report - Measles Outbreak  Southwest US 5-3-2025.pptx
YSPH VMOC Special Report - Measles Outbreak Southwest US 5-3-2025.pptx
Yale School of Public Health - The Virtual Medical Operations Center (VMOC)
 
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetCBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
Sritoma Majumder
 
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
larencebapu132
 
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Library Association of Ireland
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
Odoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo SlidesOdoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo Slides
Celine George
 
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptxSCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
Ronisha Das
 
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
Celine George
 
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam SuccessUltimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Mark Soia
 
New Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptxNew Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptx
milanasargsyan5
 
How to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odooHow to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odoo
Celine George
 
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Celine George
 
GDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptxGDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptx
azeenhodekar
 
Metamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative JourneyMetamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative Journey
Arshad Shaikh
 
2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx
contactwilliamm2546
 
Social Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy StudentsSocial Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy Students
DrNidhiAgarwal
 
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 AccountingHow to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
Celine George
 
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetCBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
Sritoma Majumder
 
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
larencebapu132
 
Ad

agile refactoring and integration techniques.pdf

  • 1. Acropolis Institute of Technology & Research, Indore www.acropolis.in
  • 4. Agile Software Development [email protected] 4 Agile Software Design and Development
  • 5. Agile Practices [email protected] 5 1. Release frequently 2. Design for ideas 3. Test 4. Code for future 5. Communicate agilely
  • 6. Release Frequently [email protected] 6 Release monthly and you will... 1. Assure about integration and deployment issues early 2. Your project is always ready to submit 3. Use automated installer Be Productive 1. Time boxed forces you to implement only the MOST important 2. Reachable goal boosts
  • 7. Release Frequently [email protected] 7 Get Feedback 1. Evaluate trade-offs , actively 2. Design is gradually more accurate direction
  • 8. Design for ideas [email protected] 8 1. Design idea will be evolving during development 2. (Especially when using unfamiliar technology) 3. If you design it too specifically(method details , data types , parameters) 4. And even document it 5. You will surely REDO it again or else GET STUCK with your bad design
  • 9. Design for ideas [email protected] 9 Suggestion 1 ✔ Design in paper or whiteboard ✔ Take a photo for sharing Suggestion 2 CRC design method o Class name o Responsibility ❖ What is supposed to do? o Collaborator ❖ What other objects it works with?
  • 10. Design for ideas [email protected] 10 Suggestion 3 ✔ Make it easy for test Suggestion 4 ✔ As simple as possible
  • 11. Test [email protected] 11 1. Test it programmatically 2. Fewer bugs & faster debug-know problems early and specifically 3. Comfortable Refectory-No need to check if it still really work 4. Simple design o Test before : design will be never over complicated o Test After : method that hard to test is need to simplify
  • 12. Test [email protected] 12 o Good documentation - Good test covers use cases o Unit testing framework (NUnit for ..NET, Junit for java, HttpUnit for testing web) o Use Mock when method touches another class
  • 13. Code for future [email protected] 13 1.Your code is used many many more times than it is written 2. Make code EASY to read , test and debug Easy to Read ❖Reader get what code does without reading comment ❑Expressive naming ❖Comment why code does it ❖use enum ❖don't quick hack ❑insert +1 or -1 and it just works! ❖don't concern performance too much ❑<<1 instead of *2
  • 14. Easy to Test [email protected] 14 ▪ Quer - command separation o make query code has no side effect • -small class • -one method one purpose
  • 15. Easy to Debug [email protected] 15 ▪ Always handle or throw all exception o No empty catch block ▪ Provide useful error messages o Categorize them ✔ Program defects ✔ Environment problems ✔ User Error
  • 16. Communicate agilely [email protected] 16 1. Document that dictate all of what to do 2. Need more dynamic communication techniques 3. Complete but flexible
  • 17. What is Refactoring? [email protected] 17 o It is a valuable weapon which benefit you to keep excellent hold on your code & so the project (software/application). o It is a scientific process of taking existing code and improves it while it makes code more readable, understandable, and clean. o It becomes very handy to add new features, build large applications and spot & fix bugs. o It is a law of nature for fully successful iterative projects. You don’t decide to refactor, you refactor because you want to do something else and refactoring helps you to do that. When you refactor existing code of a project (software/app etc) by altering its internal structure but you are not changing its external behavior.
  • 18. What is Refactoring? [email protected] 18 o Refactoring even take a bad design of a project and rework it into a good one. You are not changing observable behavior of the project you improves the internal structure by Refactoring. o It is a activity which is a solution to your problems, its performed when modifying the existing code of a project to incorporate new features or to enhance.
  • 19. Types of Refactoring [email protected] 19 Code Refactoring: o Simply known as Refactoring, this is the refactoring of source code, it include (Rename method, Encapsulated field, Extract class, Introduce assertion, and Pushdown method). It changes structure of a program, but the functionality is the same. Database Refactoring: o A simple change to a database schema that improves its design while re-tuning both its behavioral and into semantics such as (Rename column, Split table, Move method, Replace LOB with table, Introduce column constraint) User Interface Refactoring: o A simple change to the UI retains its semantics such as (Align entry field, Apply common button size, Apply font, Indicate format, Reword in active voice and Increase color contrast) It delivers consistency for all users -both within your organization and your customers organization.
  • 20. Reasons why Refactoring is Important [email protected] 20 ✔ To improve the design of software/application. ✔ To make software easier to understand. ✔ To find bugs ✔ To make program run faster. ✔ To fix existing legacy database ✔ To support revolutionary development ✔ To provide greater consistency for user.
  • 21. Refactoring benefits your software to [email protected] 21 ✔ Makes code more readable. ✔ Cleanup code and makes it tidier. ✔ Removes redundant, unused code and comments. ✔ Improves performance. ✔ Makes some things more generic. ✔ Keeps code DRY ( Don’t Repeat Yourself) ✔ Combines and dispose “Like” or “Similar” code. ✔ Splitting out long functions into more manageable bite. ✔ Create re-usable code. ✔ Better class and function cohesion.
  • 22. Refactoring Techniques [email protected] 22 Composing Methods Much of refactoring is devoted to correctly composing methods. In most cases, excessively long methods are the root of all evil. The vagaries of code inside these methods conceal the execution logic and make the method extremely hard to understand—and even harder to change. The refactoring techniques in this group streamline methods, remove code duplication, and pave the way for future improvements.
  • 23. Refactoring Techniques [email protected] 23 Moving Features between Objects Even if you have distributed functionality among different classes in a less-than-perfect way, there is still hope. These refactoring techniques show how to safely move functionality between classes, create new classes, and hide implementation details from public access.
  • 24. Refactoring Techniques [email protected] 24 Organizing Data These refactoring techniques help with data handling, replacing primitives with rich class functionality. Another important result is untangling of class associations, which makes classes more portable and reusable. Simplifying Conditional Expressions Conditionals tend to get more and more complicated in their logic over time, and there are yet more techniques to combat this as well.
  • 25. Refactoring Techniques [email protected] 25 Simplifying Method Calls These techniques make method calls simpler and easier to understand. This, in turn, simplifies the interfaces for interaction between classes. Dealing with Generalization Abstraction has its own group of refactoring techniques, primarily associated with moving functionality along the class inheritance hierarchy, creating new classes and interfaces, and replacing inheritance with delegation and vice versa.
  • 26. Continuous integration [email protected] 26 What is continuous integration? Continuous integration is an agile and DevOps best practice of routinely integrating code changes into the main branch of a repository, and testing the changes, as early and often as possible. Ideally, developers will integrate their code daily, if not multiple times a day. Benefits of continuous integration Investing in CI results in fast feedback on code changes. Fast as in "within minutes" fast. A team that relies primarily on manual testing may get feedback in a couple hours, but in reality, comprehensive test feedback comes a day–or several days–after the code gets changed. And by that time more changes have occurred, making bug-fixing an archeological expedition with developers digging through several layers of code to get at the root of the problem.
  • 27. Continuous integration [email protected] 27 What is continuous integration? Continuous integration is an agile and DevOps best practice of routinely integrating code changes into the main branch of a repository, and testing the changes, as early and often as possible. Ideally, developers will integrate their code daily, if not multiple times a day. Benefits of continuous integration Investing in CI results in fast feedback on code changes. Fast as in "within minutes" fast. A team that relies primarily on manual testing may get feedback in a couple hours, but in reality, comprehensive test feedback comes a day–or several days–after the code gets changed. And by that time more changes have occurred, making bug-fixing an archeological expedition with developers digging through several layers of code to get at the root of the problem.
  • 28. Continuous integration [email protected] 28 Protect quality with continuous builds and test automation Continuous builds: Building the project as soon as a change is made. Ideally, the delta between each build is a single change-set. Test automation: Programmatic validation of the software to ensure quality. Tests can initiate actions in the software from the UI (more on that in a moment), or from within the backend services layer.
  • 29. Testing in CI [email protected] 29 Unit Tests Unit tests run very close to core components in the code. They are the first line of defense in ensuring quality. Benefits: Easy to write, run fast, closely model the architecture of the code base. Drawbacks: Unit tests only validate core components of software; they don't reflect user workflows which often involve several components working together. Since a unit test explains how the code should work, developers can review unit tests to get current on that area of the code.
  • 30. Testing in CI [email protected] 30 API tests Good software is modular, which allows for clearer separation of work across several applications. APIs are the end points where different modules communicate with one another, and API tests validate them by making calls from one module to another. Benefits: Generally easy to write, run fast, and can easily model how applications will interact with one another. Drawbacks: In simple areas of the code, API tests can mimic some unit tests.
  • 31. Testing in CI [email protected] 31 Functional tests Functional tests work over larger areas of the code base and model user workflows. In web applications, for example, HTTPUnit and Selenium directly interact with the user interface to test the product. Benefits: More likely to find bugs because they mimic user actions and test the interoperability of multiple components. Drawbacks: Slower than unit tests, and sometimes report false negatives because of network latency or a momentary outage somewhere in the technology stack.
  • 32. [email protected] 32 For other additional information on Agile software development Refer to https://www.agilealliance.org/