Course Number & Title

CSU 670 Software Development (4 SH)

Course Description

Considers software development as a systematic process, involving specification, design, documentation, implementation, testing, and maintenance. Examines software process models; methods for software specification; modularity, abstraction, and software reuse; issues of software quality. Students, possibly working in groups, will design, document, implement, test, and modify software projects.

Prerequisites

CSU370, CSU390.

Textbooks

Example of primary textbook that could be used in the course: Andrew Hunt and David Thomas. The Pragmatic Programmer: from journeyman to master. Addison-Wesley. http://www.pragmaticprogrammer.com/ppbook/extracts/rule_list.html Examples of supplementary textbooks: Fred Brooks, The Mythical Man-Month, 20th Anniversary Edition. Addison-Wesley, 1995, ISBN 0201835959. Kent Beck. Extreme Programming Explained. Addison-Wesley, 2000, ISBN 0-201-61641-6. Martin Fowler, UML Distilled, 3rd Edition, Addison-Wesley, 2004, ISBN 0-321-19368-7. Erich Gamma and Kent Beck. Contributing to Eclipse: Principles, Patterns and Plug-Ins. Addison-Wesley. Erich Gamma, Richard Helm, Ralph Johnson, & John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995, ISBN 0-201-63361-2. Craig Larman. Agile and Iterative Development: A Manager's Guide. Addison-Wesley.

Topics Covered

Notions of software quality correctness reliability robustness maintainability evolvability People issues focus on customers pair programming the software team Software development processes and their models phases requirements analysis testing design implementation process models (instructors should select the process models they wish to teach; examples of process models include waterfall, iterative, spiral, Unified Process, Extreme Programming, et cetera) Testing test early test often test automatically the roles of unit, integration, and stress testing the roles of black-box and glass-box testing test coverage Abstraction barriers and modularity isolation of clients from details separation of concerns independence of views from models Every instructor must cover all topics listed above. Below are examples of additional topics that some instructors may wish to cover: Other notions of software quality e.g. testability, reusability, utility, performance Technical contributors to software quality simplicity clear specifications standard components verification and model checking assertion and contract checking technical reviews testing Artifact management design history and rationale source code control special problems with code generation logging errors and modifications Aspect-oriented software development Contributing to an open source project How to learn an existing technology (e.g. Eclipse) How to conduct the project in a small team Building or extending components (e.g. Eclipse plug-ins)

Course Outcomes

Upon completion of this course, a student should Know at least one organized method for developing software and know how to apply it to a set of requirements Know how to design the ontological categories of a program from informal problem descriptions Have experience working with other people to develop software

Measurement of Course Outcomes

The course outcomes will be measured and verified by: Programming homeworks Students should work in teams for at least some homeworks. Public reviews of code It is recommended that students be graded on the quality of their reviews of other students' software, but the quality of their own software should be graded by the instructor. Project with a few milestones Electronic portfolio (optional at discretion of instructor)

Relation to Integrated Learning Models (ILM)

This course gives students the knowledge and perspective they need to do the software system development they will be asked to do on their co-op assignments. It will also give students an opportunity for critical review of the software systems they have used and developed on previous co-op assignments.

Relation to Curriculum 2001 (Optional Section)