Sei sulla pagina 1di 11

Budzinski 1

Analysis of Various Software Development Practices

Steven Budzinski

Abstract functions it was designed to perform” [13]. Validation


This paper explores three different types of software on the other hand is “the testing performed to prove that
development cycles: the traditional V model, the more the verified code meets all of its requirements in the
recent Agile Software Development Life Cycle (SDLC), target system or platform” [13]. The V is split into two
and the classical Spiral SDLC. The V model is a specific different branches with verification techniques occurring
SDLC that is heavily reliant on planning and then on the left branch of the V and the validation techniques
executing certain tests to be carried out after the code is used on the right branch of the V. As can be seen in Fig.
written. The development starts with broad analysis of 1, a more detailed layout of the design is depicted, with
requirements, trickles down into a system analysis, is events proceeding along the bolded arrows to the right in
coded, and then is unit tested, system tested, and finally chronological order [1]. Although not particularly
user tested. A more contemporary type of software included in either the V model, the Agile Software
development cycle is the Agile SDLC which is based on Development Life Cycle (SDLC) or in the Spiral SDLC,
the concept of producing multiple iterations of the software maintenance “forms an essential component of
software until the customer is satisfied with the result. It software development” as there is a constant “demand of
is developed by individuals who take on multiple roles users to ensure that existing software products run on
(coding, testing, infrastructure etc.) and who work newer platforms, run on newer environments, and [run]
closely with the customer to delineate exactly what the with enhanced features” [10]. Described in Section III is
customer wants. A third type of software development the Agile SDLC which is based off of the principle that
methodology is the Spiral SDLC, which acts as a the customer is likely to change their requirements
medium between the two aforementioned Software throughout development, and thus multiple iterations are
Development Strategies. In this risk driven type of produced, so that the customer can tailor the software to
software development, the developers seek to first look their exact needs. Described in Section IV is the Spiral
for pre-existing software to use, and then move into SDLC which is named after the spiral shaped path that
coding and testing after calculating the risk of various the development takes. It, like the Agile SDLC, works as
facets of the software. It, like the Agile SDLC, is an an iterative process and is flexible to changes in
iterative process in which customer feedback is utilized. customer needs and budget changes. Stated in Section V
This paper also includes a personal reflection on gained is a personal reflection on the author’s preference to the
confidence, advice for future students, SDLCs the author Agile SDLC, along with with other advice and insight to
most closely relates to, a discussion regarding CMPSC 200 students, based off of the author’s personal
complexity and lines of code, and how the author views expierences. Section VI includes an analysis of a
problems in other courses. Finally, this paper analyzes capstone project tasked with updating the website based
one particular Capstone project that was centered on syestem used by judges during the actual Capstone
updating the outdated scoring system used at the design showcase.
Capstone design fair.
II. The V Model
I. Introduction A) Verification
Software development cycles are set processes software The verification half of the V is split into several
developers use to create software. While there are many different steps and acts as the path from customer needs
ways to develop software, both planned and unplanned, to actual coding. Software verification is defined as the
this essay explores several methods of specific software “testing performed to check that the progressive
developments. Section II is one particular model of decomposition of requirements to code has been done
software development called the V software correctly” [13].
development cycle, named not only after its shape (a V
shape) but also after the V in verification, and the V in 1) Requirements Definition Phase: In the requirements
validation. Stephen A. Jacklin of the NASA Ames stage, the user needs of the project are delineated.
Research Center defines software verification to be “the Typically, this is done by directly interviewing the
testing done to make sure the software code performs the stakeholders of the project, which typically consist of
Budzinski 2

users and the employing party, to find the system’s B) Validation


“functional, physical, interface, performance data, and Software validation is defined as the testing of a piece of
security requirements” [1]. In essence, the requirements integrated software code that proves that it meets the
definition phase is preliminary to all other steps to system requirements [13]. In other words, in the
ensure that the project meets the requirements and validation phase the software is tested and goes from
ensures that the development team has a clear idea of the small unit testing to make its way up to a polished
goals and expectations for the final product. product that correctly interacts with the user.

