Professional Documents
Culture Documents
Directions:
You may use the textbook and internet as resources for this exam.
But do NOT get help from anyone, except, you may discuss a question with
your instructor.
Do not give help to any student in this course.
Sign the honesty statement below.
For the short essay questions, please write in complete sentences and well
written paragraphs.
This exam is worth 150 points, about 15% of your course grade.
This exam is entirely my own work and I did not get help from or give help to
any other person.
____________________________________
Sign your name
Question 1:
a. What are the primary differences between Waterfall and Agile Processes?
The waterfall process is based upon a strict plan that companies contain a hierarchical
structure follow. The process starts off with the business communicating with the customer
regarding their project and creating documentation for the features they would like. Once the
business and customer have agreed on the project the team goes to work, and the customer
doesn’t get any more input from this moment on. The next step would be the company starting to
develop the application making sure it has all the customers’ requirements. After this is
completed the testing stage happens to verify every component is working correctly. When
everything has been verified of functionality the project then gets passed off to the customer
since it is complete. The customer doesn’t get a say while the project is being developed. If there
was anything they wanted to add or remove, then they would have to create another project with
the company. This could lead to many problems since there is no communication besides the
initial conversation in the beginning. The agile process is better developed to include the
customer in on the project. They have the ability to track the progress and communicate with the
developers to see if there is something that needs to be added or removed. This method is ideal
because the customer will be able to see the project from start to finish and be able to make
changes along the way. There will be no surprised at the end or disappoint from the customer
Developing a software project that is high quality would require communication between the
customer and developers. The customer should either be able to view the progress of the project
or be updated by the team frequently in case anything needs to change on the customers' end.
While communication with the customer is important communication within the developing
team is as important. Roles need to be assigned in the team to reduce any cross developing and
wasting time. Once an understanding as to who will be creating which piece of the project then it
should flow well. Once the project is completed it would result in the customer being content
with the product that they paid for and likely return for future projects.
c. Both processes have as their goal to build high-quality software. What steps in Waterfall
contribute to quality?
The Waterfall process shows the ability to produce high-quality software in the beginning
processes. When the company is communicating with the customer documentation is started
regarding the requirements and functionality. From that point on the customer and company have
come to an agreement as to what the end result will be. Therefore, there will be no surprises
when the project has been completed. The documentation of the project is one of the key factors
that goes into high-quality software. Once the development stages are completed the testing
stages would be the second most important part of high-quality software. Being able to guarantee
that all functionality agreed upon works without any problems shows that the company is
The Agile process flows better with how technology has evolved today because customers
always want to be in the loop. They want to have the functionality to make changes at a second
notice and being able to see the progress. Thus, the agile method contributes to quality by always
being in communication with the customer. There will be no surprises when the application has
been completed because the customer would be able to see it being developed.
e. Do you think quality of an Agile project and Waterfall project can be the same? Or is one
process better than the other regarding quality? [support your view point either with personal
I would say the quality of the Agile project and Waterfall project can develop the same
project, but the customer may not be as satisfied with the end result. Having the ability to
communicate with the developers as they are creating the application is a plus because plans
change all the time. If a customer has to lock in with their project at the beginning but wants
additional features or a different design, then the Waterfall method would fail. Since they work
off of the documentation that the client has provided, they wouldn’t know of these changes.
Thus, resulting in an unhappy customer with the end result. When I worked as a desktop support
technician it was my job to develop guides or scripts to aid with hardware/software changes.
During the process of developing guides, I would communicate with my supervisor to see what
instructions were required. After coming to an understanding there was a hand full of users that I
would have review the guides before sending them out. Based upon their thought’s changes
would be made to make sure there weren’t any steps skipped. This process would go on a few
iterations until it was perfect. There would be no assumption on the user side because it would be
in-depth enough to show any issues that might be displayed. Since there was communication in
the development of the guide this falls under the Waterfall process. Another situation where I ran
into the Waterfall method was when I created scripts to add drivers for printers and scanners. I
wanted to the process to run a smooth as possible and leave the end user to no guessing when
running the script. A small group of users was assigned as the test unit for the development of
this script. I would work on it a few days out of the week and then meet with the group to show
the progress of the functionality. From that point, they would give me input based upon the text
lines that were present and the terminology. After it was complete the end users were content
Question 2:
When developing a new application, a general understanding of which members will create
certain features in a project is decided. However, when a legacy application is developed, and the
original team is no longer available this will cause a delay. Since the new team has no idea of the
functionality of the software, they would have to start from line one and figure out how it works.
This would take a significate amount of time to see how the original team developed the
application. Also, if the original team didn’t add comments in their work as they progressed then
documentation would need to be created. The amount of time allocated for the project would
have to be significantly longer than starting a new application. However, once the team figured
out the flow of the application the process would continue as normal. The testing period would
likely take more time than normal to debug the new features.
b. Describe the software engineering process you would use for this situation.
Since the project is legacy software the Waterfall method would be the best solution to
perform upgrades. The team that is performing the upgrade to the software should see if there is
any documentation that the original team created. If there isn’t then the next step would be to
review the code and see if comments were created to grasp the concept the original team had.
Once that phase is complete the documentation process would begin to aid future upgrades of the
legacy software. Then the team would analyze the models, schema and business rules from the
old application and see if updates are needed to move forward. When that is completed, they
would move on the design of the new software architecture and review the new features that
need to be developed. After the design flows well the coding portion of the project would
initialize, and roles would be assigned. Once the features have been added and the core has been
upgraded the testing stage would occur. Since the application is old the new features and old
features need to be tested to see if there is a point of failure. If there is then it will need to be
fixed before calling the project complete. After all, the components have been tested and the
project is working without any issues then it is time to perform the installation process. When
users are using the new application support will need to be provided and maintenance will have
to be provided as well.
Question 3:
The software metrics Cyclomatic complexity and ABC score the functionality of the program.
The score for cyclomatic complexity is based upon the edges, nodes, connected components in a
program. Whereas the ABC score is the assignments, branches and conditional statements that
sum up a number. The target score for the cyclomatic complexity matrix is less than ten methods
but the ABC score is targeted at less than twenty methods. Therefore, it is considered better to
achieve a lower value to have efficient code. For the cyclomatic complexity metric, it is best to
keep the score below ten because it is the number of test cases that are needed to succeed in one
hundred percent branch coverage. If the number is higher than what it is targeted, then it shows
that it will be difficult to understand due to the number of unique paths. Another issue that could
be presented in having a high number would be creating test cases for the application. Therefore,
if the number is kept at the target then it will be easier to follow the code and create test cases to
determine the functionality. As for the ABC, score is it best to hit the target number or be less
because it allows the concept to a grasped easily. It also reduces unnecessary statements within a
The ABC and Cyclomatic complexity metrics are used to determine how well the code was
developed. If the number is at the target value, then another programmer should be able to open
the code and continue adding to it without any problems since the algorithm would be easy to
follow. Whereas if the metrics are higher than the target then it is time to go back to the drawing
board and develop a more functional algorithm. The ABC score shows the assignment, branch,
and conditions in the applications and can give a developer an understanding of how complex the
application is. The cyclomatic complexity metrics are similar in the sense that it is displaying all
the unique paths the users have developed. Based upon the value it can determine how difficult it
can be to create test cases and understand how the application flows.
Question 4:
a. How would use facilities of GitHUB (and specifically GitHUB branches) to do remote code
reviews?
The functionality that GitHub presents is quite amazing because it allows people to work on a
project regardless of where they are located. The leader of the project has the right to assign
developers a slice of the project and track their progress. Only once they have completed the task
they are able to upload it which gives the leader a chance to review their changes. If the changes
they made going to crash other functions, then it can be declined and sent back to the user with a
note. This allows the senior member or leader of the project the ability to review new code that
has been developed to see how well it corresponds with the application.
b. Should all members of the team be required to review new code, or should it be optional?
All members of a team should be required to review new code because if one member was
assigned the role to review code and then they left the process would have to start all over again.
If each member of the team reviewed the code, then they would all have an understanding as to
what the application does and how the algorithm works. If it was optional there would be fewer
members of the team that would understand how the application functions and how to add
additional features.
c. Should only the programmers with the most experience on the project be required to do code
review?
The programmer with the most experience should do the required code review, but after they
have completed the review, they should show fellow programmers. This would allow
programmers with not as much experience an understanding as to what they should be looking
for. That way if something were to happen to the most experienced programmer then the rest of
the team would understand the concept. There should always be cross training on all aspects of a
project if one member doesn’t anything a concept or function then they should be training. This
brings together a strong team that will be able to complete any project that comes their way.
d. What would you think of a code review that was done by three programmers all of whom had
might be adequate. However, if the project they are reviewing is for a client then a senior
member of the developing team should be a part of the review. The only reason a senior member
should be included is if there is certain information about the client that only a senior member
would know. Therefore, if there was a feature that was requested that the new members didn’t
know about, they wouldn’t know what the look for. They would mostly be looking for
Question 5:
a. Define in your own words the terms BDD, TDD, and UML scenarios. In what ways are the
The Test-Driven Development or TDD for short is the process of writing and running test
cases for an application. This allows for test-coverage that prefers to test that are run
automatically, therefore, the higher the number the better. TDD also reduces the likelihood of
bugs being present in that program. The process is straight forward by initially creating a test
case that may or may not fail and then slowly adding additional cases. This will help the creator
get a better understanding of what the application is capable of and how it can be improved. The
Behavior-Driven Development or BDD for short is the process of writing great tests. BBD
usually works together with TDD. A key factor of BDD is the implementation detail in the unit
tests. BDD addresses a common problem with poor unit tests that can rely heavily on how the
tested function is implemented. The solution for BDD is that it shouldn’t be a test based upon
implementation but behavior instead. The Unified Modeling Language or UML for short is the
because they are all involved in test cases and displaying data.
Question 6:
The term Software as a Service or SaaS for short is a method of software delivery and
licensing. It allows users to access software online via a subscription rather than it being bought
and installed on an individual computer. Adobe offers SaaS for its consumers that allows them
access to their applications if they pay a subscription fee. This gives its users the right to
download the software on any computer and use its functionality as long as their credentials are
cached. There are many other companies that offer this service because it is convenient and
allows the company a steady flow of income. It also gives its users the functionality of using
their service on any platform that has the application installed. Another software company that
offers the same service is Dropbox. They allow their users the storage ability to keep their files
The different between SaaS and software is installed on a computer whereas SaaS can be used
without installing any application to the PC. Thus, making it functional in the sense that it can be
used on any platform. The software is applications that are installed onto a PC in order for its
functionality to be used. For example, Microsoft sells its product office that has to be installed on
a computer in order to be used. However, recently Microsoft has offered their cloud-based
service which allows users who bought their product the functionality of using their services on
the web. Another example of plain software is blizzard. They are a company that offers users
games to play but they have to download their product in order to play it. The product is able to
abc
b. what method must the controller class define?
The function xyz.
c. what is the name of the view template that will format the output of this
request and what directory will rails expect the view template to be in?
layouts
projectname/app/views/layouts
a. What ruby statements would be used in the controller method to get the
input values entered by user?
Def create
@user = user.new(user_params)
@user.save
Redirect_to @user
Private user_params
Params.require(:user).permit(:n1, :na, :n3)
b. What code would you write to determine whether the user entered any
value for age?
I would check to see if the value is empty or not. If it was empty, I would
send a message to the user. Otherwise I would check to see if the value
entered is a number and if it wasn’t to inform the user to enter a number.
Course feedback. This part of the exam does not count toward your score. It is
optional. But your feedback will help me to improve the course.
1. Are you satisfied with the help available in the course? Are the online office
hours convenient for you? Do you get timely responses to your online
questions from the TA and/or instructor? What changes (if any) would you
like to see?
2. Rate the following topics and resources as helpful or not in your learning.
Textbook X
I would say the instructions for the assignments need a little work to understand
the concept. I would recommend creating a lab or two to assist with the
development of assignment 1 and 2.
5. What other resources have you found and used that were helpful in your
learning ruby and rails programming?
a. I have found a lot of posts on stack overflow that have helped with
certain concepts or ideas that I wasn’t sure how to create in ruby.