Skip navigation.

Contact Us

Department of Computer Science

Janssen Engineering
Room 236
PO Box 441010
Moscow, Idaho
83844-1010

phone: 208-885-6592
fax: 208-885-9052

e-mail:
dept chair
graduate info
undergrad info
sys admin
webmaster

CS Department Banner Graphic

CS 384 Software Engineering II

Total Credits: 3 cr

Course Coordinator: Clinton Jeffery

URL: http://www2.cs.uidaho.edu/~cs384

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

Textbook: Same text used in CS 383.

References: Numerous piece of reference material are provided on the course web site.

Course Goals: The fundamental goal of this course is to develop each student's ability to apply a systematic and engineering approach to the development of software systems and products. This is the second course in a two semester sequence in software engineering with concentration on the later portion of the software development process. This course addresses the major areas in the development of large-scale software systems with a focus on detailed design, implementation, testing, and project management.

The course teaches students about a wide spectrum of modern techniques available for performing activities in each of these areas. Material presented in this course addresses topics identified in the Software Engineering Body of Knowledge, SWEBOK, developed and published by IEEE Computer Society.

The course continues using small groups to complete major development assignments. The student's communication skills will be enhanced by activities requiring both written and oral communication. Discussion of legal, ethical, social, and professional issues will be covered in conjunction with presentation of software engineering concepts. Grading is based on a combination of individual work as evidenced by performance on homework assignments, exams, and a written report, as well as how each student performed in team-based activities.

At the start of each major section or phase of the course, small teams will be formed. In CS 384 teams will be used to refine a detailed design decomposition, implement code, and thoroughly test the code. In each team, students will collaborate to accomplish the work needed to successfully complete that phase of the project. All teams will be given the same work product to use as a baseline. In most cases, this work product will be selected from among those submitted in the previous phase and which represents a solid, reasonable starting point for the current project phase.

After completing this course a student should be able to effectively decompose a high level design representation to define program modules, effectively convert a design into code, and thoroughly test code at the unit level and as an integrated system. Through the required work in small teams, students will improve their team participation skills.

Prerequisites by Topic:

  • Proficient programming skills in a high level language such as C++ or Java (IV-8)(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)
  • Ability to understand and analyze situations for ethical issues (CS 383)

Major Topics Covered in the Course: The following major topics are covered in the course. Along with each topic are listed the ABET Criteria associated with the topic and the CS Body of Knowledge topic identified in the CC 2001.

  • Design refinement and its documentation (IV-7, IV-8, IV-16) (SE1)
  • Code development (IV-7, IV-8) (SE2)
  • Unit testing (IV-7, IV-8) (SE6)
  • Integration (IV-7, IV-8) (SE6)
  • System testing (IV-7, IV-8) (SE6)
  • Defect management (IV-7) (SE6)
  • User documentation (IV-16)
  • Release and maintenance processes (IV-7) (SE 7)
  • Software engineering measurement (IV-7) (SE 11)
  • Project management (IV-7) (SE 8)
  • Legal, ethical, social, and professional issues in software product development (IV-17)(SP 2, SP 4, SP 5, SP 6, SP 7)

Laboratory projects (specify number of weeks on each): Some of the laboratory activities identified below may overlap.

  • Develop code to implement the project design (3 weeks) (SE 2)
  • Conduct a code review (1 week) (SE 6)
  • Use a revision control system (throughout the semester) (SE3)
  • Write a test plan (1 week) (SE 6)
  • Test the implementation at the module or unit level (1 week) (SE 6)
  • Test the implementation as a system (1 week) (SE 6)
  • Automate portions of testing (2 weeks) (SE 3, SE 6)
  • Document defects (throughout testing) (SE 3, SE 6)
  • Update design specification (as needed) (SE 1)
  • Write usage documentation and installation instructions appropriate for the product (1 week)
  • Conduct a final project presentation and demonstration (1 week)
  • Write a paper on software engineering ethics (2 weeks) (individual) (IV-16, IV-17) (SP 2, SP 4, SP 5, SP 6, SP 7)

Estimated Curriculum Category Content:

Area Core Advanced Area Core Advanced
Algorithms     Data Structures    
Software Design   3 cr Prog. Languages    
Computer Arch     Other    

In this course, we use the Software Design Category to indicate that the courses focuses on application of software design and development processes to the application under development. Although the vast majority of activity in this course is contained within the Software Design category, some attention is paid to other areas as needed to support effective development of the application.

Oral and Written Communications: Every student is required to submit at least 4 written reports (not including exams, tests, quizzes, or commented programs) of typically 3-20 pages and to make 3 oral presentations of typically 10 - 15 minutes duration. Include only material that is graded for grammar, spelling, style, and so forth, as well as for technical content, completeness, and accuracy.

  • Working in their team, each student will contribute to the refinement of a detailed design specification for the assigned application, in-code documentation, a report describing the capabilities of an assigned software development tool, a software test plan, and application usage documentation. A portion of each student's grade on these activities is based on input from other members of his/her team to help ensure that each student does a reasonable share of the work. For each assignment, each team is expected to make a formal presentation of their work to the class. All team members will participate in the preparation and delivery of the presentation.

Social and Ethical Issues: At appropriate points in the presentation of software engineering concepts, social and ethical issues are addressed.

  • The foundation of an engineering approach to software product development was created in direct response to the need to achieve legal, ethical, moral, and professional objectives. In this course students should gain an appreciation of their responsibility to deliver high quality code that meets the user's requirements.

Theoretical Content:

  • Software testing theory and coverage criteria
  • Software engineering measurement

Problem Analysis:

  • Working in a team to understand the product design and how it intends to implement the requirements.
  • Discovering, reproducing and understanding the causes of application failures, then developing solutions to resolve the failure.

Solution Design:

  • Refine a design decomposition based on the application's architectural design that has sufficient detail to permit members of the development team to work semi-independently and concurrently on implementation.
  • Translation of the system's design into properly functioning code.
  • Design a test suite that thoroughly evaluates the behavior of their product. Devise an approach to accomplish all or part of this testing with automation.

Course Outcomes: The following list documents the course outcomes and crossreferences them to the BSCS program outcomes. The letter at the beginning of each reference identifies the program outcome supported. The numbers sequentially identify the course outcome for this course. After completing CS 384 a student should know or be able to:

  • Maintain and update a requirements specification to reflect the as-built product. (b-1)
  • Design a test suite to determine whether the system meets requirements. (c-1)
  • Convert a software detailed design into code. (c-2)
  • Perform unit, integration, and system tests. (c-3)
  • Analyze bug reports and test failures to evaluate what failed and how to correct it. (c-4)
  • Divide labor to permit members to work concurrently on implementation. (d-1)
  • Collaborate to achieve team objectives. (d-2)
  • Understand the importance of testing a software product thoroughly. (e-1)
  • Document the reporting and fixing of bugs. (f-1)
  • Document testing procedures and outcomes. (f-2)
  • Develop a set of user documentation including on-line references or help. (f-3)
  • Conduct a code review. (f-4)
  • Write installation and/or configuration instructions. (f-5)
  • Update requirements and/or design documents to reflect changes during development. (f-6)
  • Conduct a final project presentation, including a demonstration, and an acceptance test. (f-7)
  • Write a technical report. (f-8)
  • Demonstrate proficiency with a revision control system. (i-1)
  • Construct appropriate scripts/files and use common software configuration and build tools such as autoconf and make. (i-2)
  • Use an automated test tool. (i-3)
  • Demonstrate awareness of principles and pitfalls of software engineering measurement. (k-1)
  • Know basics of software testing theory and different kinds of test coverage criteria. (k-2)