Sei sulla pagina 1di 4

CST438 Software Engineering

Final Exam
Summer 2017

Name _________Huy Nguyen_________________________

Directions.
Edit this file with your responses and submit as a word docx or PDF file.
Sign the academic honesty statement below.

I have not received nor given an unauthorized help with this exam. This exam is entirely my
own work.

_____________Huy Nguyen________________________
Signature

1
CST438 Software Engineering
Final Exam
Summer 2017

1. What does the term non-functional requirement mean in software engineering? Can
non-functional requirements be handled in the same way that other functional
requirements are; namely, creating a pivotal tracker item for the requirement, writing junit
test classes, etc. for the non-functional requirement?

Non-function requirements in software engineering refer to requirements that define that a


system is supposed to be rather than what its supposed to do. Some examples of non-
functional requirements deal with reliability, scalability, and testability. They can all be handled
the same way as functional requirements in the pivotal tracker since they are all important
criteria and play an important role when making a product.

2. The title of the Fox textbook is Software as a Service. In your opinion, what is Dr. Fox
talking about, why is it important, and why would he use this as a title for his book?

Traditionally, software is usually bought as a product from customers as tools. This is usually
done by either downloading or installing it into their system. Foxs text book primarily deals with
internet and web applications. These applications do not need to be installed on the computer
but rather they are hosted and served to the customers. The term customers now become
clients as the software has now become a service rather than a product.

3. Software Engineering began in the 1960s because many large (mostly government and
military projects) often failed, seriously defective, or over budget or late in delivery. The
Waterfall process was borrowed from other engineering disciplines and applied to
building software. But software is different from other engineering disciplines in that
software is more flexible and easy to change, it can be very complex, and often times
involves human interaction where you dont really know what you want until you see it
working. And so an alternative process named agile came about in the late 1990s early
2000s.
a. What are the primary differences between Waterfall and Agile processes?

The Waterfall method breaks down the project into different stages and attempts to complete it
in sequence whereas Agile iteratively tries to improve the project by placing a strong emphasis
on user feedback and requirements.

b. Both processes have as their goal to build high quality software. How do the
steps in Waterfall contribute to quality?

Most of the quality is contributed during the design and testing phases. Requirements are
reviewed extensively before developing a plan of action. After the product is made, further
testing needs to be done to test for bugs and defects.

2
CST438 Software Engineering
Final Exam
Summer 2017
c. What steps should one do in Agile that contribute to quality?

Agile takes an adaptive approach to provide quality to its products. Since it has short
development cycles, it can pivot and adapt to new requirements when it needs to. It also can be
presented with immediate user feedback.

3
CST438 Software Engineering
Final Exam
Summer 2017

4. Design Patterns. An important and interesting design pattern is the Visitor Pattern.
See https://en.wikipedia.org/wiki/Visitor_pattern

Visitor pattern is used when you have a data structure (such as a tree, list or graph) and
you need to iterate over each element in the data structure and do something. Rather
than combining the iteration logic and doing something logic into the classes of the
data structure itself, the iteration and other logic is separated into another set of classes.

Download, unzip and open in NetBeans the project exam2-4.zip

a. The code consists of classes for INode, Expression, Literal, Variable classes
which make up the data structure of a binary tree representing an arithmetic
expression such as 3*5 + 2 or 3*x + 7 * (3+y)
b. The main method is in class Exam24.java
c. The logic to evaluate the expression is written using the Visitor pattern in class
Eval. And the logic to print out the expression is written using a separate set of
classes that also use the Visitor pattern in class Print.
d. Note that you should be able to writing additional Visitor classes without having
to change any code in the data classes of INode, Expression, and Literal.
e. Complete the class Search which uses the Visitor pattern that counts the number
of occurrences of a given literal value in the expression. How many times does 2
occur in the expression 2*3+2*2+2? Answer: 2 occurs four times.
f. Complete the class EvalWithVar tht implements Visitor pattern. The class takes
the value of arguments as a Map, and evaluates an expression containing
variables -- substituting the value of the variable as needed.
Given the map [ x:12, y:5] and the expression
2*x+x/y
The new visitor would evaluate the expression and return the value 26.4

Potrebbero piacerti anche