The final consists of 8 questions to be answered in long form. You are welcome to use any study resources including the book or internet to answer the questions, but do not consult other students. Cite external resources and make an argument using that source in your own words. Using cited external resources is a positive, not a negative. Informal citations are fine; provide a URL or page number at minimum. “X says Y” is not a full answer. “X says Y, which means Z” where Z is your own thought is acceptable. Answers may be as short or as long as you feel relevantly answers the question, and you should include graphics if they support your answer.

Please submit your answers in a Word document or PDF format.

Be advised: It is unacceptable to copy another’s work, and entries that are suspicious will be subject to the course cheating policy.

  1. Using your project as a reference, what interfaces, abstractions, and patterns exist that you have designed and leveraged?

    1. In retrospect, give an example of a design concept that could be added and explain and diagram why it would be a good addition.

  2. Many business IT solutions departments elect to standardize all language, database, and other tool choices into an Architectural Reference to which all projects must adhere. What are the advantages and disadvantages of this kind of standardization?

  3. Unit testing often involves testing units of code that operate using external resources such as the filesystem, the internet, or a database. Describe and provide an example (you should create executable code, but I only need the test function) of dependency injection/inversion of control to enable such a test to operate.

  4. Write a test plan detailing a set of three or more manual tests on your project (or any other example project if you prefer). You should include an overall plan, specifications, and test descriptions for each. See the book or external resources for formatting.

  5. Software has a finite lifetime. Describe the problems that arise during the maintenance phase that lead to a need to rejuvenate portions or all of a system, and discuss the natural factors that lead to system decline (in S, P, E system categorizations).

  6. A colleague who is a very good programmer produces software with a low number of defects but she consistently ignores organizational quality standards. How should the managers in the organization react to this behavior? What can the team do to help?

  7. The following phrase is from the IEEE Code of Ethics:

    “To improve the understanding of technology, its appropriate application, and potential consequences.”

    Please identify as many strategies as you can for satisfying this statement.

  8. One of our visitors posited that your job as a software developer is to "Take away the boss’s pain." What did this mean in the context of duties and ethics? Discuss and support the ethical implications of the methods used by a developer alleviating the boss’s pains on a late project.