Syllabus for SSE 659
Design Quality and Maintenance
Fall Semester 2013 (13F)
Early version; changes are possible.
Instructor: Dr. Paul E. MacNeil
Office: Suite
223a, School of Engineering
Phone: 478-301-2185
Email: macneil_pe@mercer.edu
Back to Top
Textbooks and Supplies:
Texts
(including web sites):
- Refactoring: Improving the Design of Existing Code (1st ed.) ,
by Martin Fowler et al., Addison Wesley ISBN 9780201485677 (1999) (Required)
Download the errata.
- Test-Driven Development: By Example (1st ed.) , by
Kent Beck, Addison Wesley ISBN 978-0321146533 (2002) (Required)
Back to Top
Software
(including web sites):
- A software development environment for your language of choice (C++, C#, Java)
(Required, but your team's choice.)
- A revision control system, such as Subversion (SVN) or GIT. All team members should
start researching the options, for example starting at
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software , as
all team members must use the same version control system. For Projects 2 and 3,
your version control system will have to be distributed, so choose carefully!
. (Required, but your choice)
- An Internet ftp client of your choice. Core FTP LE is
free and works well http://www.coreftp.com/
. (Required, but your choice)
- TBD - more information will be forthcoming
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. Version control.
This course begins on August 20, 2013.
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.
Back to Top
Class
Location:
- The Distance Learning asynchronous "meetings" take place in
Cyberspace; i.e., on the Internet.
Back to Top
Grading:
Item
|
Percent of Term Grade
|
Project 1 |
20
|
Project 2 |
40
|
Project 3 |
30
|
Listserv contributions |
10
|
Credit will be given only for
original work.
Project reports are to be submitted complete, not as incremental
partial submissions.
More information about grading is contained in the General Project 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 format (preferred), or in .doc or .docx format.
- 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.
- Project reports should focus on the development and/or
maintenance that you actually do. Reports should not focus on
summarizing or explaining the text or other materials.
- Inclusion of screenshots demonstrating your work, and code
you actually wrote for the project, are appropriate. Long code
listings can be placed in appendices if doing so does not
interfere with you presenting your work on that code in the
body of the text.
- 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.
- Screen shots may be included in your document to clarify and
demonstrate what you did and what the results were.
- 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(Team/Solo) Team-TDD-Revision Control
- Form your team.
- Teams may have 2, 3, or 4 members. Each team member is to report
to me, privately, via email, their estimate of the percentage of
them team's work done by each team member at the end of the term.
Estimates are to be independent.
- Each team member will use the same version control
system (e.g., Subversion or GIT), so choose it carefully!
- Each team member will use the same programming language. (Teams programming in .NET
languages may mix C++ and C#, both based on .NET, if they wish.)
- In parallel:
- Each individual should get their own version control software
(the same version control software as their teammates) working for them.
That is, they should start developing software using that system.
- Each individual should study the TDD text.
- After getting version control working and studying TDD, each individual
should develop one or more example apps using version control and TDD. Many IDE's
support TDD tools (e.g, JUnit for Java). Each individual can choose the
TDD unit test tool they prefer. Choose carefully! Some, such as CppUnit,
are reportedly not well supported now.
- The team portions of this project are the selection of team members,
programming language, and code version management system. Each individual
will develop his/her own example apps, and write and submit her/his own
Project 1 report.
- Project 2 (Team)
- 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 or
another to implement your test-first testing as
part of refactoring.
- Project 3 (Team/Solo)
- 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,
then A -> B, B -> C, and C -> A. Four person teams work
similarly, so that no person maintains their own software.
- This project is not about refactoring, is it more about maintenance
in general, and maintenance will get primary credit in grading this project.
- TDD and version control are required.
- Perform the required maintenance.
- TBD
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
What Do I Do?
- Subscribe to the course email listserv and be able to access
our FTP server.
- Study the assigned material.
- Write and read email messages (to the listserv) about ideas,
problems and solutions to do with the assigned study material.
- Do the assigned projects.
- Review the projects done by other people after you have submitted
your own work for the same project.
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".
List of all courses.
Schedule
of Events and Assignments:
Start Date
|
End Date
|
Activity/Event
|
August 20, 2013 |
December 06, 2013 |
Course in Progress |
August 20, 2013 |
September 17, 2013 |
Work on Project 1 |
|
September 17, 2013 |
Project 1 due |
|
October 29, 2013 |
Project 2 due |
|
December 06, 2013 |
Project 3 due |
|
December 06, 2013 |
Course ends. Firm date. |
Notes:
tbd
Back to Top
Contact
Information
- My Name: Dr. Paul E. MacNeil
- My E-mail: macneil_pe@mercer.edu
.
- My Office Phone: 478 301-2185
- 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 or modifications for a disability
should inform the instructor at the close of the first class meeting
or as soon as possible. The instructor will refer you to the ACCESS
and Accommodation Office to document your disability, determine
eligibility for accommodations under the ADAAA/Section 504 and to
request a Faculty Accommodation Form. Disability accommodations or
status will not be indicated on academic transcripts. In order to
receive accommodations in a class, students with sensory, learning,
psychological, physical or medical disabilities must provide their
instructor with a Faculty Accommodation Form to sign. Students must
return the signed form to the ACCESS Coordinator. A new form must be
requested each semester. Students with a history of a disability
perceived as having a disability or with a current disability who does
not wish to use academic accommodations are also strongly encouraged to
register with the ACCESS and Accommodation Office and request a Faculty
Accommodation Form each semester. For further information, please
contact Carole Burrowbridge, Director and ADA/504 Coordinator, at
301-2778 or visit the ACCESS and Accommodation Office website at
http://www.mercer.edu/disabilityservices.“
Accreditation: Mercer University is accredited by SACS.