Syllabus for SSE 659
Design Quality and
Maintenance
Fall Semester 2011 (11F)
Early draft; changes are likely.
Textbooks and Supplies:
Texts (including web
sites):
- Refactoring: Improving the Design of Existing Code (1st ed.) by
Martin Fowler, Addison-Wesley, ISBN 0-201-48567-2 (1999) Check
Out This Text at Amazon.com (Required)
- (There may be an additional text to be announced later.)
Back to Top
Software
(including web sites):
- Note that this course is intended to be OS neutral.
- An Internet ftp client of your choice. Core FTP LE is free and works
well http://www.coreftp.com/ .
(Required, but your choice)
Back to Top
Other Useful Resources
(including web sites):
Back to Top
Catalog
Description (Course Purpose):
Software maintenance and the improvement of the design of
existing code. Incremental development, adding new features with support from
refactoring. Design quality evaluation and design quality improvement.
Test-first development.
Back to Top
Course
Objectives:
Breadth and Depth in Defining, Analyzing, and Solving Complex Problems:
- After successfully completing this course, you should be able to
demonstrate a basic capability to apply refactoring techniques to solve
complex problems.
Communicate Technical Aspects of the Solution for Complex Software
Engineering Problems to a Technical Audience:
- After successfully completing this course, you should be able to
demonstrate a basic ability to communicate regarding the application of
refactoring techniques to a technical audience.
Back to Top
Prerequisites:
SSE 550 Object-Oriented Design I or permission of the program
director based on you documented capability to develop object oriented
software.
Back to Top
Class
Location:
- This Online Learning course takes place asynchronously in Cyberspace;
i.e., on the Internet.
Back to Top
Grading:
|
Item
|
Percent of Term Grade
|
| Project 1 (solo) |
15
|
| Project 2 (solo) |
40
|
| Project 3 (team) |
35
|
| Listserv contributions |
10
|
More information about grading is contained in the General Project Rubric.
This course will also use an additional grading rubric.
Back to Top
Assignments:
- Purpose of projects:
- Use the projects to develop your capabilities, and
- Use the projects to demonstrate your capabilities.
- Deliverables for all projects:
- Your report should be a single, standalone document in .pdf, .html or
.doc format.
- The target audience for your report is the set of practicing software
engineers who have not studied refactoring.
- Your report should be organized in such a way as to make the topics
that you want credit for covering easy to find, and demonstrate your
capabilities clearly and convincingly. Everything you want considered
for credit, including code and tests (including test results), should
be included in the report.
- Each project can be a single, integrated project that tries to
actually do something, or a collection of exercises that demonstrate
your capabilities but don't accomplish anything else, or any
combination of these two alternatives that you find convenient.
- You may include other material outside of the report, if you wish,
but this material may or may not be considered in evaluating your work.
- For each capability that you demonstrate within a report or major
section of that report, you may present only the final result of your
work; you need not demonstrate every step in the development of that
result.
- Some suggestions for doing a project are contained in the One Way to Do a Project page.
- Project 1 (solo):
- Find some code in your selected language (Java, C#, or C++) that you
can refactor for this project. (Hint: the source code for Junit, Nunit,
or CppUnit would not be an appropriate choice. Otherwise, open source
software may be a good source of code to refactor.)
- Develop and demonstrate your capabilities in the topics covered in
Chapters 3 through 7 of Fowler.
- TBD.
- Project 2 (solo):
- Find some code in your selected language (Java, C#, or C++) that you
can refactor for this project. (Hint: the source code for Junit, Nunit,
or CppUnit would not be an appropriate choice. Otherwise, open source
software may be a good source of code to refactor.)
- Develop and demonstrate your capabilities in the topics covered in
Chapters 3 through 12 of Fowler.
- Use an automated tool such as Junit, NUnit, Unit++, CppUnit, or
another (ask me first, please) to implement your test-first testing as
part of refactoring.
- Project 3 (team only):
- Step 1. Read the Wikipedia article on software maintenance
https://secure.wikimedia.org/wikipedia/en/wiki/Software_maintenance .
Complete this step before moving on.
- Read something else about software maintenance. Briefly report on
what you read in your project report.
- Each team member shall provide another team member with software to
maintain, and some information about the required maintenance. This
software shall be new to the person who receives it, and no two team
members shall maintain the same software. Person A provides some
software and maintenance requirements to person B (A -> B); Person B
provides some software and maintenance requirements to person A (B
-> A).
- If you have a three person team (which requires my prior approval),
then A -> B, B -> C, and C -> A.
- Perform the required maintenance.
- Document (Part 1) the software and maintenance requirements that you
provided to a teammate, and (Part 2) the maintenance you performed on
the software you received from a teammate. These are the two parts of
your Project 3 report.
- Each person will have their own individual report; there will be no
group team report.
- Your report will be graded based on the Course Objectives. For Part 1, this will
mean how well the software and maintenance requirements you provided to
a teammate support that teammate's development and documentation of
software maintenance capabilities. For Part 2, this will mean how well
your work on the software you received, based on maintenance
requirements you received, supports the development and documentation
of your maintenance skills. Put some thought into what software and
maintenance requirements you provide to a teammate, and what you do
with the software and maintenance requirements you receive.
- This project is not focussed on refactoring. Some refactoring may be
needed, but it will get you little or no credit. See the assigned
readings (starting with the Wikipedia article) for other (than
refactoring) topics in maintenance, and focus on some of those.
- By the nature of this assignment, it must be a team project. You must
maintain someone else's code. As you can do this only in a language you
know, we will have to arrange the teams so that everyone has someone(s)
else to get code from, and give code to.
- Doubtless there will be questions and issues; please bring them up
via the course listserv.
-
Back to Top
Additional
Information:
- Asynchronous Learning Nets (ALNs)
- Self Study: You study the texts and any other course study material
on your own.
- Collaborative Projects: After your self-study, you collaborate (via
the Internet [email, ftp]) with your partner(s) to produce a team
product. Your collaborative work is substantial, asynchronous, and
rapid.
- This course is a distance learning course. Please read this Distance Learning web page regarding
distance learning in this course and this program.
Back to Top
- Subscribe to the course email listserv and be able to access our FTP
server; your professor can tell you how
to do this.
- Study the assigned material.
- Write and read email messages about ideas, problems and solutions to do
with the assigned study material.
- Do the assigned exercises.
- Write and read email messages (to/from the listserv) about ideas,
problems and solutions to do with the assigned homework.
- Review the exercises done by other people, as assigned by the
professor.
Back to Top
Changes to this Syllabus:
There will be changes to this syllabus, so check back frequently, and don't
forget to hit "Reload" or "Refresh".
Schedule of Events and
Assignments:
|
Start Date
|
End Date
|
Activity/Event
|
| August 23, 2011 |
December 12, 2011 |
Course in Progress |
| August 23, 2011 |
August 29, 2011 |
Study the text ("Fowler") Foreword - Chapter 1. Make sure that your
development environment is ready to go. |
| August 30, 2011 |
September 06, 2011 |
Study Fowler chapters 2 - 7. |
| September 07, 2011 |
September 12, 2011 |
Think ahead, and start to plan what you are going to do for
Project 1.
Select, download, install, and learn to use the xUnit variant appropriate
to the language you are using for this course. ("Use" means to create
and execute your own test cases. Make sure to try out your capability
(to use your selected testing framework.)
If you are programming in Java for this course, select Junit http://junit.org/index.htm .
If you are programming in C# for this course, select Nunit http://www.nunit.com/index.php
.
If you are programming in C++ for this course, select CppUnit http://cppunit.sourceforge.net/cppunit-wiki
.
|
| September 12, 2011 |
September 26, 2011 |
Work on Project 1
|
| |
September 26, 2011 |
Project 1 due; post to our FTP server. |
| September 27, 2011 |
October 24, 2011 |
Study chapters 3 through 12 of Fowler.
Work on Project 2
|
| |
October 24, 2011 |
Project 2 due; post to our FTP server. |
| October 25, 2011 |
December 12, 2011 |
Work on Project 3
|
| |
December 12, 2011 |
Project 3 due; post to our FTP server. |
| |
December 12, 2011 |
Course ends. |
Back to Top
List of all courses.
Contact
Information
- My Name: Dr. Paul E. MacNeil
- My E-mail: macneil_pe@mercer.edu .
- My Office Phone: 478 301-2185
- My FAX: 478 301-2732
- US Mail:
- Dr. Paul E. MacNeil
- School of Engineering
- Mercer University
- 1400 Coleman Ave.
- Macon, GA 31207
Back to Top
Important Additional Information:
Students requiring accommodations for a disability should inform the instructor
at the close of the first class meeting or as soon as possible. If you are not
registered with Disability Services, the instructor will refer you to the
Disability Support Services office for consultation regarding documentation of
your disability and eligibility for accommodations under the ADA/504. In order
to receive accommodations, eligible students must provide each instructor with
a “Faculty Accommodation Form” from Disability Services. Students
must return the completed and signed form to the Disability Services
Coordinator on the 3rd floor of the Connell Student Center. Students with a
documented disability who do not wish to use academic accommodations are also
strongly encouraged to register with Disability Services and complete a Faculty
Accommodation Form each semester. For further information, please contact
Carole Burrowbridge, Disability Services Coordinator, at 301-2778 or visit the
web site at http://www.mercer.edu/stu_support/swd.htm
Accreditation: Mercer University is accredited by SACS.