CSC408_Session_04
CSC408_Session_04
Agile Software Development methodology is one of the best software development approaches
that is used to design a disciplined software management process which also allows some frequent
alteration in the development project. This is a type of software development methodology that is
one conceptual framework for undertaking various software engineering projects. Agile
Development is used to minimize risk by developing software in short time boxes which are called
iterations that generally last for one week to one month.
Page 1 of 17
Agile methodology has an adaptive approach that is able to respond to the changing
requirements of the clients.
Direct communication and constant feedback from customer representatives leave no space
for any guesswork in the system.
In the case of some software deliverables, especially the large ones, it is difficult to assess
the effort required at the beginning of the software development life cycle.
Agile focuses on working software rather than documentation, hence it may result in a lack
of documentation.
The project can easily get taken off track if the customer representative is not clear what
final outcome that they want.
Only senior programmers are capable of taking the kind of decisions required during the
development process. Hence it has no place for newbie programmers unless combined with
experienced resources.
Page 2 of 17
Advantages of Scrum Development
Use Scrum Development for fast-moving, cutting-edge developments, rapid codes, and
testing mistakes that can be easily rectified.
In this methodology, decision-making is entirely in the hands of the teams.
This methodology enables projects with the business requirements documentation and
other signs that contribute to success.
Page 3 of 17
Enterprises can control the Project development steps visible in this method with emphasis
on frequent updating of the progress.
A daily meeting easily helps the developer to make it possible to measure individual
productivity. This leads to the improvement in the productivity of each of the team
members.
Due to short sprints and constant feedback, it becomes easier to cope with the changes.
It is easier to deliver a quality product at a scheduled time.
Waterfall Model
Is one of the most popular software development methodologies. Most businesses consider this
life cycle model as a classic style of software development. This model clarifies the software
development process in a linear sequential flow. In any phase of the development cycle, you should
always cross-check that the earlier phase is completed. This traditional software development
method is a rigid linear model. This development approach does not define the process to go back
to the previous phase to handle changes in requirements.
Waterfall model is very simple and easy to understand and uses methodology. That is why
it is beneficial for the beginner or novice developer.
It is easy to manage the projects because of the rigidity of the model. Moreover, each phase
has specific deliverables and an individual review process.
Waterfall development methodology saves a significant amount of time at all the phases
processed and completed at a given time.
The requirements are very well understood/defined in the waterfall method. Also, it works
effectively for smaller projects.
You can easily do the testing that refers to the defined scenarios in the earlier functional
specification.
Page 4 of 17
If the requirements are precise and are available up-front, then the waterfall development
method can only be used.
Waterfall method is not applicable to projects that demand continuous maintenance.
The main drawback of this method is that once an application is in the testing stage, it is
not advisable to go back and do any amendments changes for completed software, it may
cause a lot of problems.
There is no possibility that we can to develop any working software until it reaches the last
stage of the cycle
You cannot include the client’s valuable feedback within the ongoing development phase.
In waterfall development method, there is no option to know the end result of the entire
project
Make your requirements well-defined and clear or else this model is not suitable. It is
effective for long and ongoing projects.
In waterfall methodology, Documentation occupies a lot of time for developers and testers.
Prototype Methodology
The Prototype Methodology is the software development process that allows developers to create
only the prototype of the solution to demonstrate its functionality to the clients. Make all the
necessary modifications before developing the actual application using this methodology. The best
feature of this software development methodology is that it solves a plethora of issues that often
occur in a traditional waterfall model. The steps involved in prototype method is captured below;
Show the prototype to the client to have a clear understanding and complete ‘feel’ of the
functionality developed in the software. It ensures a greater level of customer satisfaction
and comfort.
Identify the scope of the refinement and accordingly accommodate new changes in the
given requirements.
Page 5 of 17
Significantly reduce the risk of failure using this method and identify the potential risks at
an early stage and moderation steps can be taken quickly.
The communication between the software development team and the client makes a very
good and conducive environment during a project.
It helps in requirement gathering and requirement analysis when there is a lack of required
documents.
Prototyping is usually done at the cost of the developer, so it should be done using minimal
resources otherwise the organization’s development cost stretches too much.
Customers sometimes demand the actual product to be delivered soon after seeing an early
prototype.
The clients have too much involvement which is not always aligned with the software
developer.
It does not appreciate too many modifications in the project as it easily disturbs the existing
workflow of the entire software development process.
Customers may not be satisfied or interested in the product after seeing the initial prototype.
Feature Driven Development is an iterative approach out of all the software methodologies,
intended for use by large teams working on a project using object-oriented technology. This type
of model is good for organizations that are transitioning from a phase-based approach to an
iterative approach. Feature Driven methodology is also known as an FDD methodology. The steps
involved in feature driven development method is captured below.
Page 6 of 17
Advantages of FDD Methodology
With Feature Driven Development model, Progress tracking of the project happens by a
feature that is a focused approach.
It allow multiple teams to work simultaneously. Which, in turn, reduces the time.
FDD Helps to move larger size projects and obtain repeatable success.
The simple five processes help to bring work done in a short time and easiest manner.
This type of model is built on set standards for the software development industry, so it
helps easy development and industry-recognized best practices.
Not an ideal methodology for smaller projects, so it is not good for an individual software
developer.
High dependency on the main developer means the person should be fully equipped for an
act as coordinator, lead designer, and mentor.
No written documentation is provided to clients in this methodology, so they are not able
to get proof for their software.
Is an effective methodology that provides much quicker development and higher-quality results
than those achieved with the other software development methodologies. It is designed in such a
way that it easily takes the maximum advantage of the software development. The main objective
of rapid application development methodology is to accelerate the entire software development
process. The goal is easily achievable because it allows active user participation in the
development process.
Rapid Application development model helps to reduce the risk and required efforts on the
part of the software developer.
Additionally, this model also helps the clients to take quick reviews for the project.
This methodology encourages customer feedback which always provides improvement
scope for any software development project.
As a result of prototyping in nature, there is a possibility of lesser defects.
Each phase in RAD delivers the highest priority functionality to the client.
Page 7 of 17
Disadvantages RAD model
This model depends on the strong team and individual performances for clearly identifying
the exact requirement of the business.
It only works on systems that can be modularized can be built using this methodology.
This approach demands highly skilled developers and a designer’s team which may not be
possible for every organization.
This method is not applicable for the developer to use in small budget projects as the cost
of modeling and automated code generation is very high.
Progress and problems accustomed are hard to track as such there is no documentation to
demonstrate what has been done.
Spiral Model
The Spiral Model is a sophisticated model that focuses on the early identification and reduction
of project risks. In this software development methodology, developers start on a small scale then
explores the risks involved in the project, make a plan to handle the risks, and finally decides
whether to take the next step of the project to do the next iteration of the spiral. The success of any
Spiral Lifecycle Model depends on the reliable, attentive, and knowledgeable management of the
project.
The high amount of risk analysis being done hence, avoidance of possible risk is certainly
reduced with this model.
This model is good for large size and critical projects.
In the spiral model, additional functionality can be added at a later date.
Page 8 of 17
Development is fast and features are added systematically in this model.
It is more suited for high-risk projects, where business needs may differ from time to time
basis.
Users are highly involved in the development of the system so, they are more likely to get
a grip on the software development project.
In a dynamic systems model, the basic functionality is delivered quickly, with more
functionality being delivered at frequent intervals.
This method provides easy access by developers to end-users.
Page 9 of 17
In this kind of development, approach projects are delivered on time and within a specific
budget.
The first thing is that DSDM is costly to implement, as it requires users and developers
both to be trained to employ it effectively. It may not be suitable for small organizations or
one-time projects.
It is a relatively new model, therefore, it is not very common and easy to understand.
Dynamic systems model Requires significant user involvement.
This model Involves the progressive development of project requirements.
The main advantage of Extreme Programming is that this methodology allows software
development companies to save costs and time required for project realization. Time
savings are available because of the fact that XP focuses on the timely delivery of final
products. Extreme Programming teams save lots of money because they don’t use too much
documentation. They usually solve problems through discussions inside of the team.
Extreme programming methodologies emphasize customer involvement.
This model helps to establish rational plans and schedules and to get the developers
personally committed to their schedules which are surely a big advantage in the XP model.
This model is consistent with most modern development methods so, developers are able
to produce quality software.
Some specialists say that Extreme Programming is focused on the code rather than on
design. That may be a problem because good design is extremely important for software
applications. It helps sell them in the software market. Additionally, in XP projects the
defect documentation is not always good. Lack of defect documentation may lead to the
occurrence of similar bugs in the future.
This methodology is only as effective as the people involved, Agile does not solve this
issue.
This kind of software development model requires meetings at frequent intervals at
enormous expense to customers.
It requires too many development changes which are very difficult to adopt every time for
the software developer.
Page 10 of 17
In this methodology, it tends to be impossible to know exact estimates of work effort
needed to provide a quote, because at the starting of the project nobody is aware of the
entire scope and requirements of the project.
This methodology allows for the simultaneous gathering and consolidating of large
amounts of information. The collaboration between the company and the clients lowers all
risks.
This software development mode effectively produces large amounts of high-quality
information in a short period of time. It reduces the costs and time needed for project
development.
With the proper assistance of the organizer, the differences are immediately resolved in
this method.
This model provides a forum to explore multiple points of view regarding a topic.
Well-defined requirements improve system quality.
Page 11 of 17
JAD methodology takes a large amount of time as it requires significant planning and
scheduling effort on the part of the project development team.
It requires significant investor commitment in terms of time and effort.
This approach requires trained and experienced personnel for the effective implementation
of the entire project.
Different opinions within the team make it difficult to align goals and maintain focus.
Focuses on the creation of easily changeable software. This Software Development model is more
strategically focused than any other type of agile methodology. The goal of this methodology is to
develop software in one-third of the time, with a limited budget, and a very less amount of required
workflow.
The early elimination of the overall efficiency of the development process certainly helps
to speeds up the process of entire software development which surely reduces the cost of
the project.
Delivering the product early is a definite advantage. It means that the development team
can deliver more functionality in a shorter period of time, hence enabling more software
projects to be delivered.
Empowerment of the development team helps in developing the decision-making ability
of the team members which creates more motivation among team members.
Success in software development depends on how disciplined the team members are and
how to advance their technical skills.
Page 12 of 17
The role of a business analyst is vital to ensure the business requirements documentation
is understood properly. If any organization doesn’t have a person with the right business
analyst then this method may not be useful for them.
In this development model, great flexibility is given to the developer which is surely great,
but too much of it will quickly lead to a development team that lost focus on its original
objectives thus, it hearts the flow of the entire project development work.
Web application development needs thorough planning, the right framework, and reliable
architecture. However, it would be best to consider all the aspects of the development lifecycle for
your web application projects. So, here is a comprehensive guide on types of web apps, best
frameworks, stages, and cost of web application development for your projects.
Advantages of DevOps
Faster Process Multiple ongoing processes work simultaneously which makes the process
faster and easier for businesses to process on time. By adapting to changes in the market,
DevOps enables businesses to grow efficiently and drive definite business results.
Page 13 of 17
Offers Rapid Deliveries Microservices and Continuous delivery are some elements of
DevOps that offer business continuity and recent updates rapidly. DevOps allows
businesses to continuously innovate and improve products for a better software product.
Reliability With increasing changes in the product and infrastructure, the developed
products are robust and secure with a competitive advantage against all the peers.
Collaboration This is a collaborative platform pillared on strong parameters of
accountability and ownership. Both the development teams and operations team are in sync
with all activities of the development lifecycle to deliver faster and effective products.
Disadvantages of Devops
DevOps demands Cultural change Yes, this is true if you adopt DevOps in your business,
it demands cultural change and business needs to restart their processes in order to grow
efficiently.
Organizational Upgradation is another important factor for companies to upgrade their
business from conventional methods to dividing into multidisciplinary tasks that will allow
them to use multiple skills at the same time.
Speed and security is not something that is achieved all the time using DevOps. For some
critical software engineering projects, there are companies that may not assure both in a
single stage and you may need to consider a separate plan for security at every stage of
your DevOps workflow.
Advantages
JAD as a system development process has changed the way requirements are gathered and systems
are designed, and it comes with several advantages over the legacy approaches, as highlighted
below:
• Improved delivery time: Due to the coordinated approach of bringing professionals and subject-
matter experts together to deliberate in a structured and organized manner through JAD sessions,
valuable time is saved and the overall design and delivery schedules are improved. The
Page 14 of 17
unnecessary communication and actors are not involved in the discussion that thoroughly reviews
the business goals and formulates requirements that can be promptly delivered by the technology
team.
• Cost reduction: The accelerated analysis of the requirements as well as speedy design and
efficient delivery ultimately leads to cost savings for the organization.
• Better understanding: Even though product direction is often identified and suggested by business
executives, the careful selection of participants of the JAD sessions ensures that professionals can
interact and provide better understanding of the objectives and goals relative to their skills and
knowledge. This ultimately removes any ambiguities related to final goals, objectives and
expectations from the deliverables. This is largely possible because the coordination by the
facilitators ensure that every participant contributes to the session, thereby increasing the overall
value of the JAD process.
1. AGILE
2. LEAN
3. SCRUM
THE LISTED WEB APPLICATION RESEARCH DEV HAS BEEN DISCUSSED ALREADY
IN THE SOFTWARE DEVELOPMENT METHODOLOGY SECTION ABOVE.
Page 15 of 17
Step 1: Purpose & Requirements Specification
The first step in IoT system design methodology is to define the purpose and requirements of the
system. In this step, the system purpose, behavior and requirements (such as data collection
requirements, data analysis requirements, system management requirements, data privacy and
security requirements, user interface requirements) are captured.
Step 2: Process Specification
The second step in the IoT design methodology is to define the process specification. In this step,
the use cases of the IoT system are formally described based on and derived from the purpose
and requirement specifications.
Step 3: Domain Model Specification
The third step in the IoT design methodology is to define the Domain Model. The domain model
describes the main concepts, entities and objects in the domain of IoT system to be designed.
Domain model defines the attributes of the objects and relationships between objects. Domain
model provides an abstract representation of the concepts, objects and entities in the IoT domain,
independent of any specific technology or platform. With the domain model, the IoT
system designers can get an understanding of the IoT domain for which the system is to be
designed.
Step 4: Information Model Specification
The fourth step in the IoT design methodology is to define the Information Model. Information
Model defines the structure of all the information in the IoT system, for example, attributes of
Virtual Entities, relations, etc. Information model does not describe the specifics of how the
information is represented or stored. To define the information model, we first list the Virtual
Entities defined in the Domain Model. Information model adds more details to the Virtual
Entities by defining their attributes and relations.
Step 5: Service Specifications
The fifth step in the IoT design methodology is to define the service specifications. Service
specifications define the services in the IoT system, service types, service inputs/output, service
endpoints, service schedules, service preconditions and service effects.
Step 6: IoT Level Specification
The sixth step in the IoT design methodology is to define the IoT level for the system. In
Chapter-1, we defined five IoT deployment levels.
Page 16 of 17
In this step, various options pertaining to the IoT system deployment and operation are defined,
such as, service hosting options, storage options, device options, application hosting options, etc.
Page 17 of 17