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



Similar documents
How To Write Software

Outline. Definitions. Course schedule

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

SE 367 Software Engineering Basics of Software Engineering

Introduction to Software Engineering. 8. Software Quality

Software Engineering. Objectives. Designing, building and maintaining large software systems

Software Engineering. Software Engineering. Software Costs

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

Software Engineering. What is SE, Anyway? Based on Software Engineering, 7 th Edition by Ian Sommerville

Topics covered. An Introduction to Software Engineering. FAQs about software engineering Professional and ethical responsibility

Software Engineering. Introduction. Lecturer: Giuseppe Santucci

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

Introduction to Software Engineering. Adopted from Software Engineering, by Ian Sommerville

Software Engineering 9.1. Quality Control

Chapter 1- Introduction. Lecture 1

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

CS4507 Advanced Software Engineering

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

Secure Containers. Jan Imagination Technologies HGI Dec, 2014 p1

An Introduction to Software Engineering

An Introduction to Software Engineering. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1

Modelli di sviluppo software. Enrico Giunchiglia

Quality Management. Lecture 12 Software quality management

Lecture Softwareengineering-Vertiefung

How To Understand The Software Process

Lecture 8 About Quality and Quality Management Systems

Kunal Jamsutkar 1, Viki Patil 2, P. M. Chawan 3 (Department of Computer Science, VJTI, MUMBAI, INDIA)

2. Analysis, Design and Implementation

CS314: Course Summary

The Role of the Software Architect

CSCI-485: Software Design

Chapter 1 Introduction

Software Engineering Compiled By: Roshani Ghimire Page 1

Prof. Paolo Nesi. Lab: DISIT, Sistemi Distribuiti e Tecnologie Internet

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

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

Fundamentals of Measurements

Policy Modeling and Compliance Verification in Enterprise Software Systems: a Survey

Advanced Software Engineering FYI!

Project Risks. Risk Management. Characteristics of Risks. Why Software Development has Risks? Uncertainty Loss

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

SystemDesign Methodologies

Lecture 1: Introduction to Software Quality Assurance

An Introduction to Software Engineering

2. Analysis, Design and Implementation

Introduction and Overview

Software Quality. Software Quality Assurance and Software Reuse. Three Important Points. Quality Factors

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

SE464/CS446/ECE452 Software Life-Cycle and Process Models. Instructor: Krzysztof Czarnecki

Software Life Cycle Processes

FPGA Prototyping Primer

Software Requirements Specification. For. Attendance Tracking System, Release 1.0. Version 1.0

Process Improvement. Objectives

Software Engineering

A Capability Model for Business Analytics: Part 2 Assessing Analytic Capabilities

Information Systems Analysis and Design CSC340. I. Introduction

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

A Study on Software Metrics and Phase based Defect Removal Pattern Technique for Project Management

Presente e futuro del Web Semantico

Developing the Architectural Framework for SOA Adoption

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

Software Engineering. Introduction. Software Costs. Software is Expensive [Boehm] ... Columbus set sail for India. He ended up in the Bahamas...

Introduction to Software Engineering

Chap 1. Software Quality Management

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

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

Evaluation of the Iceland State Financial and Human Resource System REPORT OF THE INDIVIDUAL EVALUATOR. Annex 2 SYSTEM AND SOFTWARE QUALITY

JOURNAL OF OBJECT TECHNOLOGY

Efficient and Faster PLC Software Development Process for Automotive industry. Demetrio Cortese IVECO Embedded Software Design

Introduction to Software Engineering (ESE : Einführung in SE)

Automation Testing in Mobile Applications Swati Hajela

Key Factors for Developing a Successful E-commerce Website

Swirl. Multiplayer Gaming Simplified. CS4512 Systems Analysis and Design. Assignment Marque Browne Manuel Honegger

JOURNAL OF OBJECT TECHNOLOGY

What Is the Java TM 2 Platform, Enterprise Edition?

Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3

Software Processes. Coherent sets of activities for specifying, designing, implementing and testing software systems

COMMONWEALTH OF PENNSYLVANIA DEPARTMENT S OF PUBLIC WELFARE, INSURANCE, AND AGING

Quality Management. Objectives

Quality Management. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 27 Slide 1

Ten steps to better requirements management.

Issue in Focus: Business Intelligence Extending PLM Value. PLM Maturity Enables New Value from Analytics

Sample Exam Foundation Level Syllabus. Mobile Tester

Quality Management. Managing the quality of the software process and products

Software and Systems Engineering. Software and Systems Engineering Process Improvement at Oerlikon Aerospace

Software Engineering. Introduc)on

Proposed Change to ABET Software Engineering Program Criteria CSAB Criteria Committee, 1 March 2014

Power of Oracle in the Cloud

Organizational Requirements Engineering

CS4507 Advanced Software Engineering

Darshan Institute of Engineering & Technology Unit : 7

Enterprise Infrastructure Architecture

A Configuration Management Model for Software Product Line

Software Engineering for Software-Intensive Systems: III The Development Life Cycle

GOVERNANCE DEFINED. Governance is the practice of making enterprise-wide decisions regarding an organization s informational assets and artifacts

Transcription:

Ingegneria del Software

Presentazione del corso slide, esami e molto altro...

