Software Engineering. Introduction. Lecturer: Giuseppe Santucci



Similar documents
IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

IT3205: Fundamentals of Software Engineering (Compulsory)

How To Understand Software Engineering

CS4507 Advanced Software Engineering

COURSE CODE : 4072 COURSE CATEGORY : A PERIODS / WEEK : 4 PERIODS / SEMESTER : 72 CREDITS : 4

Research Topics in Software Engineering

Karunya University Dept. of Information Technology

SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur

ISO, CMMI and PMBOK Risk Management: a Comparative Analysis

Lecture Notes #27: Software Risk Management

Ingegneria del Software. Gabriele Monfardini - Corso di Ingegneria del Software

Practical Experiences of Agility in the Telecom Industry

The Advantages and Disadvantages of Using Software Engineering Standards

Software Engineering. An Introduction. Fakhar Lodhi

Introduction to Software Engineering. Week 1

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Software Engineering. Session 3 Main Theme Requirements Definition & Management Processes and Tools Dr. Jean-Claude Franchitti

Small Group Software Development: A Case Study

CS 1632 SOFTWARE QUALITY ASSURANCE. 2 Marks. Sample Questions and Answers

Software Quality Assurance: VI Standards

Engineering Standards in Support of

Lecture 8 About Quality and Quality Management Systems

CMSC 435: Software Engineering Course overview. Topics covered today

Software Engineering. Standardization of Software Processes. Lecturer: Giuseppe Santucci

A Quick Overview of Software Engineering. Paul Klint

Software Engineering. Christopher Simpkins Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS / 16

Lecture Softwareengineering-Vertiefung

Project planning and scheduling

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Advanced Software Engineering FYI!

Engineering. Software. Eric J. Braude. Michael E. Bernstein. Modern Approaches UNIVERSITATSBIBLIOTHEK HANNOVER ' TECHNISCHE INFORM ATIONSBIBLIOTHEK

Process Improvement. From the Software Engineering Institute:

SW Process Improvement and CMMI. Dr. Kanchit Malaivongs Authorized SCAMPI Lead Appraisor Authorized CMMI Instructor

Object-Oriented Software Engineering

A Report on The Capability Maturity Model

Basic Testing Concepts and Terminology

Protect Your Organization With the Certification That Maps to a Master s-level Education in Software Assurance

Lecture Overview. Object-Oriented Software Engineering: Using UML, Patterns, Java, and Software Development Processes. Prof. Dr.

IBM Rational systems and software solutions for the medical device industry

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Organization. Introduction to Software Engineering

Chapter 2 Software Processes

The 10 Most Important Ideas in Software Development

Introduction to Software Engineering: Project Management ( Highlights )

Fundamentals of Measurements

Software Estimation: Practical Insights & Orphean Research Issues

San José State University CS160, Software Engineering, Sections 1, 2, and 4, Fall, 2015

What do you think? Definitions of Quality

Models of Software Development

Introduction. Getting started with software engineering. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1

A Discipline for Software Engineering

Increasing Development Knowledge with EPFC

Software Engineering: Analysis and Design - CSE3308

Requirements Definition and Management Processes

Software Engineering Compiled By: Roshani Ghimire Page 1

the state of the practice Variations in Software Development Practices

Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction

Developing CMMI in IT Projects with Considering other Development Models

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

SOFTWARE ENGINEERING INTERVIEW QUESTIONS

There is no software engineering crisis

Outline. Definitions. Course schedule

SOFTWARE PROCESS MODELS

Introduction to Software Engineering

ICT Benchmarking: Better Practice Roadmap

Using Rational Software Solutions to Achieve CMMI Level 2

Software Engineering

To introduce software process models To describe three generic process models and when they may be used

Topics. Software development invariants. Stakeholders. The accidents of software development. The essence of software development

Introduction to Agile Software Development

A Software Engineering Process for Operational Space Weather Systems. S. Dave Bouwer, W. Kent Tobiska Space Environment Technologies

A Case study based Software Engineering Education using Open Source Tools

Lecture 1: Introduction to Software Quality Assurance

Web Applications Development and Software Process Improvement in Small Software Firms: a Review

How To Manage Project Cost Management

