Computer Science

ECS 160 Software Engineering

ECS 160 SOFTWARE ENGINEERING (4) I, II, III

Format
Lecture: 3 hours
Discussion: 1 hour

Catalog Description:
Requirements, specification, design, implementation, testing, and verification of large software systems. Study and use of software engineering methodologies. Team programming.

Prerequisite: Course 140A

Credit restrictions, cross listings: None

Summary of course contents

  1. Introduction to Software Engineering
    1. History
    2. Economic Motivation
    3. Team Programming
    4. Object-Oriented Nature
    5. Nomenclature
  2. The Software Process
    1. Requirement Definition
    2. Functional Specifications
    3. Planning and Scheduling
    4. Design
    5. Implementation
    6. Integration
    7. Maintenance
  3. Software Lifecycle Models
    1. Build-and-Fix
    2. Waterfall
    3. Rapid-Prototype
    4. Incremental
    5. Spiral
  4. Requirements
    1. Analysis
    2. Rapid Prototype as Specification
    3. CASE Tools
  5. Specification
    1. The Document
    2. Informal Specification
    3. Formal Specification
    4. CASE Tools
  6. Architectural Design
    1. Abstraction, Hierarchies, and Subassemblies
    2. Data-oriented
    3. Object-Oriented
    4. CASE Tools
    5. Class Presentations
    6. Design Document
  7. Rapid Prototype Demo I: Students demo their current program and get immediate feedback on quality and future direction.
  8. Implementation and Integration
    1. Top-Down, Bottom-Up, Inside-Out, Thin-Thread
    2. Coding Standards and Practices
    3. Configuration Control
    4. Team Organization
    5. Testing (Glass box and Black box), Validation and Verification
    6. Software Reuse
    7. CASE Tools
  9. Rapid Prototype Demo II: Students demo their current program and get immediate feedback on quality and future direction.
  10. Maintenance
    1. Motivation
    2. Management
    3. Reverse Engineering
    4. CASE Tools
  11. Final Demo: Students demo their current program and get immediate feedback on quality and future direction.

Students work in teams of 3-5 students designing and implementing a large software system taken through the specification, design, integration and implementation phases.

The specification and design aspects of the projects are quite open-ended. The initial software requirements provide only an outline of the functionality of the software systems. The groups must explore a wide range of alternatives to produce the final system specification. During the specification phase of the project, the groups interact frequently with the “customers” (i.e., the instructors) to explore alternate functionalities and user interface designs. The design phase of the project addresses the fundamental nature of designing software from an abstract specification. Students must understand the differences between the specification and design, what constraints the specification imposes on the designers, and what freedoms the designers have. Using the basic design methodologies, the students must explore a range of design alternatives. A required component of the final design document is a section of design rationale, which describes important design alternatives that were considered and why the choices between alternatives were made.

In executing the major design project that is part of ECS 160, students will undertake the construction of a significant application. The application will employ a  modern framework such as Android or Apache Struts. The application must satisfy a rich set of real-world design constraints and relevant engineering standards. The project will be developed following agile programming practices.

Goals:  Students will: (1) be able to apply software engineering principles in a complex team project; (2) be knowledgeable about the software development life cycle; and (3) be aware of the software engineering code of ethics

Textbook:
Instructor’s notes

Computer Usage:
Students program their term projects in a high-level language, typically C. Programs are developed on the HPs running UNIX. Students use CASE Tools and configuration management programs and editors such as vi or emacs.

Engineering Design Statement:
The specification and design aspects of the projects are quite open-ended. The initial software requirements provide only an outline of the functionality of the software systems. The groups must explore a wide range of alternatives to produce the final system specification. During the specification phase of the project, the groups interact frequently with the “customers” (i.e., the instructors) to explore alternate functionalities and user interface designs. The design phase of the project addresses the fundamental nature of designing software from an abstract specification. Students must understand the differences between the specification and design, what constraints the specification imposes on the designers, and what freedoms the designers have. Using the basic design methodologies, the students must explore a range of design alternatives. A required component of the final design document is a section of design rationale, which describes important design alternatives that were considered and why the choices between alternatives were made.

ABET Category Content:
Engineering Science: 1 unit
Engineering Design: 3 units

GE3: Science & Engineering

Overlap   Some of mathematical topics of ECS 130 overlap with MAT 128A/B/C, EAD 115 and ENG 180, such as interpolation and integration. However, the overlap is only very limited. Some of the ECS 130 topics are normally not treated in these courses, such as recursive and parallel matrix operations, and parallel Cholesky factorization.

ECS 130 is a one-quarter course, as opposed to the two-quarter EAD or three-quarter MAT sequences. ECS 130 is especially designed for undergraduate computer science majors who can benefit from a substantial knowledge of numerical computing, but allot only a limited time for this purpose due to many other complementary course requirements. MAT 128A/B/C, EAD 115/116 and ENG 180 cover wide areas of mathematical problems and numerical methods. In general, the focus of these courses is on the theoretical and mathematical aspects of numerical methods.

ECS 130 will only cover fundamental parts of mathematical problems and numerical methods in scientific computation. Moreover, ECS 130 uses a matrix-vector approach with MATLAB as a problem-solving environment. Students who have taken ENG 6 will have additional background in using MATLAB language, but it is not required for ECS 130. The overlap between ECS 130 and ENG 6 is only on the introduction of MATLAB, thus the overlap is minimal. In ECS 130, numerical algorithms and analysis, finite precision arithmetic, graphics and matrix-vector manipulation are folded into the course in a way that gets students to appreciate the connection between continuous mathematics and numerical computing, and the subtleties of numerical computing.

Instructors: P. Devanbu and K. Levitt

History: 2012.10.27 (P. Devanbu): dropped “Introduction to” in title and changed abbreviated title to match; provided course contents (previously omitted from ICMS), but no changes were made to that compared to the department’s expanded course description.  Original version dates to K. Levitt (Nov. 1996).

Outcomes

1 an ability to apply knowledge of mathematics, science, computing, and engineering
2 an ability to design and conduct experiments, as well as to analyze and interpret data
3 X an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4 X an ability to function on multi-disciplinary teams
5 X an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6 X an understanding of professional, ethical, legal, security and social issues and responsibilities
7 X an ability to communicate effectively with a range of audiences
8 X the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9 a recognition of the need for, and an ability to engage in life-long learning
10 X knowledge of contemporary issues
11 X an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12 X an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13 X an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity
border