# Computer Systems Engineering

This is a book about Computer Systems Engineering. A frequent occurrence in the design of computer systems is the challenge of building a system containing hardware and software components, possibly as part of a larger system. The development of computer systems themselves falls within this scope as does the development of a vast array of devices such as digital cameras, hand-held computers, location aware systems, robots and other types of embedded systems, and even such applications as web sites on spacecraft.
In all of these cases decisions have to be made about how to design the system to have the maximum impact and effect. Decisions have to be made about alternative approaches, trade-offs need to be addressed, and decisions on all the many facets of design must be justified through technical and economic insight and judgment. Systems engineering is the discipline within which these matters are addressed in a carefully considered fashion.
The IEEE Computer Society (IEEE-CS) and the Association for Computing Machinery (ACM), the two principle computer related professional associations, include a computer systems engineering requirement in their model computer engineering body of knowledge described in Computer Curriculum 2001. This book addresses that requirement; the Table of Contents closely follows the coverage of material in the computer systems engineering body of knowledge. It is intended primarily as a textbook for students in computer science and computer engineering, but it may also serve as a useful reference for professionals as they design and build computer based systems.
The text assumes that students have a background including integral and differential calculus, basic probability, and are familiar with basic computer architecture. A third-year student in computer science or computer engineering would typically have this background and this book would be appropriate for a computer systems engineering course at that level.

## Table of Contents
### System Models and Analysis

* Reliability models (Aug 30, 2007)
* Markov models (Aug 30, 2007)
* Queueing system models (Aug 23, 2007)
* Life cycle cost models (Aug 23, 2007)

### Requirements Analysis and Elicitation

* Identification of need, feasibility and economic considerations (Aug 23, 2007)
* Determining requirements (Aug 23, 2007)
* Human factors, issues, standards (Aug 23, 2007)
* Non-functional requirements (Aug 23, 2007)

### Specification

* Functional and non-functional specifications (Aug 23, 2007)
* Quality, completeness, consistency, simplicity, verifiability, basis for design (Aug 23, 2007)
* Specification in the event of failure (Aug 23, 2007)
* Degraded modes of operation (Aug 23, 2007)
* Safety (Aug 23, 2007)

### System Architectural Design

* Subdivision into subsystems (Aug 23, 2007)
* Elements of a high quality design (Aug 23, 2007)
* System-level design strategies (Aug 23, 2007)
* Approaches to architectural design (Aug 23, 2007)
* Design for performance, reliability, manufacturability, maintainability, etc. (Aug 23, 2007)
* Failure modes (Aug 23, 2007)
* Common cause failures (Aug 23, 2007)

### Implementation

* Choosing technologies (Aug 23, 2007)
* Rapid application development (Aug 23, 2007)
* Role of standards (Aug 23, 2007)

### Testing

* Types of testing (Aug 23, 2007)
* Test plans (Aug 23, 2007)
* Regression testing (Aug 23, 2007)

### Maintenance

* Types of maintenance (Aug 23, 2007)
* Maintenance measurement (Aug 23, 2007)
* Configuration management (Aug 23, 2007)

### Project Management

* Resource allocation (Aug 23, 2007)
* Allocation of decision making responsibility (Aug 23, 2007)
* Project planning, Gantt charts (Aug 23, 2007)
* Management metrics (Aug 23, 2007)

### Hardware and Software Co-design

* Application areas where coordinated development is important (Aug 23, 2007)
* Demands of hard real-time features (Aug 23, 2007)
* Hardware and software co-design and trade-offs (Aug 23, 2007)

### Appendices

* Probability (Aug 30, 2007)
* Poisson Processes (Aug 30, 2007)

## Resources and Further Reading

* Microprocessor Design
* Embedded Systems
* Assembly Language