Statistical Tune-Up of the Peer Review Engine to Reduce Escapes

Agile Software Development Methodologies and Its Quality Assurance

IF2261 Software Engineering. Introduction. What is software? What is software? What is software? Failure Curve. Software Applications Type

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 6 Professional Graduate Diploma in IT SOFTWARE ENGINEERING 2

Risk Knowledge Capture in the Riskit Method

Product Derivation Process and Agile Approaches: Exploring the Integration Potential

Software Development Process Selection Approaches

LECTURE # 2. 4 P s in Project Management

EMPIRICAL STUDY OF THE EVOLUTION OF AGILE-DEVELOPED SOFTWARE SYSTEM IN JORDANIAN'S TELECOM

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Transcription:

Software Engineering Introduction Lecturer: Giuseppe Santucci

Summary Some useful pieces of information Introduction to Software Engineering Standardization of Software Process 2

Software Engineering Classes Course homepage http://www.dis.uniroma1.it/~santucci/sw_engineering/index.html Address: via Ariosto 25 Monday 14:15 15.30-15.45 17.15 Room: A2 Friday 10.30-11.45 Room A2 Please have always a look at news on the teaching homepage Giuseppe Santucci teaching home page (news, exams, etc.) http://www.dis.uniroma1.it/~santucci/didattica.html Or Google giuseppe santucci 3

Exams Two regular dates in June-July One recovery date in September Two recovery dates January-February Exercises and theoretical questions (true/false) On the course homepage you will find examples of test questions 4

Materials Lecture notes slides presented during classes Available online at the course homepage http://www.dis.uniroma1.it/~santucci/sw_engineering/material/ References on the course webpage Roger S. Pressman : Software Engineering A Practitioner s approach 5

How to communicate with me Office Hours: Tuesday 14.30-16.30 Via Ariosto 25 room B218 After classes Always have a look at news before coming! 6

Course (rough) Outline Introduction and basic concepts Software process models Software Process Standardization Software Processes Agile Methodologies and Extreme Programming Project Management (exam s exercises) Methods for testing Software Testing and Quality Static and Dynamic Testing Black-Box testing (exam s exercises) White-Box Testing (exam s exercises) Cost estimation in software engineering Function point and COCOMO II (exam s exercises) Requirements analysis and specification Basic definitions Types of applications and specification languages Types of models Measure theory foundations exam s exercises Definitions and overview on statistics basic concepts Quality of metrics Systematic and random errors Inferential statistics Analysis of variance (ANOVA) Exercises 7

Software Software: is the collection of computer programs, procedures, rules, and associated documentation and data resulting from intellectual creations Software product is the complete set of programs, procedures, and associated documentation delivered to a customer, typically released for sale Software components A software component is a software product element offering a predefined service or event, and able to communicate with other components 8

Manufacture vs Software products There is a big difference between manufactured products and software products Manufactured products: they are built and eventually wore out once designed, their fabrication can be delegated to external industries without affecting the characteristics of the result parameters and techniques used for describing it are well known, reliable and effective Software products they are developed and do not wear out starting from the same design and specification details, two different people would produce two completely different products how to describe their functional and quality characteristics is still an open issue 9

Worsening and damages of hw and sw % damages hw % damages sw (theory) time time % damage sw Changes sw time

Classification of Software This is an example taken from the model North American Product Classification System NAPCS System Software Operating System Network Software Database Management Development tools and programming language software Other system software Application Software General business productivity applications Home use applications Cross-industry application Vertical market application Utilities Other application 11

Examples of System Software Operating System Client and network operating systems Network Software Network management software Server software Security and encryption software Development tools and programming language software Software testing tools Program development tools 12

Examples of Application Software General Business productivity applications Office suite applications Word processors Spreadsheets Simple databases Graphics applications Project management software Home use applications Games Home education 13

Examples of Application Software Cross-industry application software Professional accounting software Human resource management Customer relations management software Geographic Information System software Web page/site design software Vertical market application software Software for a specific industry (manufacturing, healthcare, telecom, etc.) Utilities software Compression programs Antivirus Search engines File viewers Voice recognition software 14

Software development Is there a problem? Some slides taken from MIT Open Course Ware

