Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Steven Budzinski
3) Coding Phase: In this middle phase, the code is C) Maintenance of the Software
finally written. Now that the project has been broken After the release of the software, work is still done on
down from the two previous stages, the software the actual software. Dr. Edward Ogheneovo of the
developer can readily develop “low level design” codes Department of Computer Science at the University of
that each pertain to a different part of the software; some Port Harcourt, Nigeria describes software maintenance
examples may include database tables (matrices of as “the process of modifying existing operational
information), interface tables (tables in which the user software by correcting errors, migration of the software
inputs information), error messages, and input and to new technologies and platforms, and adapting it to
output modules [2]. Now that the code is written, testing deal with new environmental requirements” [10]. In
can begin. essence, it includes any changes made to a software
product before (if the timeline of development is long
enough in which already written code needs to be
adjusted to contemporary operating systems) or after
Budzinski 3
delivery to the customer or user. As software products model avoids the negative effects of an early stage
are used, faults must be discovered, operating problem and reduces cost for fixing the defect in
environments may change, and new user requirements question [3].
will surface. In fact, most maintenance processes are
often requested by software users themselves [10]. 2) Disadvantages of the V Model: While the V model’s
Software maintenance, although dependent on what rigid design may make finding defects easy, the model is
needs to be fixed (specified by either a complaint or a very inflexible when it comes to changes in
noted problem), can be divided into four distinctions: requirements. For large scale operations that use a
plethora of documentation, “if any changes happen
1) Corrective Maintenance: This type of maintenance midway, not only the requirements documents but also
involves the software product after delivery to correct the test documentation need to be updated” which could
errors or to fix bugs in the software. Usually, in result in loss of time and/or money [1].
corrective maintenance, errors are corrected, and the cost
of corrective maintenance is taken on by the developer 3) When Should the V Model be Used? Since the V
[10]. Typically, if a user were to request maintenance on Model is so rigid in it its development ideology, it likely
the system, corrective maintenance is normally required. should not be used for any type of project in which the
customer needs are likely to change [1]. That being said,
2) Adaptive Maintenance: Modifications to the a project in which the requirements are set in stone and
software as a result of changes in operating outlined from the start of the project are likely to use the
environments falls under adaptive maintenance, to V model. Also, since the process is typically done by a
ensure that the software is still applicable to its variety of engineers (for example a system engineer for
environment after delivery. Such changes may include the systems design) with their particular contributions
“result[s] of database upgrades, operating system being separated, it can be done in projects in which the
upgrade[s], changes in compiler version, etc.” [10]. particular developers are not physically collocated.
Usually, the organization requesting for adaptive
maintenance bears the costs as the software developer III. Agile SDLC
was originally only responsible for the environment,
they created the software in [10]. A) Agile SDLC Origin and Basis
Contrary to the V model development, the Agile SDLC
3) Perfective Maintenance: Perfective maintenance does not focus on a strict plan. Rather than adhering to a
often involves alterations in the code that still allow for more traditional style of development, the Agile SDLC
the code to meet the same requirements, but in a places lesser emphasis on process and documentation
significantly more acceptable manner. While the product and pays more emphasis on quickly developing products
may be deemed functional, perfective maintenance is and satisfying customers by incorporating their changing
down to increase the performance of a software [10]. needs [3]. The SDLC is built on the 12 principles of the
Agile Manifesto and was created by a group of 17
4) Preventive Maintenance: In preventive maintenance, software practitioners in 2001 to scribe their common
software is usually modified after the delivery to detect ideology [5]. Their main philosophy can be designated
and correct latent faults before they become effective into the ideas of
faults [10]. Latent faults are errors that have not
presented themselves yet. Active faults are errors whose 1) Individuals and interactions over processes and
faults are openly displayed and seen by the user. In this tools
last type of maintenance, developers try to fix the
problems before they surface by looking into 2) Working software over comprehensive
problematic conditions that could breed bugs. documentation
1) Advantages of the V Model: Since this model is so 4) Responding to change over following a plan. [5]
test heavy, defects in the software are fixed in a narrow
to broad fashion. In other words, since the coding testing These pillars can also be further broken down into the 12
occurs before the systems testing, the systems testing principles of the Agile Manifesto which include:
strictly looks at systems requirements rather than
worrying about defects in the code [10]. As such, the V
Budzinski 4
1) Our highest priority is to satisfy the customer coding, and so on work simultaneously” [7]. The design
through early and continuous delivery process can be viewed in Fig. 3, where requirements
of valuable software. analysis and design phases, are accumulated into the
high-level planning bubble.
2) Welcome changing requirements, even late in
development. Agile processes harness change for
the customer's competitive advantage.
interact with. After, the code is created maintenance may although the Agile ideology may increase customer
be done on it, but Agile software maintenance can be satisfaction due to lack of contract, the same lack of set
generalized under the general code maintenance above in requirements and goals of a contract, may make
Section 2, Part C. companies wary to use the Agile SDLC.
SDLC, however he writes that the Spiral Method has B) Spiral Software Development Process
been “evolving for several years, based on experience
with various refinements of the waterfall model” [14]. In 1) Objective Identification: In this first stage of the
his paper, Boehm first described the flaws of four Spiral SDLC the objectives of the project being
existing SDLC: the Code and Fix Model, the Stage-Wise developed are determined, with “the performance,
and Waterfall models, the Evolutionary Development functionality, and ability to accommodate change being
Model, and the Transform model. Boehm then proposes evaluated” [14]. Developers also look into potential
the Spiral Model as a solution for the weaknesses of the alternates to the current means of implementation, such
previous four approaches while simultaneously utilizing as looking into reusing old software, or buying new
the strengths of each of the other models [17]. software. The cost of the project and other constraints
(e.g. time) are also analyzed during this phase. At the
According to Dr. João M. Fernandes from the end of this quadrant, alternative solutions are proposed.
Universidade do Minho, the Spiral SDLC is a system
“based on a risk-driven approach” where a risk is 2) Risk Evaluation: In this second stage of the Spiral
defined as a potentially adverse circumstance that can SDLC, the alternative solutions of the first step are
have negative or perverse effects in the development evaluated and the best is chosen [15]. Once chosen, the
process and on the final quality of the system [15]. In best solution will be evaluated for various risks
other words, a risk is a measurement of the uncertainty (measurements of the uncertainty in achieving the
in achieving the desired objective or meeting project desired objective or meeting project requirements). Once
requirements. As can be seen in Fig. 4, the Spiral Model the risks are identified, the risks are resolved through
gets its name from the spiral shape of its development, “prototyping, simulation, benchmarking, reference
with the radial dimension representing the cumulative checking, administering user questionnaires, analytic
cost of the project up to that point, and the angular modeling,” or any combination of these risk mediating
dimension representing the progress of the entire project. methods [14]. At the end of this quadrant, a prototype
It should be noted that some of the lines representing the should be created.
increasing cumulative cost dimension are drawn with
larger spacing than normal to increase legibility, 3) Development and Testing: Once the risks have been
meaning that a normal spiral mapping of a project would identified and resolved, the development of the software
have a line with a strictly increasing radius [14]. begins. Based off the previous step of risk analysis, the
developers work towards a new, successful prototype in
a method similar to both the V model, and the Waterfall
Model. In this stage “design, coding, testing, delivery,
and evaluation” are all completed [15]. At the end of this
stage a working iteration of the software should be
finished, and ready to be presented and reviewed in the
next phase
product would require too much time for refinement, and “risk driven” approach, the Spiral SDLC is also useful
risk a competitor releasing the software first, they may for high risk software such as rocket propulsion, where
decide to terminate the Spiral SDLC and release the numerous variables could cause the project to fail. The
software. It is also of note that once the project is Spiral SDLC should also be used in scenarios where the
deemed finished and no other iterations are to be developers are in close contact with the customers and
completed, the completed software may undergo those authorizing the project due to the need to end each
software maintenance previously described in Section successive cycle with approval of those funding and
II.C. sponsoring the project [15]. In tandem with a changing
requirements list, the Spiral SDLC should be used when
C) Analysis of the Spiral SDLC there is a possibility for funding changing. Again, since
each iteration requires more money, if a project manager
1) Advantages of the Spiral SDLC: Since the Spiral were to cut funding after a certain iteration, the then
SDLC is made up of multiple iterations, data from early prototype could become the final product.
iterations can be used as inputs into later model, and the
model can be used to estimate the time and cost of V. Personal Reflection
project completion while decreasing the development Coming into my first college Computer Science class, I
time through utilization of previous prototypes [16]. The would say that my confidence in my programming skills
Spiral SDLC also focuses on the early removal of errors was near nothing. Previously, I had taken a rather basic
and poor alternatives early in the development as the high school programming class (Microsoft Visual
iterative nature of the process forces the developers to Basic), however, it was more centered on aesthesis
analyze their prototypes constantly [15]. rather than the logical arguments that exist within a
complex computer language. Thus, I was apprehensive
2) Disadvantages of the Spiral SDLC: Since the model to learn my first computer language at a college level.
also represents multiple iterations of the same product, However, through intensive study, practice, and failure, I
customer satisfaction is increased, as the customer can continue to become more confident in my programming
better delineate exactly what end product he or she skills. Primarily, I was worried about the extensive list
wants. It is of note that - like the Agile SDLC - because of commands and syntax that I thought I had to
there are multiple iterations of the product, the company memorize. I learned quite quickly though that since the
may not want to implement the Spiral SDLC due to the assessments allowed for cheat sheets and access to the
flexible nature of the Spiral method in contrast to a rigid MATLAB database, I did not have to memorize the
contract [15]. The Spiral SDLC is also heavily reliant on extensive encyclopedia of commands used throughout
developers’ ability to successfully analyze risk; for the class. Yes, it did save precious time on assessments
example, if a development team is too inexperienced to to know the commands off of the top of my hand, but it
properly assess how much risk is associated within the was not a necessity. Rather, I found it to be much more
next cycle, the project may appear to be more advanced important to understand the program’s flow and logic, as
than it actually is. The Spiral SDLC is also considered to minor typos in computer code can be readily detected by
be one of the more complex SDLCs, making it harder to the internal error detection system while a logic-oriented
implement among inexperienced software developers problem may not be detected and will be harder to find
[17]. It is also of note that if the developers are not and correct. Furthermore, I would recommend to
adequately experienced in the Spiral SDLC, the cycle incoming students to be sure to study the logic of the
could go on for longer than necessary, potentially examples, and to practice the examples on their own
draining precious time and money. time. In my own experience, I could get through the
earlier assignments simply by memorizing and
3) When should the Spiral SDLC be used? As regurgitating the simple examples done during the
articulated in Section IV.C.2., the Spiral SDLC has a recitation; during the later assessments though, I noticed
large learning curve, and as such may not be suitable for an increased need to fully understand the “why” instead
large software projects that need a large amount of of the “what” for coding.
developers, since some developers may not be
experienced in the Spiral SDLC [15]. However, with an From this ideology, I have begun to develop an intuition,
adequate number of experts developing the software, this although imperfect, on how to solve the assessments. In
project may be suitable for projects that have flexible or my experience, I have begun to realize that the
changing project requirements, as each iteration may assessments typically asked for multiple parts, and as
better help the customer to decide on exactly what it is such, were reliant on previous answers. Thus, I will
that they want for the end product. Since the model is a typically write out a pseudocode first to see where and
Budzinski 8
when I want to implement lines of code, so that I can multiply the inverse by another vector; ultimately, this
visually see the connections between the input variables was a fairly straightforward task.
and the later steps. Furthermore, I find it more efficient
to fix any problems in the code with the pseudocode
method, as I can visualize what output should be
produced at the different steps of the code. It is of note
that the size of the code also impacts my intuition. If
given a problem with multiple parts (or even multiple
problems within the assessment) I will always write out
all of the pseudocode first, so that I can navigate the
different parts of the problem. Often, the night before the
assessment I will outline the major programming
features or new functions, and then I will connect them
to my pseudocode during the assessment. However, if
the assessment asks for a quick function that I can
quickly recall from my mind, I will quickly code it while
the question is still fresh in my mind.
Fig. 6: Code Taken from a MATLAB Script File impossible to determine exactly if the program is bug
free.
Surprisingly, learning to program has changed how I
view problems presented from my English courses more When Castle and her group were planning and
than my core STEM courses. Before I learned how to developing the program, they met with their sponsors
program, I typically solved problems in my English class frequently along with a retired software engineer.
(writing essays for a specific prompt) in a similar way According to Castle, the retired software engineer
that I initially wrote code: I wrote without a clear heavily advised the grouped to use the Waterfall SDLC,
intention, and after I wrote the complete essay, I would but in practice the group hardly ascribed to it. Instead,
go back and fix all of the glaring issues. After learning to Castle said she would have rather developed the
program though, I have gained a new perspective on software in a more Agile way, as it fit their process
how an early problem, or a repetitive problem can closer; the group often met with their customer, and had
quickly diminish the final product. Continuing with the to make many iterations of the program, which closely
essay example, if I were utilizing a specific piece of aligns with the Agile SDLC. Indeed, their product was
evidence all throughout the essay, and only in the later successful, but Castle was skeptic that it was due to their
stages of editing realized that it did not match what the SDLC. Instead, she stated that she thought that a SDLC
essay was looking for, I would have to overhaul the was impractical for a Capstone project and was more
entire piece. Similarly, if I were to read the problem applicable to a group of developers who worked with
statement incorrectly, and only discovered that I was each other over the span of multiple projects.
coding for the wrong task when I reached testing, I
would have to rework the entire program. Now that I On the idea of development, Castle said her team
have learned to program, I have realized the importance managed their time, costs, and information using their
of outlining and ensuring that I fully understand the “triple constraints”. First off, she said that the group
problem statement so as to save time later. managed their time by creating a development time line
which set deadlines for the group to follow. From there,
VI. Senior Capstone Analysis the group spent about two months planning out what
Since 2010, the senior Capstone design competition would be done to implement the software and then one
utilized a website-based software to aid in the judging month executing the code and bug fixes. Castle also said
process of the competition. The old system was limited that her group was used to pouring a great deal of time
in its capabilities in that the scoring data only displayed into projects, which meant that the group often stayed
the total votes cast for each group, which led to a need ahead of schedule and did not fall behind on deadlines.
for hand calculations to break ties. Thus, the host of the The one exception fell on the day of the presentation in
event, the Learning Factory, requested for an overhaul of which Castle still made bug fixes in the hours prior to
the judging system which was tasked to this Capstone the competition. For money, the group, like every other
group. Some of the requirements for the project included Capstone group, received $1000 for their project. Castle
creating a website-based software that could intake data said that they hardly needed that much and used their
from both judges and the public, computing winners in a surplus to buy a router in which the website could run
manner expected from the Learning Factory, and then on. They did in fact have to buy a card swiper along with
presenting it in an easy to read output. The current a poster board, but since most of their work was done
system also had eight sets of judges, and another digitally (contrary to other Capstones that produced
requirement was to add two additional sets of judges. physical projects), money was not an issue. For
The Learning Factory also wanted the software to managing information, the group often had to meet with
operate on its own network on iPads and laptops. their customers to delineate exactly what they wanted, as
the group often disagreed on interpretations. Overall
Taken from Castle Leonard, one of the developers of the though, they managed their information as they planned
software, the project was satisfactorily completed, but it out; in other words they would approach a particular
she still wished they had more time to plan, or had used customer need when they reached that step in planning.
their time more efficiently. Regardless, she said she was
very happy with their final product. She also stated that When asked about the project holistically, Castle said
she wished some other group members had pulled their she was glad she had the experience as it cemented what
weight more during coding, but that they made up for it she wanted to do in the future, while offering her lessons
in the poster presentation. Although satisfactory, Castle outside of the classroom. Only one group member had
is still looking to iron out more bugs, which seems to ever had experience with implementing software for a
follow the normal maintenance of software, as it is real-world application, so she said the group learned a
Budzinski 10
variety of lessons in translating classroom knowledge how learning to program has affected his other classes.
into the real world. Regarding development, she said that Specifically, lines of code on a program do not directly
she learned lessons in both teamwork and customer translate to the difficulty of the code, and that it is
interaction, specifically that sometimes the customer always advisable to understand the logic and “why”
does not know exactly what they want. To highlight this behind a piece of computer code rather than being able
lesson, Castle gave the example of how the original to regurgitate commands and syntax. Through his
judging system was reliant on a color-coded system that studies, the author also felt confident enough to analyze
made the hand calculations easier to keep track of. When a Capstone project (in which he, its judges, and one of
this was translated to a digital system there was no the developers found to be a success) and comment on
longer a need for color association, the customer still the development process of the Capstone project.
wanted to have it, even though there was no need for it
anymore. For teamwork, she spoke to how she learned VIII. Acknowledgements
that sometimes it was better to mark out certain I would like to foremost thank Brad Sottile for his
“territory” that members would stick to and to let them several reviews of this document, along with his
run their course, instead of trying to collaborate on every guidance and wisdom regarding software development
single section of the project. Too much collaboration and how to conduct in depth and credible research. I
would have used up too much time, she said. would also like to thank Castle Leonard for meeting with
me to discus her Capstone project, and answer questions
Overall, the sponsor was exceptionally happy with the regarding the success of it.
final product evident by the $100 gift each group
member got for their hard work. Castle and another
group member were also asked to upkeep and improve
upon the software so that it could be utilized for future
Capstone fairs. Castle’s group also added on two other
features that were not required – data tracking and
reminders for judges – that were widely appreciated by
the sponsor. Based off of the sponsor’s reaction, and the
judges awarding second place to this Capstone, the
project was a success. Not only did the project exceed
expectations but is expected to continue working well in
the future.
VII. Conclusion
Although the V model is older than the Agile SDLC,
they each still have their merits and applications [13].
While the V model is better suited for more rigid
projects with a customer more inclined to only focus on
the final design, the Agile SDLC is better for changing
requirements, and is better for closely working with a
customer throughout the software development process.
Similarly, the Spiral SDLC implements a risk driven
approach that acts as a hybrid of sorts between the V
model and the Agile SDLC. While the Spiral SDLC does
involve customer interaction after each iteration, giving
it flexibility, it also invokes a more rigid style of
development in testing like the V model. All three
models, however, still require maintenance after release,
on the grounds that not all bugs may not be caught
before release, and because the software may need to be
altered to better fit new operating systems or platforms
[10]. Through his study of various SDLCs the author has
learned what SDLC he most closely relates to (the Agile
SDLC) and is confident enough in his own skills to give
tidbits of advice pertaining to programming and to share
Budzinski 11
IX. References
[12] Patanakul, Peerasit, and Renee Rufo-McCarron.
[1] Regulwar, Ganesh B. et al. “Variations in V Model “Transitioning to Agile Software Development: Lessons
for Software Development.” International Journal of Learned from a Government-Contracted Software.” The
Advanced Research in Computer Science, vol. 1, no. 2, Journal of High Technology Management Research, vol.
2010, pp. 1–3. 29, no. 2, Nov. 2018, pp. 181–192.
[2] Darwish, Mohamed, and Essam Shehab. [13] Jacklin, Stephen A. “Survey of Verification and
“Framework for Engineering Design Systems Validation Techniques for Small Satellite Software
Architectures Evaluation and Selection: Case Development.” NASA, NASA, 19 May 2015,
Study.” Procedia CIRP, vol. 60, 2017, pp. 128–132., ntrs.nasa.gov/search.jsp?R=20150010982.
doi:10.1016/j.procir.2017.01.058.
[14] Boehm, B. W. “A Spiral Model of Software
[3] Stecklein, Jonette M. “Error Cost Escalation Through Development and Enhancement.” Computer, vol. 21, no.
the Project Life Cycle.” NASA Technical Reports Server, 5, 1988, pp. 61–72., doi:10.1109/2.59.
NASA, 19 June 2004,
ntrs.nasa.gov/search.jsp?R=20100036670. [15] “Spiral.” Requirements in Engineering Projects, by
João M. Fernandes and Ricardo J. Machado, Springer,
[4] “White Box Testing.” Software Testing 2016, pp. 41–42.
Fundamentals, Software Testing Fundamentals, 3 Mar.
2018, softwaretestingfundamentals.com/white-box- (16) Mizell, Carolyn, et al. “Model for Simulating a
testing/. Spiral Software-Development Process.” NASA Technical
Reports Server, 1 July 2010,
[5] Misra, Subhas. “Agile Software Development ntrs.nasa.gov/search.jsp?R=20100024427.
Practices: Evolution, Principles, and Criticisms.” The
International Journal of Quality & Reliability [17] Nilsson, Andreas, and Timothy L
Management; vol. 29, no. 9, 2012. Wilson. Reflections on Barry W. Boehm's "A Spiral
Model of Software Development and Enhancement", vol.
[6] “Agile Principles.” Template - 5, no. 4, 2012, doi:10.1108/17538371211269031.
Kleo.wagenaardentistry.com,
kleo.wagenaardentistry.com/agile-principles/.