Candidates must be aware of the fundamental principles underlying Software Engineering and understand why an ‘engineering discipline’ is required to develop high quality software systems.
Engineering vs Programming
Programming in the Large vs Programming in the Small
High Quality Software Systems vs Software Programs
8b PROCESS MODELS
Candidates should be aware that there are many process models that can be used as the basis for a software development life-cycle:
Overview of Process Models and their importance
V-model
V-model with prototyping
Evolutionary Development
Incremental Development
Spiral Model
Cleanroom Process Model
DSDM (a process model not a method)
Comparison of Models
8c DEVELOPMENT METHODS AND TECHNIQUES
Candidates should show a theoretical and practical understanding of the following:
Structured Methods and Techniques (e.g. SSADM)
DataFlow Diagrams
Entity-Relationship Diagrams
State Transition Diagrams
Statecharts
Object Oriented Methods and Techniques (e.g. UML)
Use Cases
Class Diagrams
Behaviour Diagrams (e.g. collaboration diagram)
Implementation Diagrams (e.g. component diagram)
Formal Methods
VDM, Z, B
CSP, Mascot, Petri-Nets
8d SOFTWARE DEVELOPMENT LIFE CYCLE
Candidates should show a practical understanding of developing software products through a development life-cycle:
Requirements
Requirements Analysis and Capture
Requirements Engineering, e.g. CORE
Requirements Tracking
Functional Requirements
Non-Functional Requirements
Specification
Refinement of Requirements
Natural Language Specification
Diagrammatic
Formal, Mathematical Specification
Use of Abstraction
Rapid Prototyping
Design
Refinement of Specifications
System Architectures
Different Design Approaches
Design Trade-Offs (e.g. modular vs performance)
Performance Modelling/ Simulation
Structured Design vs OO Design
Implementation
Encapsulation and Modularistion
Information Hiding (ADTs/ Interfaces)
Coupling and Cohesion
Component Reuse
Debugging
Performance Measurement
Validation and Verification
Testing; black-box and white box, statistical
Formal Proof
Correctness Arguments
Inspections and Reviews
Static and Dynamic Analysis Tools
Using the Compiler
Maintenance
8e PROJECT MANAGEMENT
Risk Management
Team Management (Personnel and Technical)
Project Planning (Resource and Technical)
Education and Training
Cost Estimation
Project Scheduling
8f SOFTWARE QUALITY
Software Quality Assurance
Configuration Management and Change Control
Software Tools
The 'ilities'
Standards
Documentation
Metrics