Risks and success percentage Development of large applications in excess of 5000 function points (~500,000 LOC) is one of the most risky business undertakings in the modern world Risks of cancellation or major delays rise rapidly as overall application size increases Failure or cancellation rate of large software systems is over 20% Average cancelled project in U.S. is about a year behind schedule and has consumed 200% of expected budget Of completed projects, 2/3 experience schedule delays and cost overruns (Caper Jones) 16

Death March Projects A project whose project parameters exceed the norm by at least 50% The scheduled has been compressed to less than half the amount estimated The staff has been reduced to half of people needed The budget and associated resources have been cut in half The functionality, features, performance requirements of the project are twice what they would be under normal circumstances (Edward Yurdon) 17

Death March Projects cont.d In other words: A death march project is one for which an unbiased, objective risk assessment determines that the likelihood of failure is more than 50 % (Edward Yurdon) 18

Death March Projects cont.d Why? Because corporation are insane and do the same thing again and again! (Edward Yurdon) 19

Understanding the problem Development costs are only the top of the iceberg 20

Understanding the problem cont.d 21

Software Engineering

What is Software Engineering? SWE is a methodological discipline. It studies development methods, the theories such methods are based on, effective tools and metrics for measuring the quality of complex software systems SWE is also an empirical discipline. It is based on personal experiences and past project stories If you don t know the history you will re-do it 23

Software Engineering Designing, building and maintaining large software systems (I.Sommerville) Multi-person construction of multi-version software (D.L. Parnas) Technological and managerial discipline of software products that are developed and modified on time and within cost estimates (R. Fairley) 24

Software Engineering The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. [NATO1969] The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. [IEEE Std 610.12-1990] The systematic activities involved in the design, implementation and testing of software to optimize its production and support. [Canadian Standards Association] 25

Software Engineering cont.d The term software engineering first appeared in the 1968 NATO Software Engineering Conference It was meant to provoke thought regarding the current software crisis at the time Software crisis refers to the difficulty of writing correct, understandable, and verifiable computer programs The major cause of the software crisis is that the machines have became several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem. (Edsger Dijkstra) 26

Software requirements Software Engineering subdisciplines the elicitation, analysis, specification, and validation of requirements for software Software design the design of software is usually done with Computer-Aided Software Engineering (CASE) tools and use standards for the format, such as the Unified Modeling Language (UML) Software development the construction of software through the use of programming languages Software testing Black box White box Software maintenance software systems often have problems and need enhancements for a long time after they are first completed. This subfield deals with those problems 27

Software Engineering sub-disciplines cont.d Software configuration management since software systems are very complex, their configuration (such as versioning and source control) have to be managed in a standardized and structured method Software engineering management the management of software systems borrows heavily from project management, but there are nuances encountered in software not seen in other management disciplines Software development process the process of building software is hotly debated among practitioners with the main paradigms being agile or waterfall Software engineering tools, see Computer Aided Software Engineering Software quality 28

Software Development Process

Software Development Process A set of structured and organized activities that are needed in order to develop a software product Analysis Design and Development Validation and Testing Evolution and Maintenance Corrective (20%): error resolution Adaptive (20%): changes and new requirements Improving (50%): non-functional and secondary functional requirements Preventing (10%): refactoring 30

Software Process Related Activities Project Management Project Revision (Contract revision) Quality Assurance Configuration Management Documentation Management Reusability Measures Risk Management 31

Principles of Software Engineering Changes foreseeing Rigorous and formal approach Separation of concerns Modularity Abstraction Generality Incremental approach 32

Standardization of Software Process CMMI ISO 12207 ISO 9000 33

Capability Maturity Model Integration Created and maintained by the Software Engineering Institute of the Carnegie Mellon University Replaces the CMM which is not maintained anymore It is a process improvement approach that provides organizations with the essential elements of effective processes 34

ISO 12207 Produced by the International Organization for Standardization It establishes a common framework for software life cycle processes that can be referenced by the software industry It also provides a process that can be employed for defining, controlling, and improving software life cycle processes 35

ISO 9000 Produced by the International Organization for Standardization It specifies fundamentals of quality management systems It is intended to be applicable to all organizations, regardless of type, size and product provided 36