CS 421/ SWE 421 Essay Choices

(Back to schedule)

Instructions

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.


Week 1 - Due by Sept 14

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.


Week 5 - Due by Oct 3 (Wed night) or Oct 4 (Thurs night)

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 - Final Revision due by Nov 29. First draft by Nov 15.
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.