madalina croitoru [email protected] software engineering week 1 madalina croitoru iut montpellier
Post on 19-Dec-2015
222 views
TRANSCRIPT
MADALINA [email protected]
What is Software Engineering?
• The IEEE Computer Society defines software engineering as:
– The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
– The study of approaches as in (1).
MADALINA [email protected]
Engineering (a definition)• The application of applied science
and mathematics to produce solutions to problems or produce a product.
• In software engineering, we produce software; programs, documentation and configuration.
• There are two types of software: generic and bespoke.
MADALINA [email protected]
Software engineering has a wide scope
• Mathematics• Computer science• Economics• Management• Ethics
MADALINA [email protected]
The day the phones stopped ringing
• A single missing “break” statement in a C program resulted in the loss of a long distance telephone service in the USA
• Economic damage was about $100,000,000
• Use of formal methods– Link a model to a software implementation– UML B
MADALINA [email protected]
Complexity
• The main problem is complexity• UNIX contains 4 million lines of code• WINDOWS 2000 – 1018 lines of code• Software engineering is about
managing this complexity
MADALINA [email protected]
Difficulties
• Software development is hard• Easy case: one developer, one user
vs hard case: multiple developers, multiple users
• One person techniques do not scale up
MADALINA [email protected]
Software crisisSurvey of outcomes
from Standish Group
280,000 development projects
1. Successful
2. Cancelled
3. Late, over budget, incomplete
128%
223%
349%
MADALINA [email protected]
Whittaker paper common reasons
• Poor project planning. Specifically, inadequate risk management and a weak project plan. Risk management becomes more important as the organization gets bigger, so larger organizations need to pay more attention to this area.
• A weak business case. The need for the system should be justified in ways that relate directly to the organization's business needs.
MADALINA [email protected]
More reasons
• Lack of top management involvement and support. This often dooms the project to failure before it starts. Securing buy-in from the top, often by a strong business case backed up with a realistic project plan, is an essential step.
MADALINA [email protected]
Goals of software engineering
• Satisfy user requirements
• High reliability• Low maintenance costs• Deliver on time• Low production cost• High performance• Ease of reuse
MADALINA [email protected]
Satisfying user requirements
• Large-scale commissioned systems:– 45% delivered but not used– 27% paid for but not delivered– 17% abandoned– 6% used after changes– 5% used as delivered
• Users find it hard to articulate what they want
• Developers find it hard to understand what users say
MADALINA [email protected]
Low maintenance costs
• Maintenance: what is done to the software after it starts being used – 65% of overall project cost
• Corrective: fixing bugs• Adapting: altering software to
adapt to changing software• Perfective: new requirements• Preventative: prevents further
maintenance
MADALINA [email protected]
Reliability
• You can prove bugs are there but cannot prove they are not
• Bugs are expensive in terms of:– Human lives– Money– Poor customer relations
MADALINA [email protected]
Delivery on time• Relationship person-
months vs development time is not linear:– Adding person-months of
effort to a project usually has no effect
– Sometimes makes the project slower
• It is really hard to predict when a project will complete and how much effort will require
MADALINA [email protected]
Production costs
• US Software production 1985: 70 billion $
• US Software production 2000: 700 billion$
• US Software production 2015: ???
MADALINA [email protected]
Ease of reuse
• Goal of system reuse: use same software in different systems:– Reduce development cost– Increase reliability
• Most software has two parts:– Environment independent
part– Environment dependent (GUI
etc.)
MADALINA [email protected]