User:Dfletter/ACM Mapping to WP/Software

=D. Software= Wiki category:Software, Wiki Category:Programming

D.1 PROGRAMMING TECHNIQUES
(E) Wiki Category:Programming_paradigms

D.1.1 Applicative (Functional) Programming
Wiki Category:Functional_programming

D.1.2 Automatic Programming
(I.2.2)

D.1.3 Concurrent Programming

 * Distributed programming
 * Parallel programming

D.1.5 Object-oriented Programming
Wiki Category:Object-oriented_programming

D.1.6 Logic Programming
Wiki Category:Logic_programming

D.1.m Miscellaneous
Wiki Category:Aspect-oriented_programming

D.2 SOFTWARE ENGINEERING
(K.6.3) Wiki Category:Software_engineering

D.2.0 General
(K.5.1) Wiki category:software development], Wiki [[:Category:Software_engineering_disasters, Wiki Category:Software_engineering_papers
 * Protection mechanisms
 * Standards

D.2.1 Requirements/Specifications
(D.3.1)
 * Elicitation methods (e.g., rapid prototyping, interviews, JAD)
 * Languages
 * Methodologies (e.g., object-oriented, structured)
 * Tools

D.2.2 Design Tools and Techniques

 * Computer-aided software engineering (CASE)
 * Decision tables
 * Evolutionary prototyping
 * Flow charts
 * Modules and interfaces
 * Object-oriented design methods
 * Petri nets
 * Software libraries
 * State diagrams
 * User interfaces

D.2.3 Coding Tools and Techniques

 * Object-oriented programming
 * Pretty printers
 * Program editors
 * Reentrant code [**]
 * Standards
 * Structured programming
 * Top-down programming

D.2.4 Software/Program Verification
(F.3.1) Wiki category:Formal methods
 * Assertion checkers
 * Class invariants
 * Correctness proofs
 * Formal methods
 * Model checking
 * Programming by contract
 * Reliability
 * Statistical methods
 * Validation

D.2.5 Testing and Debugging
Wiki Category:Software_testing
 * Code inspections and walk-throughs
 * Debugging aids
 * Diagnostics
 * Distributed debugging
 * Error handling and recovery
 * Monitors
 * Symbolic execution
 * Testing tools (e.g., data generators, coverage testing)
 * Tracing

D.2.6 Programming Environments

 * Graphical environments
 * Integrated environments
 * Interactive environments
 * Programmer workbench

D.2.7 Distribution, Maintenance, and Enhancement
Wiki category:Documentation generators, Wiki Category:Version_control_systems


 * Documentation
 * Portability
 * Restructuring, reverse engineering, and reengineering
 * Version control

D.2.8 Metrics
(D.4.8) Wiki category:Software metrics
 * Complexity measures
 * Performance measures
 * Process metrics
 * Product metrics

D.2.9 Management
(K.6.3, K.6.4)
 * Cost estimation
 * Life cycle
 * Productivity
 * Programming teams
 * Software configuration management
 * Software process models (e.g., CMM, ISO, PSP)
 * Software quality assurance (SQA)
 * Time estimation

D.2.11 Software Architectures
Wiki Category:Software_architecture
 * Data abstraction
 * Domain-specific architectures
 * Information hiding
 * Languages (e.g., description, interconnection, definition)
 * Patterns (e.g., client/server, pipeline, blackboard)

D.2.12 Interoperability

 * Data mapping
 * Distributed objects
 * Interface definition languages

D.2.13 Reusable Software

 * Domain engineering
 * Reusable libraries
 * Reuse models

D.3 PROGRAMMING LANGUAGES
Wiki Category:Programming languages

D.3.0 General
(Wiki Category:Lists_of_programming_languages, )


 * Standards

D.3.1 Formal Definitions and Theory (D.2.1, F.3.1, F.3.2, F.4.2, F.4.3)

 * Semantics
 * Syntax

D.3.2 Language Classifications
Wiki Category:Programming_language_families
 * Applicative (functional) languages
 * Concurrent, distributed, and parallel languages
 * Constraint and logic languages
 * Data-flow languages
 * Design languages
 * Extensible languages
 * Macro and assembly languages
 * Multiparadigm languages
 * Object-oriented languages
 * Specialized application languages
 * Very high-level languages

D.3.3 Language Constructs and Features
(E.2)
 * Abstract data types
 * Classes and objects
 * Concurrent programming structures
 * Constraints
 * Control structures
 * Coroutines
 * Data types and structures
 * Dynamic storage management
 * Frameworks
 * Inheritance
 * Input/output
 * Modules, packages
 * Patterns
 * Polymorphism
 * Procedures, functions, and subroutines
 * Recursion

D.3.4 Processors

 * Code generation
 * Compilers
 * Debuggers
 * Incremental compilers
 * Interpreters
 * Memory management (garbage collection)
 * Optimization
 * Parsing
 * Preprocessors
 * Retargetable compilers
 * Run-time environments
 * Translator writing systems and compiler generators

D.4 OPERATING SYSTEMS
(C) Wiki Category:System software, Wiki Category:Operating systems

D.4.1 Process Management

 * Concurrency
 * Deadlocks
 * Multiprocessing/multiprogramming/multitasking
 * Mutual exclusion
 * Scheduling
 * Synchronization
 * Threads

D.4.2 Storage Management

 * Allocation/deallocation strategies
 * Distributed memories
 * Garbage collection
 * Main memory
 * Secondary storage
 * Storage hierarchies
 * Virtual memory

D.4.3 File Systems Management
(E.5)
 * Access methods
 * Directory structures
 * Distributed file systems
 * File organization

D.4.4 Communications Management
(C.2)
 * Buffering
 * Input/output
 * Message sending
 * Network communication

D.4.5 Reliability

 * Backup procedures
 * Checkpoint/restart
 * Fault-tolerance
 * Verification

D.4.6 Security and Protection
(K.6.5) Wiki Category:Security_software
 * Access controls
 * Authentication
 * Cryptographic controls
 * Information flow controls
 * Invasive software (e.g., viruses, worms, Trojan horses)

D.4.7 Organization and Design

 * Distributed systems
 * Interactive systems
 * Real-time systems and embedded systems

D.4.8 Performance
(C.4, D.2.8, I.6)
 * Measurements
 * Modeling and prediction
 * Monitors
 * Operational analysis
 * Queueing theory
 * Simulation
 * Stochastic analysis

D.4.9 Systems Programs and Utilities

 * Command and control languages
 * Window managers