CMPS 335 Software Engineering
Course Description

Computer Science Department
California State University, Bakersfield
V1, 5/8/2003

Catalog Description:

A general introduction to Software Engineering. Deals with the specification, development, management, and evolution of complex software systems. Shows how to cost-effectively apply the methods and theory from Computer Science to solve difficult problems. The course presents a broad perspective on software engineering and surveys a wide spectrum of tools and techniques. Students are required to complete a software engineering project as part of a small software engineering team.

Prerequisite:

CMPS 223

Units:

5

Coordinator:

Jim Moloney

Goals/Objectives:

Goal:

To acquaint students with the basic concepts and major issues in software engineering. Practice some of these concepts in the design and implementation of a large team software project.

Objectives:

  1. Discuss the properties of good software design.
  2. Compare and contrast object-oriented analysis and design with structured analysis and design.
  3. Conduct a software design review using appropriate guidelines.
  4. Evaluate a software design at the component level.
  5. Evaluate a software design from the perspective of reuse.
  6. Select, with justification, an appropriate set of tools to support the development of a range of software products.
  7. Discuss the challenges of maintaining legacy software.
  8. Use a common, non-formal method to model and specify (in the form of a requirements specification document) the requirements for a medium-size software system.
  9. Conduct a review of a software requirements document using best practices to determine the quality of the document.
  10. Translate into natural language a software requirements specification written in a commonly used formal specification language.
  11. Distinguish between program validation and verification.
  12. Describe the role that tools can play in the validation of software.
  13. Distinguish between the different types and levels of testing (unit, integration, systems, and acceptance) for medium-size software products.
  14. Undertake, as part of a team activity, an inspection of a medium-size code segment.
  15. Discuss the issues involving the testing of object-oriented software.
  16. Identify the principal issues associated with software evolution and explain their impact on the software life cycle.
  17. Demonstrate through involvement in a team project the central elements of team building and team management.
  18. Prepare a project plan for a software project that includes estimates of size and effort, a schedule, resource allocation, configuration control, change management, and project risk identification and management.
  19. Demonstrate the ability to apply multiple methods to develop reliability estimates for a software system.
  20. Identify and discuss different specialized systems.
  21. Discuss life cycle and software process issues in the context of software systems designed for a specialized context.
  22. Specify the strengths and weaknesses of relevant professional codes as expressions of professionalism and guides to decision-making.
  23. Identify ethical issues that arise in software development and determine how to address them technically and ethically.
  24. Distinguish among patent, copyright, and trade secret protection.
  25. Discuss the consequences of software piracy on software developers and the role of relevant enforcement organizations.
  26. Describe several ways in which the information technology industry is affected by shortages in the labor supply.
  27. Suggest and defend ways to address limitations on access to computing.
  28. Outline the evolution of pricing strategies for computing goods and services.

Current Texts:

(1)Software Engineering, 6th Edition by Ian Sommerville
(2)How to Break Software by James A. Whittaker

Topics:

(1)  Overview of Software Engineering (3 hrs)

(2)  Professional and ethical responsibility(3 hrs)

(3)  Requirements (8 hrs)

a.      Software requirements and requirements processes

b.     System modeling

c.      Software prototypes

(4)  Design (8 hrs)

a.      Architectural design

b.     Object Oriented design

c.      User Interface Design

d.     Design tools and processes

e.      Dependability

(5)  Implementation (5 hrs)

a.      Development tools

b.     Integrated Development Environments

(6)  Verification and Validation (10 hrs)

a.      Software testing

b.     Test tools and processes

(7)  Management (5 hrs)

a.      Managing people

b.     Managing quality

c.      Cost and Schedule estimation

d.     Management tools and processes

(8)  Evolution (5 hrs)

a.      Software change

b.     Software re-engineering

c.     Configuration management

(9)  Tests (3 hrs)

(10)    Labs (25 hrs)

ACM Sub Areas or Units Covered:

SE1 Software design

0.6

SE3 Software tools and environments

0.4

SE4 Software processes

0.4

SE5 Software requirements and specifications

0.8

SE6 Software validation

0.7

SE7 Software evolution

0.3

SE8 Software project management

0.7

SE11 Software reliability

0.2

SE12 Specialized systems development

0.2

SP4 Professional and ethical responsibilities

0.2

SP5 Risks and liabilities of computer-based systems

0.2

SP6 Intellectual property

0.1

SP9 Economic issues in computing

0.2


SE: Software Engineering
SP: Social and Professional Issues

Laboratory:

(1)  Class will be divided into 3-4 student teams

(2)  Each team will work on two projects. On one project they will be the design team and test team, on the other project they will be the implementation team.

(3)  The projects will include the following deliverables:

a.     Project proposal

b.     Project Plan

c.     Requirements Specification and Requirements review

d.     Design Specification and Design review

e.     Code and code review

f.      Test Plan and Test Report

g.     User documentation

h.     Release Plan and documentation

i.      Project Report

(4)  During reviews, students will make oral presentations on requirements, design, code and testing.

Oral and Written Communication:

Oral presentations are given by students during the project reviews.  A final project report containing the deliverables described in the laboratory section above will be required of all students.

Social and Ethical Issues:

Social and ethical issues in engineering are discussed throughout the course. Professional society guidelines and recommendations are reviewed. Understanding is assessed on exam questions.

Problem Analysis:

Students are required to participate in two large team projects involving complex data management and other technical issues. The projects provide practical experience in using the tools and software engineering concepts covered in the requirements and high-level design sections of the course.

Solution Design:

The projects are taken through the low-level design, coding, testing and delivery phases of the development life cycle.

Version & Date

Version 1, 5/8/2003

Comments

The first draft based on ACM curricula 2001 in the format of ABET sample course description.