CS 384

From CS Wiki
Jump to: navigation, search

Software Engineering II

Note: This class has been replaced by CS 480: Senior Design I.

Catalog Description: Continuation of CS 383, Individual projects are developed.

Total Credits: 3

Course Coordinator: Clinton Jeffery

URL: http://www2.cs.uidaho.edu/~jeffery/courses/384/

Prereq: CS 383

Textbook: Same text used in CS 383.

Prerequisites by Topic:

  • Proficient programming skills in a high level language such as C++ or Java (CS 121, CS 210)
  • Ability to use basic software development tools (CS 270, CS 383)
  • Understanding of software development life cycles and constituent processes (CS 383)
  • Ability to interpret and understand a system's operational specification (CS 383)
  • Knowledge of high-level / architectural design representations and ability to document a system's design (CS 383)

Major Topics Covered

  • Design refinement, keeping design and code changes consistent (j)
  • Code development; mapping design documents to code (j)
  • Code walkthroughs and inspections (i)
  • Software Testing: writing test plans and test cases (k)
  • Unit, Integration and System testing k)
  • Defect management (c)
  • Verification & validation methods (c)
  • User documentation and help systems (f)
  • Release and maintenance processes (k)
  • Software engineering measurement, software complexity (i)

Course Outcomes

  1. Write a test plan and test cases to establish code coverage and determine whether the system meets requirements. (c)
  2. Convert a software detailed design into code. Document the correspondence between the design and code (j).
  3. Perform unit, integration, and system tests involving one or more automated testing tools such as CppUnit. Document the results of a test run. (k)
  4. Use a bug tracking tool to report bug reports and test failures, evaluate what failed and how to correct it, and document the fixing of bugs. (i)
  5. Divide labor to permit members to work concurrently on implementation. Collaborate to achieve team objectives. (d)
  6. Develop a set of user documentation including on-line references or help, installation and/or configuration instructions. (f)
  7. Conduct a code review. (b)
  8. Update requirements and/or design documents to reflect changes during development. (f)
  9. Demonstrate proficiency with a revision control system. (i)
  10. Construct appropriate scripts/files and use common software configuration and build tools such as autoconf and make. (i)
  11. Perform basic software engineering measurements on a software project. (b)