Topics to be covered
1.
Why
and How to Study Software Engineering
1.1.
Software's
Role in the World
1.1.1.
Where
and how is it used?
1.1.2.
Software
Economics
1.1.3.
Sociological
Issues
1.2.
The
nature of software
1.2.1.
What
makes it different?
1.2.2.
What
is it like?
1.2.3.
Some
useful analogies
1.2.4.
Some
desirable qualities
1.3.
Engineering
Software
1.3.1.
Software
Product Anatomy
1.3.2.
Stakeholders
and their Stakes
1.3.3.
Software
Processes
2.
Software
Product/Artifact Representation
2.1.
The
Central Role of Representation
2.1.1.
Communication/Coordination
2.1.2.
Quality
Evaluation
2.1.3.
Analysis,
comparison, understanding
2.2.
Abstraction
Ð a historical perspective
2.3.
Approaches
2.3.1.
Informal
approaches
2.3.1.1.
Natural
language
2.3.1.2.
Structured
Natural Language
2.3.2.
Pictorial
and diagrammatic approaches
2.3.2.1.
Boxologies
2.3.2.2.
Charts
and Graphs
2.3.3.
Formalized
approaches
2.3.3.1.
Dataflow
Diagrams
2.3.3.2.
State
Diagrams and Charts
2.3.3.3.
Petri
Nets
2.3.3.4.
Programming
Languages
2.3.4.
Mathematical
and formal approaches
2.3.4.1.
Formal
specifications overview
2.3.4.2.
Z
2.3.4.3.
Algebraic
Specifications
2.3.4.4.
Predicate
Logic
2.3.5.
An
Introduction to UML
2.3.5.1.
UML fundamentals
2.3.5.2.
Four
views into the software development process (Use case, Logical, Component,
Deployment views)
2.3.5.3.
Examples
3. A Careful Look at Software Products, Their Specification, and the Processes Associated with them:
3.1. Requirements
3.1.1 What are they for?
3.1.2 What is their anatomy?
3.1.3. Representation Approaches
3.1.3.1. General Approaches
3.1.3.2. Some Examples
3.1.4. Associated Processes
3.2. Designs and Architectures
3.2.1 What are they for?
3.2.2. What is their anatomy?
3.2.3 Representation Approaches and
Examples
3.2.4. Associated Processes
3.2.4.1. Developing Designs
- Philosophical Approaches
- Some Examples of Design
Methods
- Rigorous Design
Method Comparison
3.2.4.2. Analysis/Validation/Testing of Designs
3.2.5. Design Methodology Comparison
3.3. Code
3.3.1. Code Paradigms and Languages
3.3.2. Coding Styles and Practices
3.3.3. Associated Processes
3.3.3.1. Testing and Analysis of Code
4. Software
Process Representation
4.1. The role of process in software
engineering
4.2.
Software
process representation approaches
4.2.1.
Informal
approaches
4.2.2.
Pictorial
approaches
4.2.3.
Programming
Languages
4.2.3.1.
Process requirements
4.2.3.2. Process models
4.2.3.3. Process Code
4.3.
Process Execution
4.4
Process
Improvement: The Capability Maturity
Model (CMM)
5. Some
Additional Software Processes:
5.1. Lifecycle Testing and Analysis (and
Perpetual Testing)
5.2. Configuration Management
5.3. Version Control
5.4. Reuse
5.5. Evolution/Maintenance