1) Unit Testing: In this low-level stage of testing, basic


algorithms in the code are evaluated and bugs are fixed,
albeit, not all bugs can be completely ironed out for
certainty as a software may appear to preform
proficiently through testing, but users may find errors
later on [10]. In other words, the software developer can
never fully demonstrate that the software is free of bugs.
As software development expert Barry Boehm states, “a
fault discovered and corrected in the unit testing phase is
more than a hundred times cheaper than if it is done after
customer delivery” [3]. The tester also verifies that the
code is efficient, and is typically done in a “white box
fashion which typically consists of the software
Figure 1: A Visual Representation of the V Model [1] developer having knowledge of which internal structure,
design, or implementation of the item is being tested [4].
2) System Design/ Architecture Design Phase: In this By using this testing method, the tester(s) can directly
next phase, the user requirements are refined into broad find the root of any problems and quickly resolve them.
ideas of how the coding will take shape and look.
Mohammed Darwish from Cranefield University states 2) System Testing: In this penultimate step, the
that systems architecture “provides the strategies and software is tested to see if the different modules
modelling approaches to ensure that adequate resources communicate effectively with each other, and how the
are spent in developing the possible software” [2]. overall system interacts with the user. System testing is
Basically, software developers use this phase to map out done to compare the system specifications to the system
how they want to approach coding the project and ensure itself, meaning that testing is done to make sure that the
that the structure is logical and visually appealing. actual software is holistically polished and finished [1].
During this phase lists of graphs, variables, and other
software specific data is compiled so that they can be 3) User Acceptance Test: In this stage, final checks are
directly implemented into the coding stage. Here, what is done on the software to determine acceptance by the
called the software specification document (information customer. Initial requirements are revisited, and some
containing the general system organization) is drafted, procedural examples including reviewing interface
and acts as a visual idea of what the software will look quality and software quality requirements, along with
like [2]. user and customer expectations are reviewed [1].

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

D) Analysis of the V Model 3) Customer collaboration over contract negotiation

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.

3) Deliver working software frequently, from a


couple of weeks to a couple of months, with a
preference to the shorter timescale.

4) Business people and developers must work


together daily throughout the project.

5) Build projects around motivated individuals.


Give them the environment and support they need,
and trust them to get the job done.

6) The most efficient and effective method of


conveying information to and within a development
team is face-to-face conversation. Figure 2: Visual Representation of the 12 Agile
Principles [6]
7) Working software is the primary measure of
progress. The cycle begins with an initial planning stage, which
locates the details about the software features, and which
8) Agile processes promote sustainable defines the goals in high-level planning. Once the
development. The sponsors, developers, and users project goals are set, the developers start coding for the
should be able to maintain a constant pace required feature, and when the developers are finished,
indefinitely. the testing team (also known as the QA team) starts
executing both unit and integration testing. From there,
9) Continuous attention to technical excellence if any bugs are found, they are fixed immediately, and
and good design enhances agility. then the code is delivered for client testing (that is, on
stage or the pre-production environment) [7]. It is an
10) Simplicity is the art of maximizing the amount important distinction to make that at this stage, the code
of work not done is essential. is not released yet; the code is only delivered to the
client for feedback, so that the developers can make
changes to the software before it is fully released. As
11) The best architectures, requirements, and
Gerry Coleman, Software Engineering Professor at the
designs emerge from self-organizing teams.
Dundalk Institute of Technology, states, “Agile
development focuses on early delivery of working
12) At regular intervals, the team reflects on how software and aims to get the product into the hands of
to become more effective, then tunes and adjusts the customer as quickly as possible” [8]. This iterative
its behavior accordingly” [6]. process of producing a working copy for the customer to
interact with, not only increases customer satisfaction,
The Agile philosophy can be visualized in Fig. 2 [6]. but also results in a software that more closely aligns
with what the customer wants. Should the customer want
B) Agile Software Development Process to alter the produced software, the Agile process simply
runs another cycle of the above steps until the customer
In Manish Sethi’s textbook Cloud Native Python, he is satisfied with the end result. Should the code pass all
describes the Agile SDLC as “different phases, all client-based testing, such as UI based testing, then the
modules or features [which] are delivered in iterations, code is pushed to production [7]. UI is an abbreviation
and cross-functional teams from various areas such as for User Interface, and consists of everything (the
planning, unit testing, design, requirement analysis, mouse, keyboard, desktop, and screen) that the user can
Budzinski 5

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.