Libri di testo C. Ghezzi, M. Jazayeri, D. Mandrioli, "Ingegneria del software. Fondamenti e principi", 2a ed., Pearson Education Italia, 2004. M. Fowler, "UML Distilled", 4a ed. italiana, Pearson Education Italia, 2010 (va bene anche la 3a ed.

Libri di consultazione Ian Sommerville, "Ingegneria del software", 8a ed. italiana, Pearson Education Italia, 2007

Slide ed esame Slide online http://www.ing.unisi.it/ > didattica > Insegnamenti > Ingegneria del Software La maggior parte delle slide sono state riadattate da quelle ufficiali del libro di Mandrioli-Ghezzi (e sono quindi in inglese!) Prova in itinere (?) Progetto in team (?)

Orario di ricevimento Giovedì 16 17 (dopo la lezione) ma... è obbligatorio mandarmi una mail! monfardini@dii.unisi.it

Software Engineering An outline...

Outline Definitions of software engineering (SE) Historical origins of SE SE as part of systems engineering SE consists of many activities in addition to programming SE and other disciplines

Definitions The application of engineering to software Field of computer science dealing with software systems large and complex built by teams exist in many versions last many years undergo changes

Definitions Application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software Multi-person construction of multiversion software

History The field of software engineering was born in 1968 in response to chronic failures of large software projects to meet schedule and budget constraints Recognition of "the software crisis" Term became popular after NATO Conference (1968)

Role of SE in system design SE part of larger projects Embedded Software requirements to be balanced against others e.g., telephone switching systems certain requirements can only be met by hw, sw, and special devices

Role of software engineer Programming skill not enough Software engineering involves "programming-inthe-large" understand requirements and write specifications derive models and reason about them master software operate at various abstraction levels member of a team communication skills management skills

The software lifecycle (a preview) waterfall model

Relationships between SE and other CS disciplines Programming languages Operating systems Data bases Artificial intelligence Theory (FSM, logic...)

Relationships between SE and other disciplines Management science Systems engineering Others

Software Its Nature and Qualities

Outline Software engineering (SE) is an intellectual activity and thus human-intensive Software is built to meet a certain functional goal and satisfy certain qualities Software processes also must meet certain qualities Software qualities are sometimes referred to as ilities

Software product Different from traditional types of products intangible difficult to describe and evaluate malleable human intensive involves only trivial manufacturing process

Classification of sw qualities "ilities" Internal vs. external External: visible to users Internal: concern developers Product vs. process Our goal is to develop software products The process is how we do it Internal qualities affect external qualities Process quality affects product quality

Correctness Software is correct if it satisfies the functional requirements specifications assuming that specification exists! If specifications are formal, since programs are formal objects, correctness can be defined formally It can be proven as a theorem or disproved by counterexamples (testing)

The limits of correctness It is an absolute (yes/no) quality there is no concept of degree of correctness there is no concept of severity of deviation What if specifications are wrong? (e.g., they derive from incorrect requirements or errors in domain knowledge)

Reliability Reliability informally, user can rely on it can be defined mathematically as probability of absence of failures for a certain time period if specs are correct, all correct software is reliable, but not vice-versa (in practice, however, specs can be incorrect )

Idealized situation Requirements are correct Reliability Correctness

Robustness Robustness software behaves reasonably even in unforeseen circumstances (e.g., incorrect input, hardware failure)

Performance Efficient use of resources memory, processing time, communication Can be verified complexity analysis performance evaluation (on a model, via simulation) Performance can affect scalability a solution that works on a small local network may not work on a large intranet

Usability Expected users find the system easy to use Other term: user-friendliness Rather subjective, difficult to evaluate Affected mostly by user interface e.g., visual vs. textual

Verifiability How easy it is to verify properties mostly an internal quality can be external as well (e.g., security critical application)

Maintainability Maintainability: ease of maintenance Maintenance: changes after release Maintenance costs exceed 60% of total cost of software Three main categories of maintenance corrective: removing residual errors (20%) adaptive: adjusting to environment changes (20%) perfective: quality improvements (>50%)

Maintainability Can be decomposed as Repairability ability to correct defects in reasonable time Evolvability ability to adapt sw to environment changes and to improve it in reasonable time

Reusability Existing product (or components) used (with minor modifications) to build another product (Similar to evolvability) Also applies to process Reuse of standard parts measure of maturity of the field

Portability Software can run on different hw platforms or sw environments Remains relevant as new platforms and environments are introduced Relevant when downloading software in a heterogeneous network environment

Understandability Ease of understanding software Program modification requires program understanding

Interoperability Ability of a system to coexist and cooperate with other systems plug&play OS browser plug-ins open systems

Typical process qualities Productivity denotes its efficiency and performance Timeliness ability to deliver a product on time Visibility all of its steps and current status are documented clearly

Timeliness: issues Often the development process does not follow the evolution of user requirements A mismatch occurs between user requirements and status of the product

Timeliness: a visual description of the mismatch

Application-specific qualities Information systems Data integrity Security Data availability Transaction performance.

Application-specific qualities Real time systems performance Mission critical systems safety reliability&robustness verifiability

Quality measurement Many qualities are subjective No standard metrics defined for most qualities