Agile Development Models in Software Engineering


For some classes of software and certain kinds of software projects, agile software engineering is an acceptable compromise between traditional software engineering and agile software engineering. Agile procedures may provide high-quality systems in a short amount of time. It emphasizes the need for ongoing communication and cooperation between developers and consumers.

For effective execution of offshore software development projects with qualities such as shorter time to market and changing company demands, we use agile software development process models. Iterative software development with frequent client delivery is a basic strategy in agile software development that immediately solves one of the primary issues of offshore development: lack of insight into project progress.

Customer satisfaction, incremental software delivery, small project teams (made of software engineers and stakeholders), informal methodologies, and minimum software engineering work products are all part of the agile software engineering concept. Agile software engineering principles prioritize the timely delivery of a functional software increment above analysis and design.

  • During the development of a project, an agile team may adapt to changes.

  • Agile development acknowledges the need for project plans to be adaptable.

  • Agility fosters team structures and mindsets that facilitate communication between developers and consumers.

  • Customers and developers are no longer separated by agility.

  • The value of speedy delivery of operational software is emphasized by agility, whereas the relevance of intermediate work items is downplayed.

  • Any software process may benefit from agility if the project team is given the freedom to simplify activities and prepare in a manner that eliminates non-essential work items.

Agile Processes

Agile processes are founded on three basic assumptions −

  • It's tough to foresee which client priorities or needs will change and which will not.

  • Many sorts of software development and design tasks are intertwined (construction is used to prove the design)

  • From a planning standpoint, analysis, design, and testing are not as predictable as one would want.

To deal with uncertainty, agile processes must be tweaked gradually. Customer input based on the assessment of provided software increments (executable prototypes) over short time periods is required for incremental adaption.

