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:
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:

5. Software Specification - Text, Chapter 5
Specification usage and qualities, specification styles, specification verification, operation vs. descriptive specifications, specification in practice.
Additional Reading:
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:

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:

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