Instructions

During the semester you must write one essay. The essay will be graded, and returned with suggestions for revision. You may revise and resubmit it three 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 .

For this essay you will find at least three recent papers on a software engineering topic (see below).  Your paper should present your own thoughts on the material backed up by evidence from your references. You paper should include a thesis statement as described in Thesis Statements .

Remember: This is not a book report. I want you to add your own thoughts, not just tell me what the references said.


Available Topics


(If you prefer to write on another topic that is fine, but you must get it approved by Prof. Fleck before writing.)

T1. Find two papers where each describe pros and cons of automated versus manual (by people) testing in software engineering. Explain the methods, and describe the advantages and disadvantages of each and situations where each is or is not useful. There are many types of automated testing, feel free to add innformation about more than one type of automated testing. An additional part to this could be based on this link: http://sdg.csail.mit.edu/projects/testera.html  If you really get into it, a discussion of their approach (pros, cons, etc...) could be an entire paper. 

T2. Find papers on different software engineering models (possibly each paper taking a different view on which is better). Compare and contrast the models, explaining advantages, disadvantages of the models and situations in which each is appropriate and why. Some models can be found in chapter 3 of our textbook.

T3. Find papers on using UML. How it is used, when it should be used and when it should not (or doesn't need to be). What parts of UML specifically?

T4. Describe the software engineering choices and differences between creating web applications versus non-web applications. Find papers that discuss this issue (both sides, or either side).

T5. 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.

T6. 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?

T7. Explain the SIMILARITIES of Agile versus traditional approaches. How were traditional approaches evolved into Agile approaches? If there are no papers on this exact topic, find some on the origins of Agile development, and discussions of traditional approachs and add your own views on how traditional approaches evolved.

T8. 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.

T9. Discuss why gathering requirements is a challenging process. What techniques are used, and how do they attempt to solve the problem? Also, how do different methodologies (Agile) try to address the problem?

T10. Discuss how the Alloy Analyzer can be used to automate and enhance software design. Give examples. It would be very good to apply this software to real software to analyze it.

T11. Describe Mutation Testing, how it works, advantages and disadvantages. Explain the usage of MuJava, and apply it to a program and report the results. (It can be an open source project or any program... you do not need to write your own software for this, only the tests.



Remember: A goal of this essay is to add your own views and thoughts about the topic. Avoid purely summarizing the author's views, add in your own views!




Due Date

The final revision of your paper is due April 22, 2009. You will not have a chance to revise the paper after this date.
The final date to turn in the paper and get it back for revision is April 8, 2008. Start early.. the paper is 10% of your grade, don't wait till the last minute!


Grading



Criteria Points
The essay well-organized and free of spelling and grammatical errors. The essay flows well. 15
The essay includes appropriate references. The essay should include relevant information from scholarly sources. 5
Thesis is clearly presented in the first paragraph. Including both the general topic, and viewpoint of the student. The body of the document develops and supports the thesis. 10
The body of the document clearly presents the views of the reference papers. Not simply quoting the papers, but explaining what they mean. 10
The body of the document includes the student's viewpoint and their own thoughts on the topic. The body demonstrates clear reasoning about the topic beyond just echoing what was in the references. (This is not a book report.) 10
Total: 50




FAQ

How do I find scholarly papers? Search http://scholar.google.com . Try searching for "software engineering", "software testing", "software design", "software process", etc...  Many papers can be found there, some are free some aren't. If you find one that is not free, look at the publication name. Go to http://library.gmu.edu and click on "E-journal finder" and put in the name of the journal. You can get almost every non-free paper that way. If you need help, ask me or your GTA for help.

Do grammar and spelling count? YES! Learning to write professionally is an important skill that George Mason emphasizes. It is likely your paper will be returned at least once and possibly twice. That's OKAY... the goal is not perfection the first time -- this is a learning experience!

Do I need a bibliography? YES! You must cite all references you used to write the paper. Note how it's done in the papers you read, that's the same way you should do it. You can also use the MLA format.

Does an essay with a coversheet, one page of text and a bibliography count as 3 pages? No! That counts as one page of text.

If a software engineer falls in the woods, but doesn't make a sound, did they really fall? That's an invalid premise that wouldn't happen. Why go to the woods when you can be doing software development?!? Unless you have a laptop and wireless cell phone card... hmmm.... maybe it could happen.