Principles of Agility

  • The highest aim is to satisfy customers by delivering useful software on time and on a consistent basis.

  • Changes in regulations should be welcomed. Even late in the development process, tolerating change is seen as gaining a competitive edge for the client.

  • Frequently delivering functioning software, with a bias towards shorter delivery times (e.g., every 2 or 3 weeks)

  • During the project, business people and developers must collaborate on a daily basis.

  • Build initiatives around motivated people, provide them with the atmosphere and support they need, and trust them to complete the task.

  • Within the development team, face-to-face contact is the most efficient technique of transmitting knowledge.

  • Working software is the most important indicator of progress.

  • Agile approaches encourage long-term development, therefore developers and clients should be able to keep working on projects forever.

  • A constant focus on technical excellence and smart design improve agility.

  • Simplicity (defined as maximizing the amount of labor that isn't done) is critical.

  • Self-organizing teams provide the finest architectures, requirements, and designs.

  • Teams think about how to become more successful at regular intervals and alter their behavior appropriately.

Factors Affecting Humans

Members of agile development teams must possess the following characteristics −

  • Competence

  • a common goal

  • Collaboration

  • Ability to make decisions

  • Ability to solve ambiguous problems

  • Mutual respect and trust

  • Self-organization

Models of Agile Processes

  • Extreme Programming (XP)

  • Software Development That Adapts (ASD)

  • Methodology for Developing Dynamic Systems (DSDM)

  • Scrum

  • Crystal

  • Feature-Oriented Design (FDD)

  • Modeling that is flexible (AM)

Extreme Programming

  • An object-oriented approach is used.

  • The most important acts

    • Organizing (user stories created and ordered by customer value)

    • Conceptualization (simple designs preferred, CRC cards and design prototypes are only work products, encourages the use of refactoring)

    • The process of coding (focuses on unit tests to exercise stories, emphasizes the use of pairs programming to create story code, continuous integration, and smoke testing is utilized)

    • Examining (unit tests created before coding are implemented using an automated testing framework to encourage the use of regression testing, integration and validation testing done on daily basis, acceptance tests focus on system features and functions viewable by the customer)

Adaptive Software Development

  • Self-organization occurs when a group of autonomous agents works together to solve an issue that is beyond the capabilities of anyone actor.

  • Self-organizing teams, interpersonal cooperation, and individual and team learning are all highlighted.

  • Characteristics of the adaptive cycle

  • Phases −

    • Mission-driven

    • Component-based

    • Iterative

    • Time-boxed

    • Imagination (a project initiated and adaptive cycle planning takes place)

    • Collaboration is important (requires teamwork from a jelled team, joint application development is preferred requirements gathering approach, mini specs created)

    • Educating yourself (components implemented and testes, focus groups provide feedback, formal technical reviews, postmortems)

Methodology for Developing Dynamic Systems

  • Provides a framework for developing and managing systems that meet tight deadlines by employing incremental prototyping in a safe environment.

  • The Pareto principle is used (80 percent of the project can be delivered in 20 percent required to deliver the entire project)

  • Each increment just has enough functionality to allow you to go to the next one.

  • Time boxes are used to decide how much functionality will be given in each increment by fixing time and resources.

  • Principles to follow

    • Participation of active users

    • Teams with decision-making authority

    • Acceptance of deliverables is based on their suitability for business purposes.

    • To arrive at a precise business solution, iterative and incremental development is required.

    • All modifications made throughout the development process may be reversed.

    • At a high level, requirements are base lined.

    • Testing is integrated throughout the whole life cycle.

    • Stakeholders working together in a collaborative and cooperative manner

  • Activities that occur throughout the life cycle

    • Study of Possibility (establishes requirements and constraints)

    • Business research (establishes functional and information requirements needed to provide business value)

    • Iteration of the functional model (produces set of incremental prototypes to demonstrate functionality to customer)

    • Iteration on design and construction (revisits prototypes to ensure they provide business value for end-users, may occur concurrently with functional model iteration)

    • Putting it into action (latest iteration placed in operational environment)

Scrum

  • Principles of Scrum −

    • Small working groups were employed to increase communication, reduce overhead, and maximize informal knowledge exchange.

    • To guarantee the best result is created, the process must be adaptive to both technical and commercial difficulties.

    • The process produces regular increments that may be examined, altered, tested, recorded, and expanded upon.

    • Work in development and the people who do it are divided into neat, low-coupling divisions.

    • As the product is constructed, testing and documentation are carried out.

    • Allows you to declare the product finished anytime you choose.

  • Development activities are defined by process patterns.

    • a backlog of work (prioritized list of requirements or features the provide business value to the customer, items can be added at any time)

    • Sprints are a kind of exercise that involves running (work units required to achieve one of the backlog items, must fit into a predefined time-box, affected backlog items frozen)

    • Scrum meetings (15 minute daily meetings) that cover the following topics: What has been accomplished since the previous meeting? What challenges did you face? By the time the next meeting comes around, what will have been accomplished?

    • Demonstrations (deliver software increment to the customer for evaluation)

Crystal

  • With the main objective of providing functional software and a secondary purpose of setting up for the next game, a development strategy that prioritizes agility during a resource-constrained game of innovation and communication.

  • The fundamentals of crystals −

    • Face-to-face communication is always less expensive and quicker.

    • As procedures get more rigorous, teams become overburdened and have difficulty responding to the whims of project work.

    • As projects become bigger, teams get bigger, and processes get heavier.

    • As projects become more essential, aspects of the process will need to become more formalized.

    • The requirement for intermediary work items decreases as feedback and communication become more efficient.

    • Process, formality, and paperwork are all countered by discipline, abilities, and understanding.

    • Team members who are not on the essential project path might spend their free time developing the product or assisting those who are.

  • With 1 to 3 month timelines, an incremental development technique is adopted.

  • Workshops on reflection are held before the project starts, throughout increment development, and after the increment is delivered.

  • Methodologies for crystals

    • Clear (small, low criticality projects)

    • Orange (larger, moderately critical projects)

    • Orange Web (typical e-business applications)

Feature-Oriented Design

  • Object-oriented software engineering process model in practice

  • The client-valued feature that can be deployed in two weeks or fewer

  • Philosophy of FDD

    • Collaboration among team members is emphasized.

    • Feature-based deconstruction and software increment integration is used to control issues and project complexity.

    • Utilizing verbal, graphical, and textual ways to communicate technical information

    • Incremental development, design and code inspections, SQA audits, metric gathering, and pattern usage all help to improve software quality (analysis, design, construction)

  • Actions that make up the framework

    • Create a comprehensive model (contains set of classes depicting a business model of application to be built)

    • Make a list of features (features extracted from the domain model, features are categorized and prioritized, work is broken up into two-week chunks)

    • Make a feature-by-feature plan (features assessed based on priority, effort, technical issues, schedule dependencies)

    • Feature-based design (classes relevant to feature are chosen, class and method prologs are written, preliminary design detail developed, owner assigned to each class, owner responsible for maintaining design document for his or her own work packages)

    • Feature-by-feature construction (class owner translates the design into source code and performs unit testing, integration performed by the chief programmer)

Modeling in an Agile Environment

  • A lightweight, practice-based paradigm for successful modeling and documenting of software systems.

  • Principles of modeling −

    • A model with a goal in mind

    • Use a variety of models

    • Take just what you need (only keep models with long-term value)

    • The importance of content outweighs that of representation.

    • You should be familiar with the models and tools you use to develop them.

    • Localize your adaptations.

  • Gathering requirements and modeling the analysis

    • Collaborate to figure out what the consumer wants to do.

    • Following the creation of the requirements model, collaborative analytical modeling with the client continues.

  • Architectural Modeling

    • Preliminary architecture is derived from the analytical model.

    • The architectural model must be accurate in terms of the surroundings and developer-friendly.

Updated on: 25-Nov-2021

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements