Course Introduction and Overview

Size: px
Start display at page:

Download "Course Introduction and Overview"

Transcription

1 Who are you? 3 Course Introduction and Overview Lecture 1 Software Engineering TDDC88-theory/TDDC93 Autumn 2008 Department of Computer and Information Science Linköping University, Sweden Project 6hp Software Engineering TDDC88 12 hp/ects Theory 4hp Software Engineering Theory TDDC93 4 ECTS Theory 4hp Labs 2hp I-program Ii-program Master students Exchange students SVP Y-program D-program C-program IT-progam Who am I 2 Agenda - What will you learn today? 4 Definition and role of software engineering Gotland Småland Linköping Naval HQ Protein purification Ericsson 1

2 5 7 Definition and role of Software Engineering How the project leader understood it 6 8 How the customer explained it How the analyst designed it 2

3 9 11 How the programmer wrote it How the project was documented How the business consultant described it What operations installed 3

4 13 15 How the customer was billed Finally, what the customer really needed 14 Why do we need SE? 16 Frequent failures: Space shuttle Nike Denver airport LA airport Charette, R.N. (2005) Why Software Fails, IEEE Spectrum, September 2005 How it was supported Geppert, L (2004) Lost Radio Contact Leaves Pilots On Their Own, IEEE Spectrum, Nov

5 Beehive Exercise 17 Challenges to SE minutes beehive! 1. Discuss in pairs Why is it hard to communicate about software? Why do we read about frequent software failures What can we do about it? List at least 4 problems/solutions 2. Write on the whiteboard Go down to the whiteboard and write down a problem / a solution Different types of software: criticality # users # developers # platforms risk cost There will be changes degrading performance maintenance account for 70% of life cycle cost Everyone want the latest technology Increased demands for software with: high quality high complexity delivered promptly low price Different types of knowledge: Understanding customers Understanding users Managing projects and people Communication Staffing Design at many levels Programming tools Components Testing Quality assurance Business Risk management Technology assessment... Software Engineering 18 Studying SE theory 20 Application of systematic, disciplined, quantifiable approach to software development, operation and maintenance of software. (IEEE-Std.) Reading about concepts and methods derived from experience Almost everything have their pros and cons Quite little is based on mathematical theory Requires disciplined plan for reading different sources 5

6 Studying SE theory 21 Ambition level 23 Your job Find central concepts and methods over the entire field Study their applicability, pros and cons Practice analysing and designing small examples Participate in examination Ask me questions Give me suggestions for further improvement My job Account for the most central concepts in lectures Set things in context Discuss industrial relevance Arrange examination Answer your questions Listen to feed-back: Muddy-card Personal communication Student s evaluation B:470 You will know enough to communicate easily with professional software engineers You will have the basic knowledge to start generating your own experience already in student projects You will have a curious, but critical, attitude towards existing and new methods Mail me Contents of a Software Life Cycle 6

7 Scope of a software life-cycle model Idea Software Product Elicitation Analyze Specify Validate Collect user requirement Understand Document Check that it matches user requirements Usage Operation & maintenance Replacement Model of a life-cycle Carol the customer Abstraction Functional requirements Non-Functional requirements A required behavior or function E.g. "delete material items" Quality requirements E.g. performance, scalability, usability maintainability, etc. Diana the developer Time 7

8 and 29 System and 31 Validate, Verify Specification Validate, Verify Specification Unified Modeling Language (UML) Use a standardized way to model system graphically Design Patterns Reuse design solution that has worked before 30 Testing 32 Validate, Verify Specification Validate, Verify Specification Decompose into sub-systems or modules Well-defined interfaces High level of abstraction Module 1 Module 2 Module 3 Architecture styles, e.g. Client-server Layered Models Pipes and Filters Verify 8

9 Testing 33 Inspection 35 Validate, Verify Specification Integration testing Dependencies between modules Validate, Verify Specification Inspection Formal Inspection Reviewing with a defined process Aim at finding Verify defects Works in practice Approaches Top-down (need stubs) (Program, 1 Module 2 Bottom-up (need drivers) Verify Sandwich Big-bag of Module Units (classes, 3 procedures, Verify Supporting Processes Validate, Verify Specification Verify 34 Software Life Cycles, Configuration Mgm. Software Life Cycles and Configuration Validate Management, Verify Specification V-model Waterfall model Verify 36 Verify R Module R R Testing Iterative models Verify of Units (classes, Configuration procedures, Management (CM) Keep track of versions. Used the wrong code-base. 9

10 Software Quality Management 37 A Software Life-cycle 39 Maintenance Validate, Verify Specification Validate, Verify Specification Verify Lecture 12 - Software Quality Management Different qualities Quality of product Quality of process Quality in Verify a business environment Verify Verify Project Management, Software Quality Assurance (SQA), Supporting Tools, Education Software Life Cycles, Configuration Mgm. Project Management Resources Milestones Time-budget Validate, Verify Specification Calendar-time Time plan Verify Activities Resource management Time-buffer Module Internal Design milestones - keep track Verify 38 A Software Life-cycle Model Which part will we talk about today? Validate, Verify Specification Verify Verify 40 Maintenance of Units Risk (classes, Management procedures, Identify Analyze Plan probability - consequence - Minimize - Transfer - Accept Project Management, Software Quality Assurance (SQA), Supporting Tools, Education 10

11 Theory Lecture Plan 41 L1 - Course Introduction and Overview L2 - Project Management L3 - L4 - ing and Quality Factors L5 - Design Patterns L6 - UML L7 - and Architecture L8 - Testing Theory L9 - Testing in Practice L10 - Inspection L11 - Software Life Cycles and Configuration Management L12 - Software Quality Management L13 - Course Summary, Exam examples, Questions Summary - What have we learned today? 42 Maintenance Validate, Verify Specification Verify Verify Project Management, Software Quality Assurance (SQA), Supporting Tools, Education 11