Software engineers must be able to perform the following.
- Analysis of the intended Application to determine the
technical requirements of a proposed computer system, and recording those
requirements in a precise, well-organized document for review by
others. After approval by the customer or representative of future
users, this document will serve as a specification for the design, review,
and testing of the system.
- Design of the computer system configuration, determining
which functions will be implemented in hardware, which functions will be
implemented in software, and selecting the basic hardware and software
components. Recording these decisions precisely so that they can be
reviewed by others.
- Analysis of the performance of a proposed design
(either analytically or by simulation) to make sure that the proposed system
can meet the application's requirements.
- Designing the basic structure of the software, i.e. its
division into modules, and the structure of individual programs; precisely
documenting software design decisions.
- Analysis of the software structure for completeness,
consistency and suitability for the application.
- Implementing the software as a set of well structured and
well documented programs.
- Integrating new software with existing or commercial COTS
software.
- Systematic and statistical testing of a computer system
including the software.
- Revising and enhancing software systems, retaining their
conceptual integrity and keeping all documents complete and accurate.