Based on our client preference G&G application software development team is following Agile software development methodology in a large number of software projects. Agile methodology is an approach to project anagement that is typically used in software development. Through work cadences, known as sprints, teams respond to the unpredictability in developing software at the end of which teams must present a shippable increment of work. It attempts to provide many opportunities to assess the direction of the project throughout the development lifecycle. Agile methodology (and associated agile project management and processes) is both iterative and incremental by focusing on the repetitions of abbreviated work cycles as well as the products they yield. In an agile paradigm and agile approach, every aspect of development, from requirements to design, is continually revisited throughout the life cycle, in contrast to other methods where developers have only one chance to get each aspect of the project right.
This approach to software development and programming greatly reduces both development costs and time to market. Well-known agile development and agile methodologies include:
Agile Unified Process (AUP)
Dynamic Systems Development Method (DSDM)
Essential Unified Process (EssUP)
Extreme Programming (XP)
Feature Driven Development (FDD)
Open Unified Process (OpenUP)
The term modeling in software development and programming refers to the use of diagrams to describe a process, solution or problem. These diagrams can be supported by documentation. It is not an explicit list of steps or procedures but a practice based methodology founded on values, principles with a goal to support and enable software development by the effective use of modeling tools and techniques. Fundamental practices and rocesses include modeling in small increments, creating several models in parallel, applying the right artifacts for the situation and iterating to another artifact to continue the development at a steady pace. Every model should be provided with codes to prove that they are accurate representation of the actual software. Active stakeholder participation is an important part as the project stakeholders know what they want and can provide
with the necessary feedback.
The AUP is a simplified version of the Rational Unified Process (RUP). It describes a simple, easy to understand approach to developing software using techniques from agile but at the same time remaining true to the RUP. The agile techniques that AUP applies include Test Driven Development (TDD), Agile Model Driven Development (AMDD), Agile Change Management, Agile Project Management and Database Refactoring to improve productivity.
DSDM is an approach to system development which develops the system dynamically. This methodology is independent of tools which mean it can be used with both structured analysis and design approach or object-oriented approach. DSDM is a Rapid Application Development method which uses incremental prototyping. This method is ideal for cases when the requirement cannot be frozen at the start of the application building and in DSDM the requirement evolves with time. Whatever requirements are known at a time, design for them is prepared and design is developed and incorporated into system. In DSDM analysis design and development phases can overlap so this method is particularly useful for the systems to be developed in short time span.
The Essential Unified Process (EssUP) is a collection of practices that together form the essential knowledge of a complete software development lifecycle. The practices in EssUP incorporates successful principles from the unified process, agile and process maturity camps thus integrating different capabilities like structure, agility and process improvement. The practices at the heart of EssUP have been developed with a new and innovative approach which is based on aspect-oriented thinking. EssUP helps to identify and address specific concerns in order of priority which makes it easier to work. Thus in EssUP the approach is practice-centric instead of
FDD is a client-centric, architecture-centric and pragmatic software process. A feature is a small, client-valued function which is the primary source of requirements and the primary input into the planning efforts. There are five main activities in FDD that are performed iteratively.
1. Develop an overall model
2. Build a featured list
3. Plan by feature
4. Design by feature
5. Build by feature
An FDD project starts by performing the first three steps where the goal is to identify the scope of the effort, the initial architecture, and the initial high level plan. As with other agile software development processes, systems are developed incrementally by FDD teams.
OpenUP (Open Unified Process) is an open-source software development process framework that covers a broad set of development needs. OpenUP takes an agile approach to software development, providing only the most fundamental content needed to describe a simple set of work products, roles, tasks, and guidance. OpenUP is characterized by four mutually supporting core principles: Collaborate to align interests and share understanding
Balance competing priorities to maximize stakeholder value Focus on articulating the architecture Evolve continuously to obtain feedback and improve