Agile Development Practices
Agile approach relies heavily on simple statements of functionality required called user stories. These user stories are intentionally not detailed. They are actually intended to be a 'placeholder for conversation'
Why does a Project manager need to know development practices?
A project manager plays a coordination role . He or she is responsible for obtaining commitments from the functional managers who provide the resources to support the project.
In an Agile environment, strong, cross-functional leadership is important.
-> Developers are expected to a lot more than just 'write the code'. They are expected to take some very basic level of project management functions for planning, managing, tracking and reporting of their own tasks. They are also expected to play an key role in overall team responsibilities.
-> They have to interact directly with other development team members to develop a well-integrated approach.
-> Take a much more significant level of responsibility for the quality of the software they produce and work directly with testers as needed to ensure that the product is free of defects.
Agile Architectural design principles:
-> Use emergent design as much as possible - architecture is a collaboration
-> The bigger the system, the longer the runway
-> Build the simplest architecture that can possibly work
-> When in doubt, code or model it out.
Code Refactoring:
It is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behaviour.
Code refactoring involves:
-> Removing redundancy
-> Eliminating unused functionality
-> Rejuvenating obsolete designs and
-> Improving the design of existing software
Symptoms for the need of code refactoring:
1. Bloated code
2. Abuse of design practices
3. change preventers
Continuous integration:
It provides a way of early detection of problems that occur when individual developers are working on the code changes that may potentially conflict with each other.
Benefits of CI:
-> Developers detect and fix integration problems continuously.
-> Early warning of broken/incompatible code and of conflicting changes
-> constant avilability of a 'current' build for testing,demo or release purposes.
-> immediate feedback to developers on the quality,functionality or system wide impact of code they are creating
-> Frequent code check-in pushes developers to create modular, less complex code
Recommended CI best practices:
1. Maintain a single source code repository
2. Automate the build and make your build self-testing
3. Every build should build on an integration machine and keep the build fast and test in a clone of a production environment.
Test-Drive Development (TDD):
It is a fairly-used development practice. It is typically used in conjunction with unit testing by developers.
Development is done incrementally in small steps. one test and a small bit of corresponding functional piece of code at a time.
TDD is the style of programming with 3 main activities:
-> Coding
-> Testing ( In the form of writing unit tests)
-> Design ( In the form of refactoring)
These three activities form up to the test driven development.
Benefits of TDD:
-> Encourages the development of small, incremental modules of code that can be easily tested and integrated with continuous integration process.
Agile prototyping :
It is an iterative process.
-> The first step is to develop a high level understanding of user needs with as much detail as possible.
-> Next is to build a prototype and put it infront of the user to demonstrate a possible solution.
-> Final step is to evaluate the prototype based on user feedback and inputs.
Role of QA testing in an Agile project:
QA test is an important skill and it is many-times worthwhile to have QA testers on the team dedicated to planning and executing QA tests.
Types of testing:
1. White box testing: A software testing method in which internal structure/design/implementation of the item being tested is known to the tester.
2. Black box testing: A software testing method in which internal structure/design/implementation of the item being tested is not known to the tester.
Acceptance test-driven development (ATDD)
It is based on higher-level features and behaviour of the system that are observable by the user.
Why does a Project manager need to know development practices?
A project manager plays a coordination role . He or she is responsible for obtaining commitments from the functional managers who provide the resources to support the project.
In an Agile environment, strong, cross-functional leadership is important.
-> Developers are expected to a lot more than just 'write the code'. They are expected to take some very basic level of project management functions for planning, managing, tracking and reporting of their own tasks. They are also expected to play an key role in overall team responsibilities.
-> They have to interact directly with other development team members to develop a well-integrated approach.
-> Take a much more significant level of responsibility for the quality of the software they produce and work directly with testers as needed to ensure that the product is free of defects.
Agile Architectural design principles:
-> Use emergent design as much as possible - architecture is a collaboration
-> The bigger the system, the longer the runway
-> Build the simplest architecture that can possibly work
-> When in doubt, code or model it out.
Code Refactoring:
It is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behaviour.
Code refactoring involves:
-> Removing redundancy
-> Eliminating unused functionality
-> Rejuvenating obsolete designs and
-> Improving the design of existing software
Symptoms for the need of code refactoring:
1. Bloated code
2. Abuse of design practices
3. change preventers
Continuous integration:
It provides a way of early detection of problems that occur when individual developers are working on the code changes that may potentially conflict with each other.
Benefits of CI:
-> Developers detect and fix integration problems continuously.
-> Early warning of broken/incompatible code and of conflicting changes
-> constant avilability of a 'current' build for testing,demo or release purposes.
-> immediate feedback to developers on the quality,functionality or system wide impact of code they are creating
-> Frequent code check-in pushes developers to create modular, less complex code
Recommended CI best practices:
1. Maintain a single source code repository
2. Automate the build and make your build self-testing
3. Every build should build on an integration machine and keep the build fast and test in a clone of a production environment.
Test-Drive Development (TDD):
It is a fairly-used development practice. It is typically used in conjunction with unit testing by developers.
Development is done incrementally in small steps. one test and a small bit of corresponding functional piece of code at a time.
TDD is the style of programming with 3 main activities:
-> Coding
-> Testing ( In the form of writing unit tests)
-> Design ( In the form of refactoring)
These three activities form up to the test driven development.
Benefits of TDD:
-> Encourages the development of small, incremental modules of code that can be easily tested and integrated with continuous integration process.
Agile prototyping :
It is an iterative process.
-> The first step is to develop a high level understanding of user needs with as much detail as possible.
-> Next is to build a prototype and put it infront of the user to demonstrate a possible solution.
-> Final step is to evaluate the prototype based on user feedback and inputs.
Role of QA testing in an Agile project:
QA test is an important skill and it is many-times worthwhile to have QA testers on the team dedicated to planning and executing QA tests.
Types of testing:
1. White box testing: A software testing method in which internal structure/design/implementation of the item being tested is known to the tester.
2. Black box testing: A software testing method in which internal structure/design/implementation of the item being tested is not known to the tester.
Acceptance test-driven development (ATDD)
It is based on higher-level features and behaviour of the system that are observable by the user.

Comments
Post a Comment