Uploaded on Jul 1, 2019
Agile development should be strategically implemented across the company/development of the project. It is the process of improving and simplifying the design of existing code without changing its behavior.
Agile Development Construction
Module 7:
Agile Construction
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncoolmab/c.cuosmtom-software-development
Agile Construction
• Agile development should be strategically implemented across the company/development of
the project
• Agile methodology construction blocks involves,
• Environment
• On site customer
• Self Organization
• Collective Code Ownership
• Shared Understanding
• Simple Design
• Refactoring
• Continuous Integration
• Pair Programming
• Testing & QA.
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncoolmab/c.cuosmtom-software-development
Simple Design
• Simple design = free of code smells
• Code smell is any symptom in code indicating potential deeper problem &
makes the system more difficult to maintain
e.g. Code duplication, Over engineering, Large classes, Dead code, Uncommunicated
names.
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncoolmab/c.cuosmtom-software-development
Refactoring
• Process of improving and simplifying the design of existing code without changing its
behavior
• Allows automated test to be written
• Makes the application more maintainable
• Legacy applications often needs to be re-factor in order to strip away dependencies so
that automated tests can be performed.
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncoolmab/c.cuosmtom-software-development
Continuous Integration
• Basic CI Workflow
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncoolmab/c.cuosmtom-software-development
Pair Programming
• Two heads are better than one – Pair programming
• Two developers share the duty of completing one user story task
• Driver & Navigator model
• Driver – Typing the code
• Navigator – Reviewing the code, Thinking about next step.
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncoolmab/c.cuosmtom-software-development
Quality Assurance
• Quality assurance is essential when creating software
• Having great practices for gathering requirements, working closely with client and
understanding all user story without getting the right product is of no use!
• Agile promotes TDD and UAT.
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncoolmab/c.cuosmtom-software-development
Quality Assurance
• “Test-driven development (TDD) is a software development process that relies on
the repetition of a very short development cycle”
• It’s a practice that adds reliability to custom software development process.
• TDD is a technique where you write your test cases before you write any
implementation code.
• TDD is a technique for improving the software’s internal quality.
• TDD provides ,
• Good design
• A balanced division of functionalities
• Smooth evolution
• Maintainability
• Tests provide a specification of “what” a piece of code actually does
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncoolmab/c.cuosmtom-software-development
Quality Assurance (Cont.)
• A test is not something you “do”, it is something you “write” and run once, twice,
three times, etc.
• It is a piece of code
• Testing is therefore “automated”
• Repeatedly executed, even after small changes
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncoolmab/c.cuosmtom-software-development
TDD – Life Cycle
Requirements
Requirements
Design
Design
Testing
Implementation
Testing Implementation
Deployment & Deployment &
Maintenance Maintenance
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncolmab/c.cuosmtom-software-development
Conclusion
• Implement agile methodology across the company with Agile Construction Blocks
• No code will go in production without associated test cases
• Refactoring helps to improve maintainability
• CI helps for successful increments
• TDD helps to improve quality
https://whttwpw:/.i/fwouwrwte.cifhounrotleacbh.ncoolmab/c.cuosmtom-software-development
Comments