
Software Engineering and Programming Best Practices |
|
Course Outline
Module 1 - The Software Engineering Process
- Requirements Specification
- Design and Implementation
- Validation
- Evolution
- Waterfall Model
- Incremental Development
Module 2 - Agile Software Development
- Principles of Agile Methods
- Problems with Agile Methods
- Extreme Programming
Module 3 - Software Design and Implementation
- Software Design Methods
- Software Tools
- Source code control
- Libraries and Code reuse
Module 4 - Software Testing
- Test Plans
- While Box Testing
- Black Box Testing
- Tools for automated testing
Module 5 - Secure Programming & Information Security Concepts
- Risks & Threats
- Information Assurance Pillars
- Risk Management
- Security Controls & Vulnerability Mitigation
- Designing Secure Architecture
Module 6 - Security Vulnerabilities
- Buffer Overflows
- Unvalidated input
- Integer Issues (Overflow & Underflow)
- Access Control
- Cryptography
- Logic errors
Module 7 - Programming Best Practices
- Safe Library Functions
- Assume All Input is Malicious / Validate Input
- Robust Integer Operations
- Fail-Safe Defaults
- Rigorous Testing
- Cryptography
- Exception Handling
- Minimize Data Collection via Error Messages
- Avoid Deprecated Functions
|