Information Technology 471

ITEC 471: Software Engineering II

Prerequisites: ITEC 320, ITEC 324, ITEC 370, and ITEC 335 as either a prerequisite or corequisite.

Credit Hours: (3)

A continuation of principles of software engineering and the design and implementation strategies appropriate for large software projects. Includes the use of CASE tools, extreme programming methods, software metrics, verification, validation, quality assurance, and a further exploration of the principles of human-computer interaction.

Detailed Description of Content of Course

1) Case Tools related to:
    a. Project Planning (e.g., Version One)
    b. Requirements (Use Case) Management (e.g., Version One)
    c. Development (e.g., Eclipse)
    d. Bug Fix Tracking (e.g., Bugzilla)
    e. Testing (e.g., phpUnit, JUnit, QaTraq)
    f. Version Control Software (e.g., Subversion)
2) Agile Software Development Techniques
3) Metrics
    a. Software development metrics
    b. Human-computer interaction metrics
4) Evaluation of Software Systems
    a. Verification and validation
    b. Software quality assurance
5) Human-Computer Interaction
    a. Usability
    b. Standards, styles, and guidelines
    c. Interaction development process
    d. Evaluation

Detailed Description of Conduct of Course

The focus of this class is theoretical software engineering and its application to large project development. Projects for this course are intended to introduce students to the complete software process from system conception through implementation.

Goals and Objectives of the Course

Students who complete the course will be able to:  
1) Work as a part of a team to plan activities, choose leadership, delegate responsibility, and follow a large software development project from inception to completion.
2) Compare and contrast common software life cycle models (e.g., spiral, waterfall, agile processes, etc.)
3) Explain and apply the workflows and phases of an agile life cycle model.
4) Identify the need for design tradeoffs such as software design patterns, refactoring; abstract data types, encapsulation, and information hiding.
5) Effectively communicate technical matters (written and verbally) with programmers, managers, clients, and users.
6) Effectively use collaborative software development tools to assist in the documentation and development of a software product.
7) Explain and apply software engineering metrics (e.g., measures of product size, quality, and complexity).
8) Demonstrate the ability to apply software verification and validation techniques to software developed using an agile software development model.

Assessment Measures

Participation in the design of a large software project is crucial to the successful completion of this course. At least two exams will also be used in evaluating the student's level of material assimilation.

Other Course Information

Review and Approval

April 12, 2018
Revised: June 1, 2012
Sept. 25, 2001        New Course Proposal            John P. Helm, Chair