What You Will Learn
Understanding, clarifying and documenting the requirements for a customer.
Planning and managing a project, including effort estimation, risk analysis, contingency planning, and re-planning if the schedule is not met.
Designing a software system at the architectural and detailed levels.
Communicating and justifying design decisions.
Reviewing and testing designs and implementations.