Software Engineering Education Knowledge (SEEK) Areas (Draft)


AREA

DESCRIPTION

UNITS

Foundations The foundations of software engineering consist of the theoretical and scientific underpinnings describing attributes of the artifacts that software engineering produces, the mathematical foundations to model and facilitate reasoning about these artifacts and their interrelations, and the first principles that when applied produce predictable results; i.e., products with the desired attributes.  
Requirements Requirements are the expression of the characteristics that a software system must possess in order to meet the needs of the client. Requirements engineering includes an analysis of the possibility of the existence of the desired system, elicitation of the client's needs, a definition of these activities, a representation of what the system will or won't do, validation of this specification by the client, the evolution of these requirements during the lifetime of the resulting software system, and includes notations for representing requirements formally and informally.  
Design This area is concerned with techniques, strategies, representations and patterns used to determine how to implement a component or system. The design will conform to functional requirements within the constraints imposed by other requirements such as performance, reliability, and security. This area also includes, but is not limited to, specification of internal interfaces among software components, architectural design, data design, user interface design, design tools, and the evaluation of designs.  
Construction This area is concerned with knowledge about the development of the software components that are identified and described in the design documents. This area includes knowledge translation of a design into an implementation language, the development and execution of component tests, and the development and use of program documentation.  
Maintenance This area is concerned with all activities that take place following the initial release of software. It includes techniques for handling evolution of software such as re-engineering, reverse engineering, program comprehension, process implementation, problem and modification analysis, modification implementation, maintenance review/acceptance, migration and retirement.  
Process This area is concerned with knowledge about the description of commonly used software life-cycle process models and the contents of institutional process standards; definition, implementation, measurement, management, change and improvement of software processes; and use of a defined process to perform the technical and managerial activities needed for software development and maintenance.  
Quality This area is concerned with knowledge about the improvement of software artifacts or processes to meet the needs of stakeholders better. Quality includes usability, reliability, safety, security, maintainability, flexibility, efficiency, performance and availability. The concern for quality is pervasive throughout the software engineering process.  
Management This area is concerned with knowledge about the planning, organization, and monitoring of all software life cycle phases. Management is critical to ensure that software development projects are appropriate to an organization, work in different organizational units is coordinated, software versions and configurations are maintained, resources are available when necessary, project work is divided appropriately, communication is facilitated, and progress is accurately charted.  

Last edited:  03/25/2002 10:54 AM