Académique Documents
Professionnel Documents
Culture Documents
Some Achievements
Contact
! email: radu.marinescu@cs.upt.ro ! phone: 404058 ! office: ASPC, P11
http://loose.upt.ro/~oose
! Vital Source of Information
! Lectures
"
Bibliography...
! teorie + probleme
! promovabile doar atomic ! un numr mare de subiecte mici ! la probleme la fel
! Fascination of fashioning complex puzzle-like objects ! Delight of working in a highly tractable (flexible) medium
! Slightly removed from the realm of pure ideas ! Easy to polish and rework ! Its fun because it gratifies creative longings
10
11
12
In other words
"The major cause of the software crisis is that the machines have become 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, thus programming has become an equally gigantic problem."
E.W.Dijkstra, 1972
(The Humble Programmger, ACM Turing Award Lecture)
! Expectations
! Hardware prices were going down, prices for software were increasing dramatically
! Change
! Need to maintain and evolve programs
13
14
Program
x3 Programming Product
(Generalization, Testing, Documentation, Maintenance)
Dr. Radu Marinescu
Large-system programming has [...] been such a tar-pit, and many great and powerful beasts have thrashed violently in it. Most have emerged with running systems -few have met goals, schedules, and budgets .... No one thing seems to cause the difficulty, any particular paw can be pulled away. But the accumulation of simultaneous and interacting factors brings slower and slower motion.
F.P.Brooks, 1995
The challenge and the mission are to find real solutions to real problems, on actual schedules with available resources.
F.P.Brooks, 1995
19
20
! Techniques
! how should we approach each phase of the process?
! Tools
! how to automate as much as possible of the process?
21
22
automated support for software process activities. !often used for method support.
! Upper-CASE
! Tools to support the early process activities of requirements and design;
! Lower-CASE
! Tools to support later activities such as programming, debugging and testing.
23
24
What is software?
Characteristics of Software
1. Software is engineered, not manufactured
Costs of software are strictly in engineering. Software projects cant be managed as manufacturing projects
Dr. Radu Marinescu 27 Dr. Radu Marinescu 28
PA R T O N E
Failure rate
Wear out
Idealized curve
Time
from R.S.Pressman, 2005
Dr. Radu Marinescu 29
Software engineering methods strive to reduce the magnitude of the spikes and the slope of the actual curve in Figure 1.2.
Time
changes are made, it is likely that some new defects will be introduced, causing the from R.S.Pressman, 2005 failure rate curve to spike as shown in Figure 1.2. Before the curve can return to the original steady-state failure rate, another change is requested, causing the curve to Dr. Radu Marinescu 30 spike again. Slowly, the minimum failure rate level begins to risethe software is deteriorating due to change. Another aspect of wear illustrates the difference between hardware and software. When a hardware component wears out, it is replaced by a spare part. There are no software spare parts. Every software failure indicates an error in design or in the process through which design was translated into machine executable code. There-
ity is achieved through good design, but the manufacturing phase for hardware can introduce quality problems that are nonexistent (or easily corrected) for software. Both activities are dependent on people, but the relationship between people applied and work accomplished is entirely different (see Chapter 7). Both activities require the construction of a "product" but the approaches are different. Software costs are concentrated in engineering. This means that software proj8
Foundations of cannot be managed as if they were manufacturing projects. ects Software Engineering
PA R T O N E
fore, software maintenance involves considerably more complexity than hardware Foundations of Software Engineering maintenance.
Why 3. Although the industry is moving toward component-based assembly, most must it change?
software continues to be custom built. Consider the ! Enhance manner in which the control hardware for a computer-based product is to implement new business requirements. ! designed and built. The design engineer draws a simple schematic of the digital circuitry, does some fundamental analysis to assure that proper function will be achieved, and then goes to the shelf where catalogs of digital components exist. Each
turing defects); defects are corrected and the failure rate drops to a steady-state level
Failure rate
(ideally, quite low) for some period of time. As time passes, however, the failure rate rises again as hardware components suffer from the cumulative affects of dust, vibration, abuse, temperature extremes, and many other environmental maladies. Stated simply, the hardware begins to wear out.
Change
integrated circuit (called ! Extend & Adapt an IC or a chip) has a part number, a dened and validated
function, ! make a well-dened interface, and a standardmodern systems it interoperable with other more set of integration guidelines. After each component is selected, it can be ordered off the shelf. ! to meet the needs of new computing environments As an engineering discipline evolves, a collection of standard design components is created. Standard screws and off-the-shelf integrated circuits are only two of thousands of standard components that are used by mechanical and electrical engineers as they design new systems. The reusable components have been created so that the engineer can concentrate on the truly innovative elements of a design, that is, the
Software is not susceptible to the environmental maladies that cause hardware to wear out. In theory, therefore, the failure rate curve for software should take the form of the idealized curve shown in Figure 1.2. Undiscovered defects will cause high failure
Software engineering methods strive to reduce the magnitude of the spikes and the slope of the actual curve in Figure 1.2.
Actual curve
rates early in the life of a program. However, these are corrected (ideally, without introTime from R.S.Pressman, 2005 ducing other errors) and the curve attens as shown.The idealized curve is a gross over-
Idealized curve
Software does not wear new defects will be introduced, causing changes are made, it is likely that someout! But it does deteriorate! the
simplication of actual failure models (see Chapter 8 for more information) for software. However, the implication is clearsoftware doesn't wear out. But it does deteriorate! This seeming contradiction can best be explained by considering the actual curve
Dr. Radu Marinescu 32
The main cause for this in Figure 1.2. Before repeated change failure rate curve to spike as shownphenomenon is the curve can return to the
original steady-state failure rate, another change is requested, causing the curve to deteriorating due to change. Another aspect of wear illustrates the difference between hardware and software. When a hardware component wears out, it is replaced by a spare part. There are no software spare parts. Every software failure indicates an error in design or in the
spike again. Slowly, the minimum failure rate level begins to risethe software is
shown in Figure 1.2. During itsDr. Radu Marinescu will undergo change (maintenance). As life, software 31
Source: Lehman, M., et al, Metrics and Laws of Software EvolutionThe Nineties View, Proceedings of the 4th International Software Metrics Symposium (METRICS '97), IEEE, 1997 Dr. Radu Marinescu 33
35
36
Not enough testing times is disastrous because bad news come late!
Dr. Radu Marinescu 37 Dr. Radu Marinescu 38
In examining conventionally scheduled projects, I have found that few allowed one-half of the projected schedule for testing, but that most did indeed spend half of the actual schedule for that purpose. F.P.Brooks
39
40
! Acceptability
! accepted by the users for which it was designed. ! understandable, usable and compatible with other systems.
! Legacy
! Challenge of maintaining and updating this software ! Avoid software aging [Parnas] ! ...and software entropy[Lehman]
! Dependability
! Software must be trustworthy;
! Efficiency
! Software should not make wasteful use of system resources;
! Heterogeneity
! Cope with heterogeneous platforms and execution environments;
! Maintainability
! Software must evolve to meet changing needs;
! Delivery
! Developing techniques that lead to faster delivery of software;
! Trust
! Techniques that prove that software can be trusted by its users.
Dr. Radu Marinescu 41 Dr. Radu Marinescu 42
Software Myths
43
44
Management Myths
I. We have books, standards and procedures that guarantee good software
! Project is Planned for 3 people x 4 months ! If there is no time (e.g. we have to finish it in 2 months)
What do we do?? ! ADD MANPOWER
! E.g. employ 3 more people ! Believing that 3 people x 4 months = 6 people x 2 months
Are these used efficiently? Are these customized for specific needs?
III. Outsourcing will release us from software engineering problems
F.P. Brooks calls this the mythical man-month: Adding people to a late
project, makes the project even later
Dr. Radu Marinescu 45
WRONG!
Dr. Radu Marinescu 46
Types of Tasks
! Effort of communication must be added to the amount of work to be done ! Poorer than even trade of men for months
Communication
Brooks Law
! Training
! Technological, goals of the effort, overall strategy plan of work
! Intercommunication
! For N people involved: N*(N-1)/2 ! E.g. It is 6 x in a team of 4 people compared to a team of 2 people
Corollaries
Nr. of months of a project depends on its sequential constraints Maximum nr. of people depends on the nr. of independent subtasks
49
50
Customer Myths
I. Just sketching the requirements is enough to start building software II. Requirements can permanently change at a low cost because software is flexible
Developer Myths
I. Once we write a program and get it to work, our job is done
the sooner you begin writing code the longer itll take to get done
II. The only deliverable work product is the working program
III. Software engineering will make use create voluminous and unnecessary documentation, which slows us down