Skip to topic | Skip to bottom
Home
Main
Main.SoftwareEngineeringr1.9 - 02 Jun 2006 - 01:58 - Main.novatopic end

Start of topic | Skip to actions

Software Engineering

Approaches to systems development

  • Systems development life cycle
    • Software life cycle models
      • Waterfall
      • Iterative
      • Phased development
      • Spiral model
      • Agile development
        • Extreme programming
        • Scrum
    • Factors affecting the choice of the life cycle model
      • Size
      • Stability of requirements
  • Specific methodologies
    • Unified process
    • Extreme programming
    • Structured analysis and design
    • Rapid Application Design (RAD)
    • Prototyping
    • Information Engineering
  • Developing using open source and open systems approaches
  • Developing with packages
    • Package acquisition and implementation
    • Systems integration
  • Categories of development techniques
    • Data oriented
    • Process oriented
    • Behavior oriented
    • Object oriented
      • Support for reuse
      • Repositories
  • Component-based development
    • Software as a component of a system
    • Reusable components
    • Integrating software components
  • Selecting a systems development approach
  • End-user development

Project Management

  • Management concepts
    • General project management
    • Classic management models
    • Project management roles
    • Enterprise/Organizational management structure
    • Software management types (e.g. acquisition, project, development, maintenance, risk, etc.)
    • Managing multiple projects
  • Project planning
    • Evaluation and planning
    • Scoping
    • Project scheduling and milestones
      • Project scheduling and tracking tools
        • Gantt
        • PERT
    • Work breakdown structure
    • Task scheduling
    • Effort estimation
    • Cost estimation
      • Cost estimation techniques
      • Cost estimation tools
    • Cost/benefit analysis
    • Resource allocation
    • Risk analysis and management
      • Feasibility analysis
      • Contingency planning
    • Process model selection
  • Project personnel and organization
    • Organizational structures, positions, responsibilities, and authority
    • Formal/informal communication
    • Project staffing
    • Personnel training, career development, and evaluation
    • Meeting management
    • Building and motivating teams
    • Conflict resolution
  • Project control
    • Scope control
    • Change control
    • Monitoring and reporting
    • Measurement and analysis of results
    • Correction and recovery
    • Reward and discipline
    • Standards of performance
    • Project management documentation
    • Project close-down
  • Software configuration management
    • Revision control
    • Release management
    • Tool support
    • Builds
    • Software configuration management processes
    • Configuration management and version control during evolution
      • Legal requirement
      • Disaster planning
    • Distribution and backup
  • Documentation
    • Systems documentation
    • User documentation
    • Configuration documentation [link to configuration management]
  • Software metrics
    • Methods
      • COCOMO
      • Function points

Requirements Analysis and Specification

  • Requirements
    • Definition of requirements
      • Product and project constraints
      • Internal and external system boundaries
      • Functional and non-functional requirements
    • Requirements process
    • 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
        • Robustness
      • Analysis of quality of requirements
        • Methods for analyzing correctness
          • Static analysis
          • Simulation
          • Model checking
        • Analyzing non-functional requirements
          • Safety
          • Security
          • Usability
          • Performance
    • Managing changing requirements
    • Requirements management
      • Consistency management
      • Release planning
      • Reuse
      • Analysis patterns
      • Managing conflicting requirements, trade-off analysis
    • Interaction between requirements and architecture
    • Requirements in context
    • Wicked problems
      • Ill-structured problems
      • Problems with many solutions
    • Constraints
      • COTS
      • Existing systems
  • Eliciting requirements
    • Elicitation sources (e.g., stakeholders, domain experts, operational and organization environments)
      • 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 documentation
      • Types
      • Audience
      • Structure
      • Quality
      • Attributes
      • Standards
    • Software requirements specification
    • Requirements specification notations
  • Requirements validation
    • Reviews and inspection
    • Prototyping to validate requirements
      • Summative prototyping
    • Test planning
      • Independence of specification
      • Safety cases
      • Limitations
      • Degraded operation mode
      • Acceptance test design
    • Validating product quality attributes
    • Formal requirements analysis [link to formal specification languages]

