Software development methodology refers to a set method for solving information problems using a programming language. This study covers specific methods that scope the stages of analyzing, designing, developing, testing, documenting, implementing, and evaluating inside the intricate sphere of software engineering.
Several methodologies began to rise in the late 90′s and thus stimulated public attention particularly to software developers. Various combinations were formulated from old ideas, new ideas, and transmuted old ideas on every each methodology. Prior to that, they all emphasized close collaboration between the programmer team and business experts; face-to-face communication (as more efficient than written documentation); frequent delivery of new deployable business value; tight, self-organizing teams; and ways to craft the code and the team such that the inevitable requirements mix-ups were not being led into crisis. In elaborative relation from those details mentioned, Agile Software Development uncovers better ways of developing software by doing it and helping others do it. Such principles or values are being extracted out from it as follows:
o Individuals and interactions over processes and agile tools
o Working software over comprehensive documentation
o Customer collaboration over contract negotiation
o Customer collaboration over contract negotiation
The term Agile software development was coined in the year 2001, subsequently to the formulation of the Agile Manifesto. This is a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing and cross-functional teams. The said Agile development generally promotes disciplined project management process that upholds such as:
o Frequent inspection and adaptation
o Leadership philosophy that encourages teamwork
o Self-organization and accountability
o Set of engineering best practices; of which allows rapid delivery of high-quality software
o Aligns development with customer needs and company goals as a business approach
As lots of studies and research are being carried out just for the betterment of the world of technology and information, agile development methods have grown technically by numbers of them. Henceforth, they promote mostly with development iterations, teamwork, collaboration, and process adaptability throughout the life-cycle of the project.
The said methods are very efficient and organized wherein they break tasks into small increments with minimal planning, and do not directly involve long-term planning. Iterations are short time frames, such as the “timeboxes”, that typically last from one to four weeks. Each iteration involves a team working through a full software development cycle including planning, requirements analysis, design, coding, unit testing, and acceptance testing when a working product is demonstrated to stakeholders. Thus, it utterly helps minimize overall risk, and lets the project adapt to changes quickly. Stakeholders produce documentation as required. Its goal is to have an available release after on every each iterations since multiples of them (products or new features) are expected to be released afterwards, regarding to the fact that a single iteration may not add enough functionality to warrant a guaranteed market release.
In relation about the collaboration between cross-functional and self-organizing team mentioned a while ago; a team composition in an agile project are usually of those that were mentioned, without consideration for any existing corporate hierarchy or the corporate roles of team members. Team members normally take responsibility for tasks that deliver the functionality an iteration requires. They decide individually how to meet an iteration’s requirements.
The methods thereof emphasize face-to-face communication over written documents when the team is all in the same location. When a team works in different locations, they maintain daily contact through videoconferencing, voice, e-mail, etc.
Agile development teams mostly work in a single open office (called bullpen), which facilitates such communication. Each team is composed of members that typically ranges with 5-9 people to enable team communication and collaboration conveniently pliable. So it is then expected that larger development efforts may be delivered by multiple teams working toward a common goal or different parts of an effort. Coordination of priorities across teams is hence may be required for it.
Agile tools are being created in order to help development teams on their infinite search of the right and sufficient essential tools for software development. The agile tools are as follows:
1. JIRA Studio as a hosted development suite
-brings together Atlassian’s products to give you agile project management, issue tracking, wiki collaboration, source code analysis and reviews, plus subversion to improve release planning, team communication and customer feedback gathering.
Useful for: Developer, team lead and product manager
Designed for: Planning, Lightning feedback and gathering customer feedback
2. JIRA + GreenHopper for agile project management
-Coupled with the Greenhopper plugin, JIRA is the foundation of a powerful agile platform for developers to plan releases, gather feedback, track issues and manage project status.
Useful for: Developer, Team Lead and Product Manager
Designed for: agile planning, gathering customer feedback and monitoring team performance
3. Confluence for agile collaboration
-designed to help agile developers plan requirements, collaborate on changes and display metrics.
Useful for: Developers (internal blogging with peers), technical writers (develop docs) and product managers (collaborate on requirements and Balsamiq mockups)
Designed for: planning (PRDs and JIRA issues macro), lightning feedback (documenting changes, RSS + Dashboards) and team performance metrics (JIRA Issues macro + Bamboo builds plugin)
4. FishEye for code analysis
-With FishEye’s insight into a source code repository agile developers can find code fast, get notified about relevant code changes and receive useful metrics on team performance.
Useful for: Developers (find code fast), Team Leads (metrics on the team and each developer) and Technical Leads (RSS for a branch)
Designed for: lightning feedback and team performance metrics
5. Bamboo for continuous integration
-Agile developers use continuous integration to get the most from their unit tests. Set up Bamboo to get instantaneous feedback on the impact of each commit and monitor build metrics.
Useful for: Developers (learn about their commits), Team Leads (get build stats fast) and Testers (perform integration and performance tests early in the game)
Designed for: Testing early and often (CI Whitepaper), lightning feedback (two- way IM) and team performance metrics
6. Clover for code coverage
-The ultimate Java code coverage tool for agile development, Clover accurately assesses the impact on your tests and notifies you of test coverage gaps before it is too late.
Useful for: Developers and testers
Designed for: Testing early and often and lightning feedback
7. Crucible for code reviews
-integrates peer code review directly into your work habits. Agile developers use Crucible get timely feedback on their code and maintain metrics and an audit trail.
Useful for: Developer (Distributed review), Team lead (get developers to learn from each other) and Technical lead (Get metrics on audit trail on who did what and why)
Designed for: Testing Early and often (pre-commit reviews), lightning Feedback (review notifications), Performance Metrics (reports and audit trail)
8. Pyxis – creators of GreenHopper
-Given by the certified trainers and by practitioners with industry expertise, Pyxis’ training program provides effective techniques through practical exercises and group discussions to increase your knowledge of Agility and help your software development team build the right software.
Useful for: Developers, Team Leaders, Scrum Masters, Product Managers, and Product Owners
Designed for: Mastering agile software engineering practices and developing innovative project management practices
The Agile tools given are some of the few tools that are being offered from Agile Software Development developers provided by the internet. Some tools vary accordingly from depending on its uses which are said to be well-tested.