9.2-Evolution of Software Development Methodologies - Appendix
9.2-Evolution of Software Development Methodologies - Appendix
Methodologies - Appendix
Gundimeda Venugopal
Appendix
Evolution of Build Tools
Evolution of Testing
Joint Architecture Design and Architecture Review Board
❖ Enterprises usually create an Enterprise Architecture Blueprint for their organization and the Architecture
Review Board provides the necessary governance.
❖ Architecture Review Board is usually made up of CIO, Enterprise Architect, Security Architect, Infra
Architect, Senior Architects and Product Owners.
❖ Joint Architecture Design collaborative design process wherein all engineering personnel necessary to
develop some new major functionality work together to define a design consistent with the architectural
principles of the organization.
❖ JAD is required whenever an IT project requires an architectural change or to address a new challenge
through proposed system.
❖ Projects go to the Architecture Review Board (ARB) for approval after approved through JAD.
BUILDING BETTER UX/SYSTEMS
Design Thinking
SAFe BETTER ANALYSIS & DESIGN
CONTINOUS IMPROVEMENT
Example:
Customer Centric UX Design for mobile (Android/ios)
devices and web. Concept demonstration through
power point slide prototypes.
COMPLEX PROJECTS
Empirical Process Control Agile (Scrum)
An empirical process is implemented where progress is based on observation and Large Scalable Scrum - LeSS
experimentation instead of detailed, upfront planning and defined processes.
The Empirical Process Control has the following characteristics:
• Learn as we progress
• Expect and embrace change
• Inspect and adapt using short development cycles
• Estimates are indicative only and may not be accurate
AGILE MINDSET
Pair Programming INCREASED PRODUCTIVITY
Cross-functional collaboration ―
bringing people from various spheres,
bringing together their knowledge,
expertise, and experience
AGILE MINDSET & LEAN THINKING
Communication Effectiveness CONTINOUS IMPROVEMENT
INCREASED PRODUCTIVITY
❖ PROs
• Detailed early analysis cause huge advantages at later
phases
• If a bug found earlier, it is much cheaper (and more
effective) to fix than bugs found in a later phase
• Requirement should be set before design starts
• Points to importance of documentation (minimized
“broken leg” issue)
• Disciplined and well-structured approach
• Effective for stable software projects
• Easy to plan from project management point of view
❖ CONs
• Changes are expensive
• Client does not explicitly know what he or she wants
• Client does not explicitly know what is possible to have
• Need to finish every phase fully
• Long projects, difficult to keep the plan
• Designers may not know in advance how complex a
feature’s implementation
• “Measure twice, cut once”
Systems structured analysis and design methodology (SSADM)
SSADM is a group of standards for both system analysis and
application design.
2005
Large Scale Scrum (LeSS)
(Bas Vodde, Craig Larman)
Scrum of Scrums
Behavior Driven Development
• Write unit tests before programming; keeping all tests running all times.
• Integrating and testing the whole system--several times a day.
• All tests must be run for every build and the build is only accepted if tests run
successfully. (TDD)
Why it is called “Extreme Programming”?
Optimize the Whole: We aim to see the system as more than the sum of its parts. We go beyond the
pieces of the project and look for how it aligns with the organization.
Build quality in: Lean development doesn’t try to “test-in” quality at the end; instead, we build
quality into the product and continually assure quality throughout the development process, using
techniques like refactoring, continuous integration and unit testing.
Defer Decisions: We balance early planning with making decisions and committing to things as late as
possible. For example, this may mean re-prioritizing the backlog right up until it is time to plan an
iteration, or avoiding being tide to an early technology-bounded solution.
Amplify Learning: Facilitate communication early and often, getting feedback as soon as possible, and
building on what we learn.
Software projects are business and technology learning experiences, so we should start soon and
keep learning.
Rapid Application Development (RAD)
❖Rapid Application Development (RAD) is a form of agile
software development methodology that prioritizes
rapid prototype releases and iterations.
❖Unlike the Waterfall method, RAD emphasizes the use of
software and user feedback over strict planning and
requirements recording
❖RAD is a people-centered and incremental development
approach. Active user involvement, as well as
collaboration and co-operation between all stakeholders
are imperative.
❖The key objectives of RAD are: High Speed, High Quality
and Low Cost.
❖RAD and the agile methodologies share similar values,
with regards to flexibility, shorter delivery time, and high
customer interaction and satisfaction, RAD is primarily
focused on prototypes while agile is mostly focused on
breaking down the project into features which are then
delivered in various sprints.
❖RAD is especially well suited for (although not limited to)
developing software that is driven by user interface
requirements. Rapid code generation and CI/CD tools
should be used for RAD projects.
Business Model:
Rational Unified Process Current State, Business Processes/
Components, Roles, Responsibilities
Requirements:
Usecases with Usecase and Activity diagrams.
Functional/Non-functional Requirements
Implementation
Code, Unit Tests and Results
Testing
Integration/Systems Testing approach, test
cases, testing and results
Acceptance test cases and results
Deployment
Deployment Diagrams, Deployment scripts
• An iterative software development process framework created by the Rational Software Corporation (IBM)
• Not a concrete prescriptive process, but an adaptable framework, intended to be tailored by the development
organizations. Expected to select elements of the process that are appropriate
Scrum of Scrums
Typical Scrum of Scrums daily sync:
Each representative of a scrum team answers these three questions:
• What have we done since the last sync, and how does it impact the
other teams?
• What are we going to do, and what is the impact going to be?
• What are the obstacles we’re facing, or anticipate we’ll be facing?