Software Engineering Corso di Laurea Magistrale in Ingegneria ...

19 downloads 193 Views 410KB Size Report
http://www.dis.uniroma1.it/~santucci/SW_Engineering/Materials/. • References on the course webpage. • Roger S. Pressman : “Software Engineering A.
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 sw (theory)

% damages hw

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 Engineering subdisciplines •









Software requirements – 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