Systems development
* Systems development
- Selecting a systems development approach
### definitely needs elaboration
- Software life cycle models
- Waterfall
- Iterative
- Phased development
- Spiral model
- Factors affecting the choice of the life cycle model
- Size
- Stability of requirements
- Categories of development techniques
- Data oriented
- Process oriented
- Behavior oriented
- Object oriented
- Component-based development
- Software as a component of a system
- Reusable components and repositories
- Integrating software components
- Developing using open source and open systems approaches
- Developing with packages
- Package acquisition and implementation
- Systems integration
- End-user development
- Specific methodologies
- Unified process
- Agile development
- Extreme programming
- Scrum
- Structured analysis and design
- Rapid Application Design (RAD)
- Prototyping
- Information Engineering
Requirements Analysis and Specification
- Requirements
- Definition of requirements
- Product and project constraints
- Internal and external system boundaries
- Functional requirements
- Non-functional requirements
- Safety
- Security
- Usability
- Performance
- Requirements process
- Analysis patterns
- Layers/levels of requirements
- Needs and goals
- User requirements
- System requirements
- Software requirements
- Quality of requirements
- Characteristics of requirements
- Testability
- Lack of ambiguity
- Consistency
- Correctness
- Traceability
- Priority
- Completeness
- Simplicity
- Verifiability
- Usefulness as basis for design
- Failure modes/Degraded operation mode
- Robustness
- Analysis of quality of requirements
- Methods for analyzing correctness
- Static analysis
- Simulation
- Model checking
- Analyzing non-functional requirements
- Requirements management
- Consistency management
- Change management
- Reuse
- Conflicting requirements, trade-off analysis
- Release planning
- Interaction between requirements and architecture
- Requirements in context
- Wicked problems
- Ill-structured problems
- Problems with many solutions
- Constraints
- Eliciting requirements
- Elicitation sources
- Stakeholders
- Domain experts
- Operational and organizational environments
- Elicitation techniques
- Interviews
- Questionnaires/surveys
- Prototypes
- Use cases
- Observation
- Prototypes
- Participatory techniques
- Ethnographic
- Archival documents
- Requirements specification & documentation
- Requirements specification notations
- Requirements documentation
- Types
- Audience
- Structure
- Quality
- Attributes
- Standards
- Acceptance criteria
- Acceptance test design
- Independence of specification
- Limitations
- Requirements validation
- Reviews and inspection
- Prototyping to validate requirements
- Validating quality attributes
- Formal requirements analysis
System modeling
- System modeling principles
- Models as partial views providing particular perspectives
- Decomposition
- Abstraction
- Generalization
- Projection/views
- Explicitness (make no assumptions, or state all assumptions)
- Information modeling
- Domain modeling
- Enterprise modeling
- Business processes
- Organizations
- Goals
- Systems modeling tools and techniques
- Modeling languages
- Group-based techniques
- JAD
- Structured walkthroughs
- Software modeling
- Modeling principles
- Use of formal approaches
- Pre and Post conditions
- Invariants
- Properties of modeling languages
- Syntax vs. semantics (understanding model representations)
- Specification Languages
- Formal (mathematical) specification languages
- Structured English
- Types of models
- Behavioral models
- State diagrams
- Activity diagrams
- Sequence diagrams
- Failure modes and effects analysis
- Fault tree analysis
- Structure models
- Class diagrams
- Object diagrams
- Component diagrams
- Embedded systems models
- Real-time schedulability analysis
- External interface analysis
System design
- System and subsystem division
- High quality design elements
- System-level strategies
- Diagnostics
- Hardware/software interface
- Interactions between design and requirements
- Design trade-offs
- Design to achieve performance measures
- Achieving reliability
- Availability modeling
- Redundancy
- Independence of designs
- Separation of concerns
- Specification of subsystems
- Impact of subcontracting
- Fault tolerance
- Error detecting
- Error correction
- Sofware approaches to tolerating hardware faults
- Dealing with failure
- Safety
- Concurrent hardware/software design
- Hard real-time requirements
- Hardware - software co-design
- Applications areas reuiring hardware/software coordination
- Software design
- Design principles
- Information hiding
- Cohesion
- Coupling
- Design for quality attributes
- Reliability
- Software reliability models
- Usability
- Performance
- Testability
- Fault tolerance
- Software fault-tolerance methods
- N-version programming
- Recovery blocks
- Rollback and recovery
- Reuse
- Software design methodologies
- Function-oriented
- Object-oriented
- Data-structure centered
- Aspect oriented
- Design for real-time and event-driven systems
- Architectural design
- Architectural styles
- Pipe-and-filter
- Layered
- Transaction-centered
- Peer-to-peer
- Publish-subscribe
- Event-based
- Client-server
- Architectural trade-offs
- Hardware issues in software architecture
- Requirements traceability in architecture
- Domain-specific architectures and product-lines
- Architectural notations
- Detailed design
- System and component interface design
- Component design
- Design notations
- System design support tools and evaluation
- Design support tools
- Design metrics
- Formal design analysis
Software Construction, Tools, Techniques
- Software Construction
- API design and use
- Code reuse and libraries
- Object-oriented run-time issues (e.g., dynamic binding)
- Parameterization and generics
- Assertions
- Fault tolerance
- Error handling
- Exception handling
- State-based and table-driven construction (e.g., Lex)
- Parsing (e.g., yacc)
- Run-time configuration
- Concurrency
- Construction techniques for distributed software
- Middleware
- Performance analysis
- Platform standards
- Test-first programming
- Software construction tools
- Selecting the development language
- Development environments
- Syntax-directed tools
- GUI builders
- Testing tools
- Profiling, performance analysis and slicing tools
- Formal methods for software construction
- Application of abstract machines
- Application of specification languages and methods
- Automatic generation of code from a specification
- Program derivation
- Analysis of candidate implementations
- Mapping of a specification to different implementations
- Refinement
System verification and validation
- V&V terminology and foundations
- Objectives and constraints of V&V
- Planning the V&V effort
- Documenting V&V strategy, including tests and other artifacts
- Metrics & measurement (e.g. reliability, usability, performance, etc.)
- V&V involvement at different points in the lifecycle
- Reviews
- Desk checking
- Walkthroughs
- Inspections
- Testing
- Testing techniques
- White box
- Coverage-based testing
- Branch coverage
- Path coverage
- Statement coverage
- Invariant testing
- Black box
- Operational profile-based testing
- Developing test cases based on use cases and/or customer stories
- Testing "approaches"
- Unit testing
- Stress testing
- Regression testing
- Interface testing
- Integration testing
- System-level and acceptance testing
- Testing across quality attributes
- Testing tools
- User interface testing and evaluation
- The variety of aspects of usefulness and usability
- Heuristic evaluation
- Cognitive walkthroughs
- Usability testing
- Observation sessions
- Logging user activity
- Web usability; testing techniques for web sites
- Formal experiments to test hypotheses about specific HCI controls
- Problem analysis and reporting
- Analyzing failure reports
- Problem tracking
- Debugging/fault isolation techniques
- Defect analysis
System Quality
- System quality concepts and culture
- Definitions of quality
- Society's concern for quality
- The costs and impacts of bad quality
- Cost of quality models
- Quality attributes for software (e.g. dependability, usability, etc.)
- The dimensions of quality engineering
- Roles of people, processes, methods, tools, and technology
- Software quality standards
- Organizational implementation of standards
- The ISO 9000 Quality Management Systems
- ISO/IEEE Standard 12207 Software Life Cycle Processes
- IEEE software quality-related standards
- Software quality processes
- Software quality models and metrics
- Quality-related aspects of software process models
- Introduction/overview of ISO 15504 and the SEI CMMs
- Quality-related process areas of ISO 15504
- Quality-related process areas of the SW-CMM and the CMMIs
- The Baldridge Award criteria as applied to software engineering
- Quality aspects of other process models
- Process assurance
- The nature of process assurance
- Quality planning
- Organizing and reporting for process assurance
- Techniques of process assurance
- Product assurance
- The nature of product assurance
- Distinctions between assurance and V&V
- Quality product models
- Root cause analysis and defect prevention
- Quality product metrics and measurement
- Assessment of product quality attributes (e.g. usability, reliability, availability, etc.)
System evolution
- Evolution processes
- Evolution and maintenance
- Relationship between evolving entities
- Models of software evolution
- Cost models of evolution
- Planning for evolution
- Evolution activities
- Working with legacy systems
- Program comprehension and reverse engineering
- System and process re-engineering (technical and business)
- Impact analysis
- Migration (technical and business)
- Refactoring
- Program transformation
- Data reverse engineering
- Types of evolution
- Defect removal
- Upgrade
- Enhancements
- Configuration management and version control
Specialized systems
- Safety critical systems
- Security critical systems
- High integrity functions
- Ensuring performance
- Risk and hazard analysis
- Strategies for risk reduction
- Risk control
- Implications for implementation
- Preliminary hazard analysis
- Concept of integrity level
- Quantification
- Impact on life cycle
- International standards
- Legal requirements
to top