2) Disadvantages of the Agile SDLC: One of the


requirements for cycle functionality is to periodically
interact with the customer; although it may be
advantageous for the customer to personally decide what
software they want the most, a customer may not want
the time commitment that comes with periodic review of
iterations [9]. Also, since each software developer is
responsible for virtually all steps of a traditional
development life cycle (programming, testing, analysis,
database administration, user experience, and
infrastructure), oftentimes testing can become a
bottleneck of sorts for Agile projects developing safety
critical systems; the reason being that testing has to be
done very often and at the same time exhaustively
because each iteration needs to be safe enough to
interact with [9].
Figure 3: A Visual Representation of the Agile Software
Devlopment Life Cycle [7] 3) When Should the Agile SDLC be Used? Since the
Agile SDLC is pillared by customer interaction, it
C) Analysis of the Agile SDLC should be used when a customer is willing to actively
take part in the software development [11]. Should the
1) Advantages of the Agile SDLC: In the Agile SDLC customer want to give a contractual set of requirements
each functionality is developed and demonstrated at the beginning of development cycle, and leave the
quickly and frequently in order to produce features with developers to complete it, the Agile SDLC should not be
minimal bugs until its deployment [9]. Instead of the used, as the customer will only receive one iteration of
traditional method of software development (such as the software, instead of the many iterations prescribed
what can be found in the V Model), the actual testing for by the Agile method. Software developers with
bugs is done during all throughout the Agile SDLC to diversified abilities are also emphasized in the Agile
ensure that the product can be created as fast as possible. SDLC, as they must take on a variety of responsibilities.
This method differs from the traditional V Model As such when a cross-functional team is employed for
approach of assigning a particular stage during the an Agile project, collaboration is fundamental for
Software Development Cycle to test for bugs. Thus, this success and is a necessary component of the whole-team
bug fix requires minimal documentation as the bugs do approach [8]. On that, the Agile Software Development
not have to be recorded for a later phase that is devoted Process dictates that collaboration is done with
to bug testing [9]. collocation to allow for increased efficiency of the
development process. When workers share the same
There does not exist a separate team for development, workspace, informal contact becomes more
testing, etc.; instead, there exists a single team, which straightforward and efficient [8]. Should a development
consists of 8-10 members (based on the requirements), team be spread apart, the collocation aspect may be loss,
and each member is capable of doing everything [7]. and a more traditional method (like the V Model) may
Some skills that team members may have include be better suited.
“programming, testing, analysis, database
administration, user experience, and infrastructure, IV. Spiral SDLC
among others” [8]. Again, the Agile SDLC’s third
philosophical point is to prioritize “customer A) Spiral SDLC Origin and Background
collaboration over contract negotiation”; to best increase
customer feedback (and eventual satisfaction), the Agile Barry Boehm is credited for first writing a formal paper,
SDLC, needs to be iterative, and output many variations, Spiral Model of Software Development and
in their development window [6]. It is of note, that Enhancement on the Spiral Software, on the Spiral
Budzinski 6

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

4) Next Iteration Planning: In this final stage of the


