Unit - 2 - Application Development and Emerging Technologies
Unit - 2 - Application Development and Emerging Technologies
Introduction:
SDLC, is a conceptual framework or process that considers the structure of the stages
involved in the development of an application from its initial feasibility study through to its
deployment in the field and maintenance. There are several models that describe various
approaches to the SDLC process. An SDLC model is generally used to describe the steps that are
followed within the life-cycle framework. It is necessary to bear in mind that a model is
different from a methodology in the sense that the former describes what to do whereas the
latter, in addition, describes how to do it. So a model is descriptive whilst a methodology is
prescriptive. As a result, we consider SDLC models in this article in terms of their relevance to
particular types of software projects. This approach recognizes the context in which a SDLC
model is used. For example, the waterfall model may be the best model to use when
developing an enterprise relational database but it may not be the optimum model when
developing a web-based application. I therefore consider the models for three distinct use
cases, or software categories, in order to provide a context for their application, as follows:
Category 1. Software that provides back-end functionality. Typically, this is software that
provides a service to other applications.
Category 2. Software that provides a service to an end-user or to an end-user
application. Typically, this would be software that encapsulates business logic or
formats data to make it more understandable to an end-user.
Category 3. Software that provides a visual interface to an end-user. Typically, this is a
front-end application that is a graphical user interface (GUI).
Learning Outcomes:
Learning Outcomes:
Presentation of Content
What is waterfall model?
Waterfall methodology is a linear project management approach, where stakeholder and
customer requirements are gathered at the beginning of the project, and then a sequential project plan
is created to accommodate those requirements. The waterfall approach was first conceived by Winston
W. Royce in 1970, and it was quickly adopted in a variety of industries due to its logical sequencing and
ease of implementation. The waterfall model emphasizes that a logical progression of steps be taken
throughout the software development life cycle (SDLC), much like the cascading steps down an
incremental waterfall.
If the waterfall model is to be executed formally, each the above phases have to be
executed in a linear fashion. Meaning, each phase has to be completed before the next phase
can begin, and phases are never repeated, unless there is a massive failure that comes to light
in the verification or maintenance phase.
Furthermore, each phase is discrete and pretty much exists in isolation. This is especially
true with the requirements phase. Once the customer’s requirements are collected, the
customers cease to play any role in the actual development of the software.
Stages of the waterfall model
The waterfall model is a project management methodology that has at least five to
seven phases that follow in strict linear order, where a phase can’t begin until the previous
phase has been completed. The specific names of the phases vary, but they were originally
defined by Royce in the following way:
Requirements: During this initial phase, the potential requirements of the application
are methodically analyzed and written down in a specification document that serves as
the basis for all future development. The result is typically a requirements document that
defines what the application should do, but not how it should do it.
Analysis: During this second stage, the system is analyzed in order to properly generate
the models and business logic that will be used in the application.
Design: This stage largely covers technical design requirements, such as programming
language, data layers, services, etc. A design specification will typically be created that
outlines how exactly the business logic covered in analysis will be technically
implemented.
Coding: The actual source code is finally written in this fourth stage, implementing all
models, business logic, and service integrations that were specified in the prior stages.
Testing: During this stage, QA, beta testers, and all other testers systematically discover
and report issues within the application that need to be resolved. It is not uncommon
for this phase to cause a “necessary repeat” of the previous coding phase, in order for
revealed bugs to be properly squashed.
Maintenance: Finally, the application is ready for deployment to a live environment. The
operations stage entails not just the deployment of the application, but also subsequent
support and maintenance that may be required to keep it functional and up-to-date.
Application
The following are the advantages and disadvantages of the waterfall model.
While the waterfall model has seen a slow phasing out in recent years in favor of more agile
methods, it can still provide a number of benefits, particularly for larger projects and
organizations that require the stringent stages and deadlines available within these cool,
cascading waters.
Adapts to Shifting Teams: While not necessarily specific to the waterfall model only,
using a waterfall method does allow the project as a whole to maintain a more detailed,
robust scope and design structure due to all the upfront planning and documentation
stages. This is particularly well suited to large teams that may see members come and
go throughout the life cycle of the project, allowing the burden of design to be placed
on the core documentation and less on any individual team member.
Forces Structured Organization: While some may argue this is a burden rather than a
benefit, the fact remains that the waterfall model forces the project, and even the
organization building said project, to be extraordinarily disciplined in its design and
structure. Most sizable projects will, by necessity, include detailed procedures to
manage every aspect of the project, from design and development to testing and
implementation.
Allows for Early Design Changes: While it can be difficult to make design changes later
in the process, the waterfall approach lends itself well to alterations early in the life
cycle. This is great when fleshing out the specification documents in the first couple
stages with the development team and clients, as alterations can be made immediately
and with minimal effort, since no coding or implementation has actually taken place up
to that point.
Suited for Milestone-Focused Development: Due to the inherent linear structure of a
waterfall project, such applications are always well-suited for organizations or teams
that work well under a milestone- and date-focused paradigm. With clear, concrete, and
well understood stages that everyone on the team can understand and prepare for, it is
relatively simple to develop a time line for the entire process and assign particular
markers and milestones for each stage and even completion. This isn’t to suggest
software development isn’t often rife with delays (since it is), but waterfall is befitting
the kind of project that needs deadlines.
The Disadvantages of the Waterfall Model
While some things in software development never really change, many others often fall by the
wayside. While Dr. Royce’s initial proposal of what is now known as the waterfall model was
groundbreaking when first published back in 1970, over four decades later, a number of cracks
are showing in the armor of this once heralded model.
Non-adaptive Design Constraints: While arguably a whole book could be written on this
topic alone, the most damning aspect of the waterfall model is its inherent lack of
adaptability across all stages of the development life cycle. When a test in stage five
reveals a fundamental flaw in the design of the system, it not only requires a dramatic
leap backward in stages of the process, but in some cases, can be often lead to a
devastating realization regarding the legitimacy of the entire system. While most
experienced teams and developers would (rightfully) argue that such revelations
shouldn’t occur if the system was properly designed in the first place, not every
possibility can be accounted for, especially when stages are so often delayed until the
end of the process.
Ignores Mid-Process User/Client Feedback: Due to the strict step-by-step process that
the waterfall model enforces, another particularly difficult issue to get around is that
user or client feedback that is provided late into the development cycle can often be too
little, too late. While project managers can obviously enforce a process to step back to a
previous stage due to an unforeseen requirement or change coming from a client, it will
be both costly and time-consuming, for both the development team and the client.
Delayed Testing Period: While most of the more modern SDLC models attempt to
integrate testing as a fundamental and always-present process throughout development,
the waterfall model largely shies away from testing until quite late into the life cycle.
This not only means that most bugs or even design issues won’t be discovered until very
late into the process, but it also encourages lackadaisical coding practices since testing is
only an afterthought.
Activity: By understanding the advantages and disadvantages of the waterfall model, give
examples of software projects that can be developed using this model.
Topic 2.
Rapid Application Development (RAD) Model
Learning Outcomes:
Presentation of Content
What is rapid application development model?
There are several stages to go through when developing a RAD model including analysis,
designing, building, and the final testing phase. These steps can be divided to make them more
easily understandable and achievable. The following describes the process included in all RAD
models:
Business modeling step in the RAD model takes information from the company gathered
through many business-related sources. This info is then combined into a useful description of
how the data can be used when it is processed, and what is making this specific information
successful for the industry.
During the Data Modeling stage, all the information gathered during the Business Modeling
phase is analyzed. Through the analysis, the information is grouped into different groups that
can be useful to the company. The quality of each data group is carefully examined and given
an accurate description. A relationship between these groups and their usefulness as defined in
the Business Modeling step is also established during this phase of the RAD model.
The Process Modeling phase is the step in the RAD model procedure where all the groups of
information gathered during the Data Modeling step are converted into the required usable
information. During the Process Modeling stage, changes and optimizations can be done, and
the sets of data can be further defined. Any descriptions for adding, removing, or changing the
data objects are also created during this phase.
The Application Generation step is when all the information gathered is coded, and the system
that is going to be used to create the prototype is built. The data models created are turned
into actual prototypes that can be tested in the next step.
The Testing and Turnover stage allows for reduced time in the overall testing of the prototypes
created. Every model is tested separately to identify and adapt the components quickly to
create the most effective product. Since most of the elements have already been examined
previously, there should not be any major problems with your prototype.
When completing a traditional style of the Systems Development Life Cycle (SDLC),
there is a lot of planning and analysis done before the actual coding process starts. Such
waterfall model can potentially cause challenges for the customer because they are putting
their time and resources into a project that is not going to have a substantial MVP for quite
some time. The altering of the software after the development can be lengthy, and in some
cases impossible to complete after the product reaches a certain point in development.
The RAD model is much more effective because it gives the customer a working model
much sooner. The customer can quickly review the prototype, talk to investors in the meantime,
showing them what the product would look like, and make changes much more easily. Granted,
the speed isn't always the best choice to go with - especially when your product is at the later
stages of its development, and features get more complicated. For the beginning phases, it can
be a good start.
Developers work as individuals (often results in Agile teams focus on communication and
unmaintainable and poorly designed code) developing the product as a team
Application
Given the following types of system softwares identify the different processes and
stages that can be done to develop them.
Software Processes/Stages
Example: Business Modelling – identification of the
Transaction Processing System different processes involve in the conduct of
all transactions in the business.
Data Modelling –
Etc..
Mobile Application
Topic 3.
Spiral Model
Learning Outcomes:
At the end of this unit, you are expected to:
Tell what is spiral model and its different stages
Determine the different softwares that can be develop using spiral model
Presentation of Content
What is spiral model?
The spiral model is an evolutionary software process model that couples the iterative
nature of prototyping with the controlled and systematic aspects of the linear sequential model.
It provides the potential for rapid development of incremental versions of the software. Using
the spiral model, software is developed in a series of incremental releases. During the early
iterations, the incremental release might be a paper model or prototype. During later iterations,
increasingly more complete versions of the engineered system are produced. Each loop of the
spiral is called a Phase of the software development process. The exact number of phases needed to
develop the product can be varied by the project manager depending upon the project risks. As the
project manager dynamically determines the number of phases, so the project manager has an
important role to develop a product using spiral model.
Each phase of Spiral Model is divided into four quadrants as shown in the above figure. The
functions of these four quadrants are discussed below-
Risk Handling: The projects with many unknown risks that occur as the development
proceeds, in that case, Spiral Model is the best development model to follow due to the
risk analysis and risk handling at every phase.
Good for large projects: It is recommended to use the Spiral Model in large and
complex projects.
Flexibility in Requirements: Change requests in the Requirements at later phase can be
incorporated accurately by using this model.
Customer Satisfaction: Customer can see the development of the product at the early
phase of the software development and thus, they habituated with the system by using
it before completion of the total product.
Complex: The Spiral Model is much more complex than other SDLC models.
Expensive: Spiral Model is not suitable for small projects as it is expensive.
Too much dependable on Risk Analysis: The successful completion of the project is very
much dependent on Risk Analysis. Without very highly experienced expertise, it is going
to be a failure to develop a project using this model.
Difficulty in time management: As the number of phases is unknown at the start of the
project, so time estimation is very difficult.
Application
Using the stages in the Spiral model, develop a sample software project that will fit
the stages in the model.
Topic 4.
Agile Development Model
Learning Outcomes:
At the end of this unit, you are expected to:
Tell what is agile development model and its different stages
Determine softwares that can be develop using this method
Apply agile development model in developing softwares
Presentation of Content
What is agile development model?
In earlier days Iterative Waterfall model was very popular to complete a project. But
nowadays developers face various problems while using it to develop a software. The main
difficulties included handling change requests from customers during project development and
the high cost and time required to incorporate these changes. To overcome these drawbacks of
Waterfall model, in the mid-1990s the Agile Software Development model was proposed.
The Agile model was primarily designed to help a project to adapt to change requests quickly.
So, the main aim of the Agile model is to facilitate quick project completion. To accomplish this
task agility is required. Agility is achieved by fitting the process to the project, removing
activities that may not be essential for a specific project. Also, anything that is wastage of time
and effort is avoided.
Actually Agile model refers to a group of development processes. These processes share some
basic characteristics but do have certain subtle differences among themselves. A few Agile SDLC
models are given below:
Crystal
Atern
Feature-driven development
Scrum
Extreme programming (XP)
Lean development
Unified process
In the Agile model, the requirements are decomposed into many small parts that can be
incrementally developed. The Agile model adopts Iterative development. Each incremental part
is developed over an iteration. Each iteration is intended to be small and easily manageable and
that can be completed within a couple of weeks only. At a time one iteration is planned,
developed and deployed to the customers. Long-term plans are not made.
Agile model is the combination of iterative and incremental process models. Steps involve in
agile SDLC models are:
Requirement gathering
Requirement Analysis
Design
Coding
Unit testing
Acceptance testing
To establish close contact with the customer during development and to gain a clear
understanding of various requirements, each Agile project usually includes a customer
representative on the team. At the end of each iteration stakeholders and the customer
representative review, the progress made and re-evaluate the requirements.
Agile model relies on working software deployment rather than comprehensive
documentation.
Frequent delivery of incremental versions of the software to the customer
representative in intervals of few weeks.
Requirement change requests from the customer are encouraged and efficiently
incorporated.
It emphasizes on having efficient team members and enhancing communications among
them is given more importance. It is realized that enhanced communication among the
development team members can be achieved through face-to-face communication
rather than through the exchange of formal documents.
It is recommended that the development team size should be kept small (5 to 9 peoples)
to help the team members meaningfully engage in face-to-face communication and
have collaborative work environment.
Agile development process usually deploy Pair Programming. In Pair programming, two
programmers work together at one work-station. One does coding while the other
reviews the code as it is typed in. The two programmers switch their roles every hour or
so.
Due to lack of formal documents, it creates confusion and important decisions taken
during different phases can be misinterpreted at any time by different team members.
Due to absence of proper documentation, when the project completes and the
developers are assigned to another project, maintenance of the developed project can
become a problem.
Application
Identify the strengths and weaknesses of the agile development model
STRENGTHS WEAKNESSES
Topic 5.
Prototyping Model
Learning Outcomes:
At the end of this unit, you are expected to:
Tell what is prototyping model and its different stages
Name the different softwares that can be develop using the prototyping model
Presentation of Content
What is prototyping model?
Often, a customer defines a set of general objectives for software but does not
identify detailed input, processing or output requirements. In other cases, the developer may
be unsure of the efficiency of an algorithm, the adaptability of an operating system, or the form
from human/machine interaction should take. In these case, and many other situations, a
prototyping paradigm may offer the best approach. The prototyping model is a systems
development method in which a prototype is built, tested and then reworked as necessary until
an acceptable outcome is achieved from which the complete system or product can be
developed. This model works best in scenarios where not all of the project requirements are
known in detail ahead of time. It is an iterative, trial-and-error process that takes place
between the developers and the users.
Customers get a say in the product early on, increasing customer satisfaction.
Missing functionality and errors are detected easily.
Prototypes can be reused in future, more complicated projects.
It emphasizes team communication and flexible design practices.
Users have a better understanding of how the product works.
Quicker customer feedback provides a better idea of customer needs.
The main disadvantage of this methodology is that it is more costly in terms of time and money
when compared to alternative development methods, such as the spiral or waterfall model.
Since in most cases the prototype is discarded, some companies may not see the value in taking
this approach.
Application
Using the model of prototyping above, choose a sample software you want to develop. Identify
the requirements needed to develop the system. Create a sample prototype of the system you want to
develop.
Feedback
Using the different software models discussed in this topic, identify their strengths and
weaknesses and give also examples of software that can be developed using them.
Development Model Weaknesses Strengths Sample Software
Waterfall Model
Rapid Application
Development
Spiral Model
Agile Model
Prototyping Model