System modeling

  • System modeling principles
    • Decomposition
    • Abstraction
    • Generalization
    • Projection/views
    • Explicitness (make no assumptions, or state all assumptions)
    • Abstraction
      • Classification
      • Classes
      • Types and instances
      • Inheritance
      • Association and aggregation
  • Information modeling
    • Entity Relationship Models
    • Class Diagrams
    • Other
  • Domain modeling
  • Enterprise modeling
    • Business processes
    • Organizations
    • Goals
  • Systems development tools and techniques
    • Modeling languages
      • UML
      • IDEF1
    • Development tools
      • CASE tools
    • Group-based techniques
      • JAD
      • Structured walkthroughs
      • Design and code reviews
  • 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
        • Z
        • VDM
        • SCR
        • RSML
      • Structured English
    • Types of models
      • Behavioral modeling
        • State diagrams
        • Activity diagrams
        • Sequence diagrams
        • Failure modes and effects analysis
        • Fault tree analysis
      • Structure modeling
        • Class diagrams
        • Object diagrams
        • Component diagrams
      • Modeling embedded systems
        • 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
      • Selection of subcontractor
      • Fault tolerance
        • Error detecting
        • Error correction
        • Sofware approaches to tolerating hardware faults
        • Dealing with failure
    • Safety
  • Common-cause-failure
  • Concurrent hardware/software design
    • Applications areas reuiring hardware/software coordination
      • Speech coders
      • Radio modems
    • Hard real-time requirements
    • Hardware - software co-design
  • 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
        • Design patterns
      • 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
        • Component design
        • Component and system interface design
      • Design notations
    • Design support tools and evaluation
      • Design support tools
      • Design metrics
      • Formal design analysis

Software Construction, Tools, Techniques

  • Software Construction
    • API design and use
    • Code resues 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
      • Internationalization * Concurrency primitives (OR OS?)
      • semaphores
      • monitors * Other locking mechanisms * Construction techniques for distributed software * Middleware
    • Constructing heterogeneous (hardware plus software) systems
    • Performance analysis
    • Platform standards
    • Test-first programming
  • Software construction tools
    • Development environments
    • Syntax-directed tools
    • GUI builders
    • Testing tools
    • Selecting the development language
    • 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
    • Types of testing
      • White box
      • Black box
      • Unit testing
      • Stress testing
      • Regression testing
      • Interface testing
      • Integration testing
    • Exception handling
    • Coverage analysis
    • Developing test cases based on use cases and/or customer stories
    • Operational profile-based testing
    • Hardware testing
      • Printed circuit board testing
      • MCM testing
      • core-based testing
    • System-level and acceptance testing
    • Testing across quality attributes
    • Testing tools
    • Deployment process
  • Human computer user interface testing and evaluation
    • The variety of aspects of usefulness and usability
    • Heuristic evaluation
    • Cognitive walkthroughs
    • User testing approaches (observation sessions etc.)
    • Web usability; testing techniques for web sites
    • Formal experiments to test hypotheses about specific HCI controls
  • Problem analysis and reporting
    • Analyzing failure reports
    • Debugging/fault isolation techniques
    • Defect analysis
    • Problem tracking

System Quality

  • System quality concepts and culture
    • Definitions of quality
    • Society's concern for quality
    • The costs and impacts of bad quality
    • A cost of quality model
    • 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
    • The ISO 9000 Quality Management Systems
    • ISO/IEEE Standard 12207 Software Life Cycle Processes
    • Organizational implementation of standards
    • 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 implementation

  • System integration
  • System conversion
  • Training
  • Installation

System evolution

  • Evolution processes
    • Evolution and maintenance
    • Relationship between evolving entities (e.g. assumptions, requirements, architecture, design, code, etc.)
    • Models of software evolution (e.g. theories, laws, etc.)
    • Cost models of evolution
    • Planning for evolution (e.g. outsourcing, in-house, etc.)
  • Evolution activities
    • Working with legacy systems (e.g. use of wrappers, etc.)
    • 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
    • [Link to Project management]

Specialized systems

  • Safety critical systems
    • Safety plan
  • 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
  • Types of evolution
    • Defect removal
    • Upgrade
    • Enhancements
  • Configuration management and version control
    • [Link to Project management]

Specialized systems

  • Safety critical systems
    • Safety plan
  • 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

You are here: Main > VillanovaWikiPages > OntologyProject > SoftwareEngineering

to top

Copyright © 1999-2009 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback