D. Software
- D.0 GENERAL
- D.1 PROGRAMMING TECHNIQUES
(see also E)
- D.1.0 General
- D.1.1 Applicative (Functional) Programming
- D.1.2 Automatic Programming
(see also I.2.2)
- D.1.3 Concurrent Programming
- Distributed programming
- Parallel programming
- D.1.4 Sequential Programming
- D.1.5 Object-oriented Programming
- D.1.6 Logic Programming
- D.1.7 Visual Programming
- D.1.m Miscellaneous
- D.2 SOFTWARE ENGINEERING
(see also K.6.3)
- D.2.0 General
(see also K.5.1)
- Protection mechanisms
- Standards
- D.2.1 Requirements/Specifications
(see also D.3.1)
- Elicitation methods (e.g., rapid prototyping, interviews, JAD) (new)
- Languages (retired since 1998)
- Methodologies (e.g., object-oriented, structured) (revised 1998)
- Tools
- D.2.2 Design Tools and Techniques (revised 1998)
- Computer-aided software engineering (CASE)
- Decision tables
- Evolutionary prototyping (new)
- Flow charts
- Modules and interfaces
- Object-oriented design methods (new)
- Petri nets
- Programmer workbench (retired since 1998)
- Software libraries
- State diagrams (new)
- Structured programming (retired since 1998)
- Top-down programming (retired since 1998)
- User interfaces
- D.2.3 Coding Tools and Techniques (revised 1998)
- Object-oriented programming (new)
- Pretty printers
- Program editors
- Reentrant code (retired since 1998)
- Standards
- Structured programming (new)
- Top-down programming (new)
- D.2.4 Software/Program Verification (revised 1998)
(see also F.3.1)
- Assertion checkers
- Class invariants (new)
- Correctness proofs
- Formal methods (new)
- Model checking (new)
- Programming by contract (new)
- Reliability
- Statistical methods (new)
- Validation
- D.2.5 Testing and Debugging
- Code inspections and walk-throughs
- Debugging aids
- Diagnostics (retired since 1998)
- Distributed debugging (new)
- Dumps (retired since 1998)
- Error handling and recovery
- Monitors
- Symbolic execution
- Testing tools (e.g., data generators, coverage testing) (revised 1998)
- Tracing
- D.2.6 Programming Environments
- Graphical environments (new)
- Integrated environments (new)
- Interactive environments (revised 1998)
- Programmer workbench (new)
- D.2.7 Distribution, Maintenance, and Enhancement (revised 1998)
- Corrections (retired since 1998)
- Documentation
- Enhancement (retired since 1998)
- Extensibility (retired since 1998)
- Portability (retired since 1998)
- Restructuring, reverse engineering, and reengineering (revised 1998)
- Version control
- D.2.8 Metrics
(see also D.4.8)
- Complexity measures
- Performance measures
- Process metrics (new)
- Product metrics (new)
- Software science (retired since 1998)
- D.2.9 Management
(see also K.6.3,
K.6.4)
- Copyrights (retired since 1998)
- Cost estimation
- Life cycle
- Productivity
- Programming teams
- Software configuration management
- Software process models (e.g., CMM, ISO, PSP) (new)
- Software quality assurance (SQA)
- Time estimation
- D.2.10 Design (retired since 1998)
(see also D.2.2)
- Methodologies (retired since 1998)
- Representation (retired since 1998)
- D.2.11 Software Architectures (new)
- Data abstraction (new)
- Domain-specific architectures (new)
- Information hiding (new)
- Languages (e.g., description, interconnection, definition) (new)
- Patterns (e.g., client/server, pipeline, blackboard) (new)
- D.2.12 Interoperability (new)
- Data mapping (new)
- Distributed objects (new)
- Interface definition languages (new)
- D.2.13 Reusable Software (new)
- Domain engineering (new)
- Reusable libraries (new)
- Reuse models (new)
- D.2.m Miscellaneous
- Rapid prototyping (retired since 1998)
- Reusable software (retired since 1998)
- D.3 PROGRAMMING LANGUAGES
- D.3.0 General
- D.3.1 Formal Definitions and Theory
(see also D.2.1,
F.3.1,
F.3.2,
F.4.2,
F.4.3)
- D.3.2 Language Classifications
- Applicative (functional) languages (revised 1998)
- Concurrent, distributed, and parallel languages
- Constraint and logic languages (new)
- Data-flow languages
- Design languages
- Extensible languages
- Macro and assembly languages
- Microprogramming languages (retired since 1998)
- Multiparadigm languages (new)
- Nondeterministic languages (retired since 1998)
- Nonprocedural languages (retired since 1998)
- Object-oriented languages
- Specialized application languages
- Very high-level languages
- D.3.3 Language Constructs and Features
(see also E.2)
- Abstract data types
- Classes and objects (new)
- Concurrent programming structures
- Constraints (new)
- Control structures
- Coroutines
- Data types and structures
- Dynamic storage management
- Frameworks (new)
- Inheritance (new)
- Input/output
- Modules, packages
- Patterns (new)
- Polymorphism (new)
- Procedures, functions, and subroutines
- Recursion
- D.3.4 Processors
- Code generation
- Compilers
- Debuggers (new)
- Incremental compilers (new)
- Interpreters
- Memory management (garbage collection) (new)
- Optimization (retired since 1998)
- Parsing
- Preprocessors
- Retargetable compilers (new)
- Run-time environments
- Translator writing systems and compiler generators
- D.3.m Miscellaneous
- D.4 OPERATING SYSTEMS
(see also C)
- D.4.0 General
- D.4.1 Process Management
- Concurrency
- Deadlocks
- Multiprocessing/multiprogramming/multitasking (revised 1998)
- Mutual exclusion
- Scheduling
- Synchronization
- Threads (new)
- D.4.2 Storage Management
- Allocation/deallocation strategies
- Distributed memories
- Garbage collection (new)
- Main memory
- Secondary storage
- Segmentation (retired since 1998)
- Storage hierarchies
- Swapping (retired since 1998)
- Virtual memory
- D.4.3 File Systems Management
(see also E.5)
- Access methods
- Directory structures
- Distributed file systems
- File organization
- Maintenance (retired since 1998)
- D.4.4 Communications Management
(see also C.2)
- Buffering
- Input/output
- Message sending
- Network communication
- Terminal management (retired since 1998)
- D.4.5 Reliability
- Backup procedures
- Checkpoint/restart
- Fault-tolerance
- Verification (retired since 1998)
- D.4.6 Security and Protection
(see also K.6.5)
- Access controls
- Authentication
- Cryptographic controls
- Information flow controls
- Invasive software (e.g., viruses, worms, Trojan horses)
- Security kernels (retired since 1998)
- Verification (retired since 1998)
- D.4.7 Organization and Design
- Batch processing systems (retired since 1998)
- Distributed systems
- Hierarchical design (retired since 1998)
- Interactive systems
- Real-time systems and embedded systems
- D.4.8 Performance
(see also C.4,
D.2.8,
I.6)
- Measurements
- Modeling and prediction
- Monitors
- Operational analysis
- Queueing theory (retired since 1998)
- Simulation (retired since 1998)
- Stochastic analysis
- D.4.9 Systems Programs and Utilities
- Command and control languages
- Linkers (retired since 1998)
- Loaders (retired since 1998)
- Window managers
- D.4.m Miscellaneous
- D.m MISCELLANEOUS
- Software psychology (retired since 1998)