Agile methodology is being adopted as an alternative to traditional way project management, document driven, heavy weight software development process to help business respond to unpredictability and to guide an iterative and people-centric approach to software development process.
The intension of ASD methodology is to reduce overheads in the software development process and it is to build small parts of the project progress as well as to be able to respond quickly changing requirements without excessive rework. ASD methodology anticipates the need for flexibility and applies a level of desirability into the finished product. Especially this process helps you to keep code simple, testing often and delivering functional bits of the application as soon as they are ready. There are 15 such methodologies and 6 Processes. Shocked? There are quite a lot. The manifesto of all agile processes is: 1. Individuals and interactions over processes and tools 2. Working software over comprehensive documentation 3. Customer collaboration over contract negotiation 4. Responding to change over following a plan The popular processes are: Scrum: Let’s quickly check it out where it came from Scrum is Rugby (sports) term. The literal meaning of it is:
- partially work done
- excess documentation
- extra features
- unnecessary code & functionality
- waiting for the information
- task switching & process
- defects
- unnecessary management activities
- slow communication
(II)Amplifying Learning: This is the best way for improving software development environment.
- Run tests as soon as the code is written to stop growing defects
- Try different ideas by writing and building code instead of documentation.
- Present screen to the end-user & get their input to simplify requirement gathering process
- take top 3 tools and evaluate them
- increase feedback from client for future improvement
- Implement set-based-development process, this focuses on communicating the constraint of future solution.
(III) Deciding as Late as Possible: Better results should be achieved with an option based approach
- Delay decision until they can be made based on facts and not predictions but provide the needed flexibility for late decision making
- delay your commitments until customer realized their needs better
- maintain flexibility until uncertainty is removed, because you cannot predict the future
(IV) Delivering as Fast as Possible:
- Faster the end product is delivered without defects, the faster feedback can be received and incorporated into the next iteration
- Follow pull system which allow people to figure out for themselves what needs to be done and work becomes self directing
- JIT approach allow for decision about work to be made real-time not in advance
- Queuing theory to reduce cycle time.
- Releasing small package of work, allow you to spread it evenly through the team
(V) Empowering the Team:
- Empower the people who do the work to make decisions
- let the team design their own working procedure, commitments and avoid micro managing
- Create a sense of purpose at work. People care about a purpose greater the themselves
- Give developer access to the customers
(VI) Building Integrity In: Basically two types of integrity Perceived and conceptual.
- Perceived is affected by the customers whole experience of a system
- Conceptual system’s separate components work well together as a whole with balance between flexibility, maintainability, efficiency, and responsiveness.
- Refactoring is one healthy way toward integral architecture. It maintains simplicity, clarity, suitability for use, and no repetition of code & extra features.
(VII) Seeing the Whole: Software system is not just a sum of its small parts, its a product of those interactions and when the systems start to break down, rigid more sequential rules are usually put in place and this process can cure one symptom, but not the root cause. It will become increasingly difficult to keep up with changing needs. Kanban: It emphasizes on continual delivery while not overburdening the development team. Like Scrum, Kanban is a process designed to help teams work together more effectively. Kanban is based on 3 basic principles: (I) Visualize what you do today (workflow): seeing all the items in context of each other can be very informative (II) Limit the amount of work in progress (WIP): this helps balance the flow-based approach so teams don ‘t start and commit to too much work at once (III) Enhance flow: when something is finished, the next highest thing from the backlog is pulled into play Extreme Programming (XP): The original XP recipe is based on four simple values – simplicity, communication, feedback, and courage – and twelve supporting practices: (I) Planning Game: Business and Devops Services Company to produce the maximum business value as rapidly as possible. The planning game happens at various scales, but the basic rules are always the same: o Business comes up with a list of desired features for the system. Each feature is written out as a user story, which gives the feature a name, and describes in broad strokes what is required. . o Development estimates how much effort each story will take, and how much effort the team can produce in a given time interval. o Business then decides which stories to implement in what order, as well as when and how often to produce a production release of the system. (II) Small Releases: The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release. (III) Customer Acceptance Tests: also known as functional Tests are specified by the customer to test that the overall system is functioning as specified. Acceptance tests typically test the entire system, or some large chunk of it. When all the acceptance tests pass for a given user story, that story is considered complete. At the very least, an acceptance test could consist of a script of user interface actions and expected results that a human can run. Ideally acceptance tests should be automated, either using the unit testing framework, or a separate acceptance testing framework. (IV)Simple Design: Enough design is carried out to meet the current requirements and no more. (V) Pair Programming: Developers work in pairs checking each other’s work and providing the support to always do a good job. (VI) Test-Driven Development: An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented. (VII) Refactoring: All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable. (VIII) Continuous Integration: As soon as the work on a task is complete, it is integrated into the whole system. After any such integration, all the unit tests in the system must pass. (IX) Collective Code Ownership: The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers take responsibility for all of the code. Anyone can change anything. (X) Coding Standards: Everyone codes to the same standards. Ideally, you shouldn’t be able to tell by looking at it who on the team has touched a specific piece of code. (XI) Metaphor: Each project has an organizing design which help new people being contributing quickly , and it makes naming classes and method consistent. (XII) Sustainable Pace: Projects do not follow the ‘Crunch Time’ in XP because development cycles are short cycles of continuous integration and are more frequent. In other side it gives best of the performance and more creativity from developers Crystal: Crystal includes teamwork, communication, and simplicity, as well as reflection to frequently adjust and improve the process. Crystal promotes early, frequent delivery of working software, high user involvement, adaptability, and the removal of bureaucracy or distractions. Dynamic System Development Method (DSDM): It’s primarily revolved around business needs/value, active user involvement, empowered teams, frequent delivery, integrated testing, and stakeholder collaboration. DSDM specifically calls out “fitness for business purpose”.
Tag
software development strategies kanban product development Extreme Programming (XP) software development Crystal offshore software development DSDM Dynamic system development method Feature-Driver Development agile software development methodology ASD ASD methology scrum product development culture Lean