COS 520 - Software Engineering
Spring, 2009.
- Course Description:
- A broad view of software engineering which introduces a variety of software engineering techniques which can be applied to practical software projects. Topics include process models, human factors, software specification, software design, programming techniques and tools, and software verification and validation.
- Place and Time:
- Tuesday/Thursday, 8:00am-9:15am, Room 206 Neville Hall.
- Instructor:
- Larry Latour, Assoc. Prof., Dept. of Computer Science
Office: 222 Neville Hall
Tel: 581-3523
Email: Firstclass (Larry Latour) or larry_latour@umit.maine.edu
- Office Hours: Tuesday/Thursday 11:00am-12:00noon
- Textbook:
- Fundamentals of Software Engineering, Second Edition. Carlo Ghezzi, Mehdi Jazayeri, and
Dino Mandrioli, Prentice-Hall, 2003.
- Additional Readings:
- Online on the web. Links are embedded in the course outline below.
Course Outline:
The course outline draws liberally from the required text
- 1. Software Engineering: A preview - Text, Chapter 1
- History of SE, role of the software engineer, the software life cycle, relationship of SE to programming languages, operating systems, data bases, artificial intelligence, and theory of computer science.
-
- Additional Readings:
- Bill Griswold, faculty member at Department of Computer Science and Engineering, University of California, San Diego, has a short, concise discussion of how to read an engineering paper.
- Lamport, Leslie. "Time, Clocks, and the Ordering of Events in a Distributed System", pps. 558-562 (not physical clocks), CACM, Vol. 21, No. 7, July, 1978.
- 2. Software: It's Nature and Qualities - Text, Chapter 2
- Classification of software qualities, quality requirements in different
application areas, measurement of quality.
- 3. Software Engineering Principles - Text, chapter 3
- Rigor and formality, separation of concerns, modularity, abstraction, anticipation of change, generality, incrementability.
-
- Additional Reading:
- 4. Software Design and Architecture - Text, Chapter 4
- Software design activity and objectives, modularization techniques, object-oriented
design, handling anomolies, a design case study, concurrent software.
Additional Software Architecture Readings:
- Shaw, Mary. "Comparing Architectural Design Styles", pps. 27-41, IEEE Software, November, 1995 (in readings packet).
- Garlen, David, Allen, Robert, and Ockerbloom, John. "Architectural Mismatch: Why Reuse Is So Hard", pps. 17-26, IEEE Software, November, 1995 (in readings packet).
- Perry, Dewayne E., Alexander L. Wolf, "Foundations for the Study of Software Architecture", ACM Software Engineering Notes, 17(4), Oct. 1992, p. 40-52.
- 5. Software Specification - Text, Chapter 5
- Specification usage and qualities, specification styles, specification
verification, operation vs. descriptive specifications, specification in practice.
-
- Additional Reading:
- Hayes, Ian, Editor, Bill Flinn, Roger Gimson, Steve King, Carroll Morgan, Ib Holm Sørensen, Bernard Sufrin, Contributors. Specification Case Studies, Second Edition, c 1987, 1992 Prentice Hall International, (UK) Ltd.
-
- 6. Software Verification - Text, Chapter 6
- Goals and requirements, approaches, testing, analysis, symbolic execution,
debugging, verifying other software properties.
-
- Additional Reading:
- 7. The Software Production Process - Text, Chapter 7
- Software production process models, waterfall model, evolutionary model, transformation model, spiral model,
model assessment, case studies, organizing the process.
-
- Additional Reading:
- 8. Management of Software Engineering - Text, Chapter 8
- Management functions, project planning, project control, organization,
risk management.
- 9. Software Engineering Tools and Environments - Text, Chapter 9
- Historical evolutiom, classification, representative tools,role of programming
languages, sample tools and environments, future scenario.
Grading:
Grades will be based on the following work:
- 6 homework "packages", 6 x 4% = 18%
- A detailed journal of notes on assigned readings not in the textbook, 31%
- mid-term exam (1 hr. 15 min.) = 15%
- final exam (2 hrs.) - 20%
- group semester projects -16%
Program implementation portions of each homework packet may be done in any language
the student prefers, but the student must be
ready to demo any programs in my office or it's vicinity.
No makeup quizes/exams are given unless the circumstances warrant. Work will only be accepted if reasonable care and effort on the part of the student is evident.
Important: All homework and project work (1) must be complete,
(2) must be type-written, (3) must have a cover page containing the student's
name, class, homework number, and list of problems, and (4) must be stapled
in the upper left-hand corner. No hand-written work or fancy covers are accepted.
The Importance of Deadlines: A critical part of the discipline of software engineering is the deadline. Therefore:
- Due dates for each of the class work assignments will be assigned incrementally throughout the semester.
- Lateness of assigned work must be negotiated with the instructor in advance of the due date.
- Lateness of any work can be given in return for a percentage of the grade for that work, mutually agreed upon by the student(s) and the instructor.
- No late work will be accepted unless it has previously been negotiated with the instructor and authorized by the instructor before the due date.
- Late work can be renogotiated for an even later date in return for an additional percentage of the grade for that work, again, mutually agreed upon by the instructor and student.
- Absence from class on the due date is never in itself an excuse for lateness. If a student is sick they can negotiate a lateness over the phone or email.
Acknowledgement that this syllabus has been read and understood: All students must send an email to the instructor acknowledging that they have read and understood the entire syllabus.
Group Semester Projects/Papers:
Your group task is two-fold.
Mid-term Project: Due for presentation the class before the mid-term. Read the Leslie Lamport paper, "Time, Clocks, and the Ordering of Events in a Distributed System", pps. 558-562 (not physical clocks), CACM, Vol. 21, No. 7, July, 1978. Your group task is to design, implement, and test a "simulation" of the mutual exclusion problem described on page 561. The system should demonstrate how the logical clocks in the system work.
Final Project: Due for presentation on the final day of class. Your group task is to design and implement the Trivicalc spreadsheet application in a way that reflects the topics studied during the semester. That is, enough time must be spent on the requirements, design, specification, and verification, and validation of the system to "prove" that the system works the way it should.
Last updated: 1/12/09