Instructions

During the semester you must write one essay. The essay will be graded, and returned with suggestions for revision. You may revise and resbmit it multiple times to get the grade you want..

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 in class .

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 be busy with your projects.  Therefore we recommend that you take an essay option earlier in the semester, rather than later.


Early Topics - These topics must be submited by Feb 7

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.3:
Provide examples that indicate the impact of software on our society since 1990. Examples can be negative or positive impacts on society. How would society be without this software? What changes to culture have arisen due to this software?  How would a software catastrophy affect  the different stakeholders (you may take an example system and assume your set of stakeholders) including the endusers of that system?





Later Topics - These topics must be submited by March 5

Essay 1.2 (revised cutoff date to March 5):
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.


Anytime - These topics may be submitted anytime after March 5


Due dates: The final revision of your essay is due April 23.
If you want to get feedback and revise your essay to get a better grade you must turn in your essay by April 9. Vishal will return it to you April 15 then you have a week to revise it by April 23.

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.