Spiral SDLC, the software is reviewed. This review
covers all products developed during the previous cycle;
this step also includes plans for the next product cycle
and predicts the resources required to carry the next
cycle out [15]. The primary objective of the review is to
ensure that all parties involved (the customer, the
developers, and the project manager) are mutually
committed to the approach for the next phase. The plans
for succeeding phases may also divide the product into
separate increments to be developed by other individuals
or other groups of individuals [15]. Continuing on the
Figure 4: A Visual Representation of the Spiral Software idea of risk, the Spiral SDLC is terminated when the
Devlopment Life Cycle [14] developers deem the risk for the next iteration of the
product as too costly to carry out for either funding
reasons or for the sake of time [15]. For example, if the
developers determined that the current form of the
Budzinski 7

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.

In regard to the SDLC that I most closely relate to, I


would say that during my early programming Fig. 5: Code Taken from a MATLAB Script File
assessments I would normally use the Code and Fix
method, or in other words, I would simply code out what However, since the variable labeled M is an 8 x 8
I thought the question was asking for, and then click the matrix, the actual code of the program looks much more
run button to see what went wrong. From there, I would complex then something seen in Fig. 6. In Fig. 6,
only recode the wrong line and then run the program commands were nested twice, and used to create the
again. I would then tediously continue this process until “X”-like shape found in Fig. 7. Again, there are four
I had an error-free code that fulfilled the program more lines of code found in Fig. 5, however the
requirements. operations performed in Fig.6 are much more complex
due to the forethought necessary to plan out the nested
As the programs grew to be more time constraining and for loops and if statements. In my opinion, difficulty of
complex, I began to switch my ideology to align more code is less about how many lines of code there are, or
closely with the Spiral SDLC. Typically, I will begin my even how many operations are carried out by the script.
development by outlining the problem needs and If a student only had to preform simple operations such
prioritizing problem sections (if there are multiple parts as multiplication or sine determinations, it would hardly
to the problem, or if there are multiple questions). matter how many times they had to do it, or how many
Instead of building models, I will then write some lines lines of code there were, as it would be a repetitive and
of pseudocode to help me to better assess what needs to simple task to carry out. On the other hand, if a student
be done during coding. From there, I code a section of had to use several different commands that each relied
my program, and analyze the importance (or the risk on each other, and required forethought dependent on
when considering the Spiral SDLC) of the next sections computer logic, then the code would become much more
of the program. Depending on what I deem most difficult to develop.
important to work on next, I will either test my code just
written or move onto the next part of the problem set. If
I have decided to move onto the next section of the
problem, I will repeat my steps until I judge that the full
project is ready to submit.

The lines of code (LOC) does not necessarily correlate


with the difficulty of the code nor does it directly affect
the complexity of the code. For example, as shown in
Fig. 5, multiple lines of code are used to simply create a
sparse matrix used later in the problem. The initial
question asked for the inverse of the matrix, and then to
Budzinski 9

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/.

[7] “How Does the Agile Software Development Process


Work?” CLOUD NATIVE PYTHON, by MANISH
SETHI, PACKT Publishing Limited, 2017.

[8] Coleman, Gerry. “Agile Software


Development.” Software Quality Professional, vol. 19,
no. 1, Dec. 2016, pp. 23–29.

[9] Petersen, Kai, and Claes Wohlin. “The Effect of


Moving from a Plan-Driven to an Incremental Software
Development Approach with Agile Practices.” Empirical
Software Engineering, vol. 15, no. 6, 2010, pp. 654–
693., doi:10.1007/s10664-010-9136-6.

[10] Ogheneovo, Edward Erhieyovwe. “Software


Maintenance and Evolution: The Implication for
Software Development.” West African Journal of
Industrial and Academic Research, vol. 7, no. 1, June
2013, pp. 81–92.

[11] History: The Agile Manifesto, Ward Cunningham,


2001, agilemanifesto.org/principles.html.

Potrebbero piacerti anche