In this presentation, it will cover different software development methodologies. These include the common types of SDM, and the pros and cons.
A software development methodology involves several steps. These include planning, structuring, and performance tracking.
In some instances, it may also include extreme programming. The objective is to streamline the process when developing software or any product.
Almost all software development methodologies are non-technical. This means they do not deal with the technical aspects of software design and development. They focus more on the internal operations, and other processes involved in the project.
Take note that each has its specific features. Gauge your options, and choose the best one that suits your needs.
5. Developing a New Software Application
Software development refers to a set of computer science activities
dedicated to the process of creating, designing, deploying and
supporting software.
6. Customer is the Software Product Owner
Customer Needs Idea Software Development Product
11. What is Software Development Life Cycle
(SDLC) ?!
• SDLC is a process followed for a software project, within a software organization.
It consists of a detailed plan describing how to develop, maintain, replace and
alter or enhance specific software. The life cycle defines a methodology for
improving the quality of software and the overall development process.
12. SDLC is a process followed for a software project
16. 1. Planning
• In the Planning phase, project managers evaluate the terms of the project.
This includes calculating labor and material costs, creating a timetable with
target goals, and creating the project’s teams and leadership structure.
• Planning can also include feedback from stakeholders. Stakeholders are
anyone who stands to benefit from the application. Try to get feedback
from potential customers, developers, subject matter experts, and sales
reps.
• Planning should clearly define the scope and purpose of the application. It
plots the course and provisions the team to effectively create the software.
It also sets boundaries to help keep the project from expanding or shifting
from its original purpose.
19. 2. Define Requirements / Requirements Engineering
• Defining requirements is considered part of planning to determine
what the application is supposed to do and its requirements. For
example, a social media application would require the ability to
connect with a friend. An inventory program might require a search
feature.
• Requirements also include defining the resources needed to build the
project. For example, a team might develop software to control a
custom manufacturing machine. The machine is a requirement in the
process.
20. Define Requirements / Requirements Engineering Process
Customer
Stakeholders
Software Requirement
Specifications (SRS)
Or Product Backlog
Product Owner
Initial Project Plan
Marketing Requirements
Document (MRD)
Requirement Engineering Process
24. 3. Design and Prototyping
The Design phase models the way a software application will work. Some aspects of the design
include:
• Architecture – Specifies programming language, industry practices, overall design, and use of any
templates or boilerplate
• User Interface – Defines the ways customers interact with the software, and how the software
responds to input
• Platforms – Defines the platforms on which the software will run, such as Apple, Android,
Windows version, Linux, or even gaming consoles
• Programming – Not just the programming language, but including methods of solving problems
and performing tasks in the application
• Communications – Defines the methods that the application can communicate with other assets,
such as a central server or other instances of the application
• Security – Defines the measures taken to secure the application, and may include SSL traffic
encryption, password protection, and secure storage of user credentials
25. Design and Prototyping Process
Software Architect
Software Designer
Software System Architecture
Software High Level Design
SRS / Product Backlog
Risk Analysis Document
Software Low Level Design
Software Design Documents (SSD)
Design and Prototyping Process
Tools
26. 3. Design and Prototyping (Cont.)
• Prototyping can be a part of the Design phase. A prototype is like one
of the early versions of software in the Iterative software
development model. It demonstrates a basic idea of how the
application looks and works. This “hands-on” design can be shown to
stakeholders. Use feedback o improve the application. It’s less
expensive to change the Prototype phase than to rewrite code to
make a change in the Development phase.
30. 4. Software Development
• This is the actual writing of the program. A small project might be written by a single
developer, while a large project might be broken up and worked by several teams. Use an
Access Control or Source Code Management application in this phase. These systems
help developers track changes to the code. They also help ensure compatibility between
different team projects and to make sure target goals are being met.
• The coding process includes many other tasks. Many developers need to brush up on
skills or work as a team. Finding and fixing errors and glitches is critical. Tasks often hold
up the development process, such as waiting for test results or compiling code so an
application can run. SDLC can anticipate these delays so that developers can be tasked
with other duties.
• Software developers appreciate instructions and explanations. Documentation can be a
formal process, including wiring a user guide for the application. It can also be informal,
like comments in the source code that explain why a developer used a certain procedure.
Even companies that strive to create software that’s easy and intuitive benefit from the
documentation.
31. Software Development Process
Product Owner
Developer
Team Leader
Software Design
Documents (SDD)
Software Requirement
Specifications (SRS)
Or Product Backlog
Software Shippable Product
Software Development Process
Tools
32. Most used programming languages among developers
worldwide as of 2022 (statista.com)
33. 5. Software Testing
• It’s critical to test an application before making it available to users.
Much of the testing can be automated, like security testing. Other
testing can only be done in a specific environment – consider creating
a simulated production environment for complex deployments.
Testing should ensure that each function works correctly. Different
parts of the application should also be tested to work seamlessly
together—performance test, to reduce any hangs or lags in
processing. The testing phase helps reduce the number of bugs and
glitches that users encounter. This leads to a higher user satisfaction
and a better usage rate.
34. Software Testing Process
Software Tester
Software Design
Documents (SSD)
Software Requirement
Specifications (SRS)
Or Product Backlog
Integration Testing Plan
Unit Testing Plan
Functional Testing Plan
Software Testing Process
Tools
35. Software Testing Process (Cont.)
Software Tester
Integration Testing Report
Unit Testing Report
Functional Testing Report
Integration Testing Plan Unit Testing Plan
Functional Testing Plan
Software Shippable
Product
Bug/Issues Report
Software Testing Process
Tools
37. 6. Deployment
• In the deployment phase, the application is made available to users.
Many companies prefer to automate the deployment phase. This can
be as simple as a payment portal and download link on the company
website. It could also be downloading an application on a
smartphone.
• Deployment can also be complex. Upgrading a company-wide
database to a newly-developed application is one example. Because
there are several other systems used by the database, integrating the
upgrade can take more time and effort.
39. 7. Operations and Maintenance
• At this point, the development cycle is almost finished. The
application is done and being used in the field. The Operation and
Maintenance phase is still important, though. In this phase, users
discover bugs that weren’t found during testing. These errors need to
be resolved, which can spawn new development cycles.
• In addition to bug fixes, models like Iterative development plan
additional features in future releases. For each new release, a new
Development Cycle can be launched.
45. What is a software product roadmap?
• A product roadmap is a plan of action for how a product or solution will evolve
over time. Product owners use roadmaps to outline future product functionality
and when new features will be released.
46. Who Should Participate in Product Roadmap
Planning?
• Product manager/Business Analyst:
The product manager is ultimately responsible for the product roadmap. So the PM is responsible
for guiding the success of a product and leading the cross-functional team that is responsible for
improving it. The main inputs for him is the PRD
• Product owner:
The product owner participates in the roadmap planning process to serve as the liaison. They are
coordinating between the big-picture strategic plan and the development team’s action plan.
• Development representative(s):
The development team’s contribution to product roadmap planning could involve a single person.
Such as a development manager or the head of the department.
47. Example of Software Product Roadmap
SRS/Product Backlog
Initial Project Plan
Marketing Requirements
Document (MRD)
48.
49. 4 examples of effective product roadmaps
(According to the kind of audience)
58. Waterfall Approach
Winston Royce introduced the Waterfall
Model in 1970.This model has five phases:
Requirements analysis and specification,
design, implementation, and unit testing,
integration and system testing, and operation
and maintenance. The steps always follow in
this order and do not overlap. The developer
must complete every phase before the next
phase begins. This model is named "Waterfall
Model", because its diagrammatic
representation resembles a cascade of
waterfalls.
60. When to use SDLC “Waterfall” Approach?
• When the requirements are constant and not changed regularly.
• A project is short
• The technology is understood and not dynamic.
• Where the tools and technology used is consistent and is not
changing
• When resources are well prepared and are available to use.
61. Advantages of “Waterfall” Approach
• This model is simple to implement also the number of resources that
are required for it is minimal.
• The requirements are simple and explicitly declared; they remain
unchanged during the entire project development.
• The start and end points for each phase is fixed, which makes it easy
to cover progress.
• The release date for the complete product, as well as its final cost,
can be determined before development.
• It gives easy to control and clarity for the customer due to a strict
reporting system.
62. Disadvantages of “Waterfall” Approach
• In this model, the risk factor is higher, so this model is not suitable for
more significant and complex projects.
• This model cannot accept the changes in requirements during
development.
• It becomes tough to go back to the phase. For example, if the
application has now shifted to the coding phase, and there is a
change in requirement, It becomes tough to go back and change it.
• Since the testing done at a later stage, it does not allow identifying
the challenges and risks in the earlier phase, so the risk reduction
strategy is difficult to prepare.
68. IEC 62304 is a functional safety standard that covers safe
design and maintenance of software. It provides
processes, activities, and tasks to ensure safety. It applies to
the development and maintenance of medical device
software when: The software is itself a medical device.
72. Agile Methodology
• It all started in the spring of 2000, when a group of 17 software
developers, including Martin Fowler, Jim Highsmith, Jon Kern, Jeff
Sutherland, Ken Schwaber, and Bob Martin met in Oregon to discuss
how they could speed up development times in order bring new
software to market faster.
73. The Pioneers of Agility
T
aylor Ford Sloan Deming Nonaka T
akeuchi
Ohno
77. Customer Feedback cycle in “Agile” Methodology
Feedback Cycle
Customer Interaction is the backbone of this Agile methodology, and open communication
with minimum documentation are the typical features of Agile development environment. The
agile teams work in close collaboration with each other and are most often located in the same
geographical location.
78. When to use the Agile Methodology?
• When frequent changes are required.
• When a highly qualified and experienced team is available.
• When need to respond to market dynamics and complete more of
their projects successfully
• When project contains ambiguities in requirements such as R&D
projects.
• When the project is complex and takes long time to be developed.
79. Advantage(Pros) of Agile Methodology
• Frequent Delivery
• Face-to-Face Communication with clients.
• Efficient design and fulfils the business requirement.
• Anytime changes are acceptable.
• It reduces total development time.
80. Disadvantages(Cons) of Agile Methodology
• Due to the shortage of formal documents, it creates confusion and
crucial decisions taken throughout various phases can be
misinterpreted at any time by different team members.
• Due to the lack of proper documentation, once the project completes
and the developers allotted to another project, maintenance of the
finished project can become a difficulty.
89. TheProduct Owner
Define the features for the product
Decide on release dates and its contents
Responsible for the ROI, audience, etc.
Prioritize features according to market and strategic value
Interact with stakeholders and customers to define the
Product backlog
Adjust features and prioritize every sprint, as needed
Accept or reject work results during the Sprint Review
90. ScrumMaster
Protect values and principles
Removes impediments
Keep the team fully functional and productive
Enable cooperation
Shield the team from “dark forces”
Facilitates integration
He does NOT allocate tasks
106. Kanban Methodology: The Simplest Agile
Framework
Kanban is a framework that falls under the Agile methodology. It was
developed in the late 1940s by a Japanese engineer named Taiichi
Ohno. Agile Kanban Framework focuses on visualizing the entire
project on boards in order to increase project transparency and
collaboration between team members.
112. When to use the Kanban Framework?
• When you want to deploy work as soon as it is ready, rather than
waiting for other work items.
• If your priorities change on the fly, and ad hoc tasks can happen
anytime.
• Kanban is best suited as you can add tasks to any work stage.
• It can also be used when there are no iterations.
114. Version Control Management
In software engineering, version control (also known as revision control, source
control, or source code management) is a class of systems responsible for
managing changes to computer programs, documents, large web sites, or other
collections of information. Version control is a component of software configuration
management
115.
116. Version Control Tools
• Azure Repos:
Azure Repos is a set of version control tools on Azure DevOps that users Git
technology and we can use to manage our application code.
• GitHub Desktop:
GitHub Desktop is an application that enables developers to interact with version
control using a GUI instead of the command line or a web browser. GitHub
Desktop encourages you and our team to collaborate using best practices with Git
and GitHub
118. Trunk Based Development
Shared branches off mainline/master/trunk are bad at
any release cadence:
Trunk-Based Development For Smaller Teams:
Scaled Trunk-Based Development:
119. CI/CD pipeline
• CI and CD stand for continuous integration and continuous
delivery/continuous deployment. In very simple terms, CI is a
modern software development practice in which incremental code
changes are made frequently and reliably.
120.
121.
122. Automation Testing Tools
• Static Code Analysis:
One of the primary reasons why static analysis is so important is that it lets
developer thoroughly analyze all of his code without even executing it.
Ex: Code analyzers - Visual Studio
• Unit Testing/ Integration Testing:
Unit testing involves testing individual pieces of code while integration testing
involves testing modules of code to understand how they perform alone and how
they interact with each other.
Ex: Testing tools - Visual Studio [Unit testing, Live Unit Testing]
123. Automation Testing Tools
• Functional Testing:
Functional testing is the process through which QAs determine if a piece of
software is acting in accordance with pre-determined requirements.
Ex: -Test Explorer- Visual Studio
- Selenium
• Load Testing:
A load test is a type of performance test that checks how systems function under
a heavy number of concurrent virtual users performing transactions over a
certain period of time.
Ex: coded web performance test - Visual Studio