Overview
This course demonstrates through hands-on practice the fundamentals and applications of software engineering, requirements engineering and testing.
Course Outline
Software Engineering 5 days
Day 1: Project Management
- Project versus line management and maintenance and support
- Project definition and project forms
- Management – general rules and project management
- Management styles
- What is special for IT projects?
- Basic project process
- Iterative, incremental, waterfall, agile and lean project process
- Project phases
- Project roles
- Project documentation and other artefacts
- Soft factors and peopleware
- PRINCE 2, PMBOK, PMI, IPMA and other project standards
Day 2: Business Analysis and Requirements Engineering Fundamentals
- Defining business goals
- Business analysis, business process management, business process improvement
- The boundary between business and system analysis
- System stakeholders, system users, system context and system boudaries
- Why are requirements necessary?
- What us requirements engineering
- The boundary between requirements engineering and architectural design
- Where is requirements engineering often hidden?
- Requirements engineering in iterative, lean, and agile development and in continuous integration – FDD, DDD, BDD, TDD
- Basic requirements engineering process, roles and artefacts
- Standards and certifications: BABOK, ISO/IEEE 29148, IREB, BCS, IIBA
Day 3: Architecture and Development Fundamentals
- Programming languages – structural and object-oriented paradigms
- Object-oriented development – how much is history, how much is the future
- Modularity, portability, maintainability and scalability of architectures
- Definition and type of software architectures
- Enterprise architecture and system architecture
- Programming styles
- Programming environments
- Programming mistakes and how to avoid and prevent them
- Modelling architecture and components
- SOA, Web Services and micro-services
- Automatic build and continuous integration
- How much architecture design is there on a project?
- Extreme programming, TDD and re-factoring
Day 4: Quality Assurance and Testing Fundamentals
- Product quality: what is it? ISO 25010, FURPS etc.
- Product quality, user experience, Kano Model, customer experience management and integral quality
- User-centred design, personas and other ways to make quality individual
- Just-enough quality
- Quality Assurance and Quality Control
- Risk strategies in quality control
- The components of quality assurance: requirements, process control, configuration and change management, verification, validation, testing, static testing and static analysis
- Risk-based quality assurance
- Risk-based testing
- Risk-driven development
- Boehm’s curve in quality assurance and in testing
- The four testing schools – which suits your need?
Day 5: Process Types, Maturity and Process Improvement
- The evolution of IT process: from Alan Turing through Big Blue to lean startup
- Process and process-oriented organization
- The history of processes in crafts and industries
- Process modelling: UML, BPMN and more
- Process management, process optimization, process re-engineering and process management systems
- Innovative process approaches: Deming, Juran, TPS, Kaizen
- Is (process) quality free? (Philip Crosby)
- The need and history of maturity improvement: CMMI, SPICE and other maturity scales
- Special types of maturity: TMM, TPI (for testing), Requirements Engineering Maturity (Gorschek)
- Process maturity versus product maturity: any correlation? Any causal relationship?
- Process maturity versus business success: any correlation? any causal relationship?
- A forsaken lesson: Automated Defect Prevention and The Next Leap in Productivity
- Attempts: TQM, SixSigma, agile retrospectives, process frameworks
Requirements Engineering – 2 days
Day 1: Requirements Elicitation, Negotiation, Consolidation and Management
- Finding requirements: what, when and by whom
- Stakeholder classification
- Forgotten stakeholders
- Defining system context – defining requirements sources
- Elicitation methods and techniques
- Prototyping, personas, and requirements elicitation through testing (exploratory and otherwise)
- Marketing and requirements elicitation – MDRA (“Market-Driven Requirements Engineering”)
- Prioritising requirements: MoSCoW, Karl Wiegers and other techniques (including agile MMF)
- Refining requirements – agile “specification by example”
- Requirements negotiation: types of conflicts, conflict-solving methods
- Solving internal incongruence between some types of requirements (e.g. security versus ease of use)
- Requirements traceability – why and how
- Requirements status changes
- Requirements CCM, versioning and baselines
- Product view and project view on requirements
- Product management and requirements management in projects
Day 2: Requirements Analysis, Modelling, Specification, Verification and Validation
- Analysis is the thinking and re-thinking you do between elicitation and specification
- Requirements process is always iterative, even in sequential projects
- Describing requirements in natural language: risks and benefits
- Requirements modelling: benefits and costs
- The rules for using natural language for requirements specification
- Defining and managing requirements glossary
- UML, BPMN and other formal and semi-formal modelling notations for requirements
- Using document and sentence templates for requirements description
- Verification of requirements – goals, levels and methods
- Validation – with prototyping, reviews and inspections, and testing
- Requirements validation and system validation
Testing – 2 days
Day 1: Test Design, Test Execution and Exploratory Testing
- Test design: after risk-based testing, choosing the optimum way to use the time and resources available
- Test design “from infinity to here” – exhaustive testing is not possible
- Test cases and test scenarios
- Test design on various test levels (from unit to system test level)
- Test design for static and for dynamic testing
- Business-oriented and technique-oriented test design (“black-box” and “white-box”)
- Attempting to break the system (“negative testing”) and supporting the developers (acceptance testing)
- Test design to achieve test coverage – various test coverage measures
- Experience-based test design
- Designing test cases from requirements and system models
- Test design heuristics and exploratory testing
- When to design test cases? – traditional and exploratory approach
- Describing test cases – how much detail?
- Test execution – psychological aspects
- Test execution – logging and reporting
- Designing tests for “non-functional” testing
- Automatic test design and MBT (Model-Based Testing)
Day 2: Test Organization, Management and Automation
- Test levels (or phases)
- Who does the testing, and when? – various solutions
- Test environments: cost, administration, access, responsibility
- Simulators, emulators and virtual test environment
- Testing in agile scrum
- Test team organization and role
- Test process
- Test automation – what can be automated?
- Test execution automation – approaches and tools