Each
week you will have the option of writing a short essay related to the
current topic, instead of the assigned homework problems. You
are required to choose the essay option at least once during the
semester.
Your
essay should be three to five single-sided pages, double spaced, 12
point Serif font (such as Times New Roman), with one inch margins. You
should have your name, page number, and number of pages (for example
"Ziman 2/5") right-aligned in the footer of each page. Please be sure
to check your paper for spelling and grammar before submitting
it. As with all of your work, the GMU Honor Code applies, so be
sure to cite your references (if you are unsure about how to do
citations, try using MLA format ). The essay is due in hard copy at the beginning of class when the corresponding homework would be due.
The essay topics are likely
to become more difficult as the semester progresses, and the grading
will become more difficult. Also keep in mind that you will
also be busy with your projects. Therefore we recommend that
you take an essay option earlier in the semester, rather than later.
Essay 1.1:
Section 1.2
of the Pressman text discusses software deterioration. Examine
a piece of software that you have used over at least two versions
(for example, a browser, an IDE, a word processor, etc.), and discuss
what changes were made to the software between those versions, why
those changes were made, and any problems that those changes may have
caused. Then, try to identify some ways that deterioration
could be prevented or minimized, with regard to the software
that you have examined.
A good way to
identify the specific changes between different releases of
software is to look at the release notes. Release notes are
usually included with new versions of a product, and
frequently contain the release notes for previous versions as
well. Otherwise, the release notes can often by
found on the web site of the product (for example, http://support.microsoft.com/,
for Microsoft products).
Essay 1.2:
Section
1.3 presents seven categories of software. Choose at least
three of these categories and discuss the engineering approach
necessary for each of those categories, and whether the same approach
may be used, or if not, what the similarities and differences are.
Consider
the applications of the categories, and what the requirements might
be for software designed for those applications. You should
also consider the specific challenges associated with
developing software for each particular category.
Essay 5.1: Extreme
Programming and Agile Software Development techniques have gained a lot
of popularity in recent years. Compare one of these techniques to
one of the more traditional models, and explain the benefits of one
model over the other, and any challenges that might appear with one
approach or the other. Can you think of any situations where the
traditional model might be more effective than the agile
approach? How would you decide which model to apply for a
particular software project?
Essay 5.2:
There are many documented software failures described on the web.
Find two software failures described on the web, and explain what the
project was, how it failed and why. Then explain which parts of the
software process could have been done differently to avoid the
failure. Explain how that part of the process should have been done. In
addition explain an appropriate software development process (from
Pressman chapter 3 or 4) that should have been used and why. Frequently
the low level details about the project aren't described (because
people don't like to admit mistakes in detail). You may need to
make an educated guess about the cuase of failure and explain why
you believe this was the problem.
Due dates: The final revision of your essay is due Nov 29.
If you want to get feedback and revise your essay to get a better grade you must turn in your essay by Nov 15. Brian will return it to you Nov 22 then you have a week to revise it by Nov 29.
NOTE: Follow the guidelines at the top of this page!
Essay G.1: As
a software engineer, you will frequently find that it makes more sense
to use a third party component, such as a database or application
server, instead of building your own. It is important that you
are able to discover the choices that are available, and conduct a
thoughtful analysis to determine which choice best meets your
needs. Pick a component (such as a database, application server,
framework, or application programming environment), and research the
different choices that are available. Then, write an essay
comparing the costs and benefits of each of the choices, which should
lead you to make a decision of which among them you would use.
Clearly, different projects have different details which would make the
best choice vary. Be sure to clearly define the assumption that
you use to make your decision. Having an idea for a specific project
that this component will work with may make it easier to keep track of
your assumptions.
Essay G.2:
Choose a design principle and write an essay describing the design
principle, how and why it is used, the value it adds, and what the
consequences are of not using it. Describe at least one example
of the design principle being applied correctly, and another example of
the principle being applied incorrectly. The examples should
include a diagram that is suitable to present to the class to explain
the principle.
Some possible principles to choose from are: the
Law of Demeter; Design Inversion Principle; Liskov Substitution
Principle; Cohesion; Coupling; and others from http://ootips.org/ood-principles.html.
Essay G.3:
Read Chapter 12 on User Interface Design, and then think of a piece of
software (such as a UML modeling tool, an e-mail client, etc.) and
write a paper analyzing it from the perspective of good user interface
design. Does it conform to or violate Mandel's "Golden Rules" of
interface design? Be specific. How could the user interface
be improved? Illustrating your paper with screen captures from software
would be beneficial.
Essay G.4: Read
Chapter 13-14 on Testing. Choose a software product, or a particular
component of a software product, and describe a thorough set of test
cases for that software. Your paper should specifically define the
scope of your testing. For example, if you were testing a car, you
might decide to limit the scope of your testing to the braking system.
(You cannot use this example for your paper, because it is not a
software product.) Each test case should be specific, so that the
reader can reproduce the test exactly as you intend it. Remember,
even relatively small pieces of software have many, many different ways
that it can be exercised (for example the "copy" command in MS Word can
be exercised by pressing "Ctrl-C", or by pressing "Ctrl-Ins", or by
choosing "Copy" from the right-click context menu, or by choosing
"Copy" from the "Edit" menu, or by clicking on the copy button on the
tool bar. Each of these could result in a separate test
case. Your test cases should describe the exact steps to carry
out the test, and describe precisely what the result should be.