Expanded by Ferreiras The Software Engineering1 V2.0Ferreiras October 2013.

70
Expanded by Ferreiras The Software Engineering 1 The Software The Software Engineering Engineering V2.0 V2.0 Ferreiras Ferreiras October 2013 October 2013

Transcript of Expanded by Ferreiras The Software Engineering1 V2.0Ferreiras October 2013.

Expanded by Ferreiras

The Software Engineering 1

The Software EngineeringThe Software Engineering

V2.0V2.0

FerreirasFerreiras

October 2013October 2013

Expanded by Ferreiras The Software Engineering 2

The factsThe factsWatsonWatson1 is an AArtificial IIntelligence CComputer

SSystem capable of answering questions posed in natural language, developed in IBM

1:1: http://en.wikipedia.org/wiki/Watson_(computer)

In 2011, as a test of its abilities, Watson competed on the quiz show Jeopardy!, in the show's only human-versus-machine match-up to date. Watson received the first prize of $1

million.

Expanded by Ferreiras The Software Engineering 3

http://www.todaysengineer.org/2011/Mar/career-focus.asp

It's a feat (achievement) that would not have been possible

without the software engineers behind the scenes.

““ ““

The factsThe facts

Expanded by Ferreiras The Software Engineering 4

The Invisible RopeThe Invisible Rope

What we're seeing across all other disciplines is that software is becoming an invisible invisible

threadthread tying all disciplines together. Software is now embedded in almost all devices,

mechanical devices all talk with each other, and developing products using software is faster and poses fewer risks than physical

prototyping.

““““

Expanded by Ferreiras The Software Engineering 5

"Software engineering is one of the fastest "Software engineering is one of the fastest growing fields in the world today"  growing fields in the world today" 

Software engineering was recently dubbed the best job of 2011 by career site Career Cast,

(http://www.careercast.com/jobs-rated/10-best-jobs-2011) and magazines like Forbes and Fortune have also

exalted the virtues and importance of the field. Even the toy company Mattel recently introduced Even the toy company Mattel recently introduced

Computer Engineer Barbie to help inspire Computer Engineer Barbie to help inspire young girls into the professionyoung girls into the profession..

Expanded by Ferreiras The Software Engineering 6

In 2009:In 2009:

Why Software Engineering is Important ? Why Software Engineering is Important ?

A full 24% of projects failed.

44% of software projects were "challenged," usually involving cost over-runs and late delivery;

Only 32% of software projects were "successful.“;

Expanded by Ferreiras The Software Engineering 7

Those standards help keep costs down and products flowing out the door, reducing to

minimum the risk of costly delays or failures

Why Software Engineering is Important ? Why Software Engineering is Important ?

For this reason For this reason

Software engineers operate under a set of standard set of standard development principlesdevelopment principles, such as those defined in the Software Engineering Body of Knowledge, SWEBOK, (http://www.computer.org/portal/web/swebok/home)

Expanded by Ferreiras The Software Engineering 8

Why Software Engineering is Important ? Why Software Engineering is Important ?

For this reason For this reason

"Software engineers can also have higher innovation rates, because they aren't tied to the physical world. Their Their only constraint is time.only constraint is time. Other areas

are more limited by materials and labor."

Expanded by Ferreiras The Software Engineering 9

The fieldThe field

According to the Bureau of Labor Statistics (BLS), the number of

employed software engineers has grown more than 25 percent in the past

decade, from 745,000 in 2001 to 1,206,000 in 2010.

Expanded by Ferreiras The Software Engineering 10

The fieldThe field

The earning potential for software engineers is also strong, with both computer systems

and applications software engineers averaging more than $90,000 in annual

wages in 2009, according to. Among all other engineering fields, only chemical engineersonly chemical engineers

averaged higher annual wages in 2009 at just over $96,000.

Expanded by Ferreiras The Software Engineering 11

The fieldThe field

The avionics system in the F-22 RaptorF-22 Raptor, the current U.S. Air Force frontline jet fighter, consists of about 1.7 million lines of software code.

Software engineering in aircraft

Boeing’s new 787 Dreamliner Boeing’s new 787 Dreamliner required about 6.5 million lines of 6.5 million lines of software codesoftware code to operate its avionics and onboard support systems.

The F-35 Joint Strike Fighter F-35 Joint Strike Fighter required about 5.7 million lines of code5.7 million lines of code to operate its onboard systems.

Expanded by Ferreiras The Software Engineering 12

One of my domain focus areas from an engineering services perspective is auto infotainment [info(rmation) + (enter)tainment.] and telematics technologies. 

There are a grand amount of software and complexities associated with engineering today’s leading cars.

It takes dozens of microprocessors running 100 million lines of code to get a premium car out of the driveway, and this software is only going to get more complex.

1: http://spectrum.ieee.org/green-tech/advanced-cars/this-car-runs-on-code

The fieldThe field

Software engineering in today’s cars1

Expanded by Ferreiras The Software Engineering 13

In the GMC YukonIn the GMC Yukon hybrid automobile and its Two-Mode Hybrid automatic transmission The control software logic analyzes hundreds of inputs every 10 milliseconds, including vehicle load, engine operations, battery parameters, and the temperatures in the high-voltage electric components.

The fieldThe field

Software engineering in today’s cars

Expanded by Ferreiras The Software Engineering 14

Where Software is Used in Cars ?

The fieldThe field

Software engineering in today’s cars

Expanded by Ferreiras The Software Engineering 15

The fieldThe field

Probability and statistics, Environmental engineering, Economics, Ethics, and Electric vehicle mechanics.

A few examples include

Expanded by Ferreiras The Software Engineering 16

What Employers are Looking ForWhat Employers are Looking For

Able to communicate about, analyze and solve problems. 

Software engineers need Good communication skills, both spoken and written;

Analytical capability;

Be able to manage a project from end to end while working well with their colleagues;

Be able to keep up with rapidly changing technologies.

Know about the social sciences, physical sciences and mathematical sciences;

Be smart and can get things done;

Expanded by Ferreiras The Software Engineering 17

What Employers are Looking ForWhat Employers are Looking For

understand the quality assurance process and make sure that products are of high value.

Software engineers need For anyone who is still in school: "Contribute to open source projects, work as an intern, and enter programming contestsenter programming contests,

Be a product-oriented people;

Be able to work on a project from A to Z and solve problems at every level, not just be able to write code;

A mathematical background and a strong engineering sense

Support what they write, find a problem and fix it

having a good sense of what the customer is thinking and can respond to customer requirements.

Expanded by Ferreiras The Software Engineering 18

"Software engineering is the nuts and bolts for the entire future. You need software for everything these days. It's deeper than deep. I think it's going

to become the new English."

How important software engineering is not just for today, but for the future ?

Simple answerSimple answer

"Software engineering is going to change the world, It's becoming embedded in the devices we

all use every day."

Expanded by Ferreiras The Software Engineering 19

How important software engineering is not just for today, but for the future ?

Simple answerSimple answer

Please God, say the software engineer that you have to

update the software that you are using to manage the world.

Expanded by Ferreiras The Software Engineering 20

Difference between software engineering Difference between software engineering and traditional engineeringand traditional engineering

Traditional engineersTraditional engineers construct real artifacts and software engineers construct non-real (abstract) artifacts.

Software engineeringSoftware engineering is based on computer science, information science and discrete mathematics whereas traditional engineering is based on mathematics, science and empirical knowledge.

In traditional engineeringIn traditional engineering, two main concerns for a product are cost of production and reliability measured by time to failure whereas in software engineering two main concerns are cost of development and reliability measured by the no. of errors per thousand lines of source code.

Expanded by Ferreiras The Software Engineering 21

Difference between software engineering Difference between software engineering and traditional engineeringand traditional engineering

Both disciplinesBoth disciplines requires maintenance but in different ways.

Software engineeringSoftware engineering is about 50 years old whereas traditional engineering as a whole is thousand of years old.

Software engineersSoftware engineers emphasize projects that will live for years or decades whereas some traditional engineers solve long-ranged problems that ensure for centuries.

Software engineersSoftware engineers often apply new and untested elements in software projects while traditional engineers generally try to apply known and tested principles and limit the use of untested innovations to only those necessary to create a product that meets its requirements.

Expanded by Ferreiras The Software Engineering 22

Difference between software engineering Difference between software engineering and traditional engineeringand traditional engineering

Software engineering is often busy with researching the unknown (eg. To drive an algorithm) right in the middle of a project whereas traditional engineering normally separates these activities. A project is supposed to apply research results in known or new clever ways to build the desired result.

Software engineering has first recently started to codify and teach best practice in the form of design pattern whereas in traditional, some engineering discipline have thousands of years of best practice experience handed over from generation to generation via a field's literature , standards, rules and regulations.

Expanded by Ferreiras The Software Engineering 23

Difference between software engineering Difference between software engineering and traditional engineeringand traditional engineering

The biggest differenceThe biggest difference between software engineering and other forms of engineering is that in software engineering the rules of our game change constantly.

When was the last time that a Civil Engineer had to worry about the laws of gravity changing or a Chemical Engineer had to worry about a change to the Periodic Table of Elements?

In software, our knowledge base is shifting constantly. Every year we get new operating systems, programming languages, or frameworks. A large portion of what someone learned 5 years ago may not even be applicable any more.

In contrast, just about everything other engineering disciplines learned 15 years ago still applies today.

Expanded by Ferreiras The Software Engineering 24

IMPORTANT IMPORTANT

The teacher assumes that you will read the article at the following links:

http://www.todaysengineer.org/2011/Jan/licensure.asp“IEEE-USA and IEEE Computer Society Cooperate in New Professional Software Engineering Licensure Initiative”

http://www.helium.com/items/842876-how-software-engineering-differs-from-other-engineering

...

http://stackoverflow.com/questions/141502/what-differentiates-software-engineering-from-any-other-engineering-discipline

Software Engineering ProcessesSoftware Engineering Processes

Expanded by Ferreiras The Software Engineering 25

See:CHAPTER 9

SOFTWARE ENGINEERING PROCESS

D:\Ferreiras2\SE, SWEBOK/SWEBOK_Guide_2004

Expanded by Ferreiras

The Software Engineering 26

Important Trends In Important Trends In Software Engineering Software Engineering

Global e-Business Program

Seattle University

Summer 2003Everald E. Mills, Ph.D.

CSSE Dept. Seattle University

authorship

Recovered on January 2012 by Ferreiras and some little modifications made.

Expanded by Ferreiras The Software Engineering 27

Software Engineering

What is Software Engineering ?

Where is Software Engineering today ?

Where is it going ?

Expanded by Ferreiras The Software Engineering 28

I. What Is Software Engineering? Is it :

– Programming ?– Computer science ?– Engineering ?– A real discipline ?– A professional activity ?

Expanded by Ferreiras The Software Engineering 29

Some Basic Definitions

Software -- Computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system.

Engineering -- Application of systematic, disciplined, quantifiable approach to some process.

Expanded by Ferreiras The Software Engineering 30

The Software Process (Life Cycle)

Development Operation Maintenance

– Corrective– Enhancement

Expanded by Ferreiras The Software Engineering 31

Resulting Definition Of Software Engineering

Definition -- The application of systematic, disciplined, quantifiable approaches to software development, operation and maintenance.*

* - IEEE Standard 610.12-1990, IEEE Standard Glossary of Software Engineering Terminology, IEEE Standards Collection Software Engineering, IEEE (1997).

Expanded by Ferreiras The Software Engineering 32

Why do we need it ?

The “Software Crisis”– First identified at NATO Conference,

Garmisch, Germany, 1968– Characterized by software which is

• of poor quality• over budget• late• Naur & Randell (1969)

Expanded by Ferreiras The Software Engineering 33

II. Where Is Software Engineering Today ? Although significant improvements have

been made in specific areas, the rapidly evolving nature of the software industry has resulted in little overall improvement in the overall situation -- in fact …..

Expanded by Ferreiras The Software Engineering 34

The Crisis Persists

More than 30 years later, the software “crisis” is still with us

Major problems are still the same:– poor quality (correctness, bugs, usability,

maintainability, etc)– over budget– delivered late, or not at all

Expanded by Ferreiras The Software Engineering 35

Software Quality Problems Correctness, bugs, usability, etc

– Examples --• U.S. Strategic Air Command alert (Nov 9, 1979) -- alert

scramble in response to report that Soviet Union had launched missile attack

• Therac 25 medical linear accelerator treatment device -- two patients died of severe overdoses of radiation (1985-1987)

• Gulf War (1991) -- U.S. Patriot missile defense failed to detect Scud missile due to time error -- 28 Americans

died as a result.

Expanded by Ferreiras The Software Engineering 36

Schedule/Cost Problems

An example -- U.S. Internal Revenue Service– Hired Sperry Corporation to build

automated income tax form processing system (1980-1985) --the resulting system couldn’t handle the work load, cost almost twice what was expected, and had to be replaced soon after initial installation. By 1996, the situation had not improved.

Expanded by Ferreiras The Software Engineering 37

Not A Crisis -- But A Chronic Condition

Software “Crisis” has lasted too long to be a crisis -- rather, it’s a persistent, chronic condition of the software business

Software Engineering is the proposed solution to the problem. Its aims are:– production of fault-free software, delivered

on time and within budget, that satisfies the users’ needs, and is easy to maintain.

Expanded by Ferreiras The Software Engineering 38

A Closer Look At The Software Life Cycle

Development Operation Maintenance Most problems can be traced to the

Development phase of the life cycle, so most efforts to improve software have focused on this aspect.

Expanded by Ferreiras The Software Engineering 39

Software Development (1) In the early days of computing, software

development was viewed as consisting only of “coding”, or programming the computer

It was a black art, practiced by skilled (?) individuals, usually working alone

This approach worked relatively well when programs were small & simple

Expanded by Ferreiras The Software Engineering 40

Software Development (2) As computer systems (both hardware

and software) have become larger and more complex, the software development process has also become more and more complex -- and the simple art of “programming in the small” is no longer capable of coping with the task.

Expanded by Ferreiras The Software Engineering 41

Software Development (3) Changes in software over time:

– grew in size from 10’s or 100’s of lines to 1000’s to 1,000,000’s of lines of code

– operating environment changed from simple “batch” operations to complex multiprogramming systems, to time-sharing and distributed computing to today’s Internet network computing environment.

Expanded by Ferreiras The Software Engineering 42

Software Development (4) Today, the software development process is

generally considered to consist of a number of essential activities:– requirements gathering and analysis– design– implementation (I.e. programming)– testing, verification, validation– installation – (followed by operation and maintenance)

Expanded by Ferreiras The Software Engineering 43

Software Development (5) Important conclusions -

– today’s typical software project involves large, complex programs which are too difficult for any one person to handle

– a number of persons must work in teams in order to complete any such project in a reasonable time

– management skills are as important as technical skills

Expanded by Ferreiras The Software Engineering 44

Software Development (6) Software Engineering today --

– Recognizes that the technical process of software development cannot succeed without the application of sound management principles

– Software projects can fail for either technical or managerial reasons -- but most often project failures result from poor or nonexistent management practices.

Expanded by Ferreiras The Software Engineering 45

Software Development (7) Major attempts to improve software

results– Software Engineering Institute (SEI) --

founded by U.S. Department of Defense, in conjunction with Carnegie Mellon University, Pittsburgh, PA

– SEI developed Capability Maturity Model (CMM) for assessing software capability

Expanded by Ferreiras The Software Engineering 46

Other Attempts To Improve Software Quality

ISO 9000 -- (International Standard Organization) -- 9000 series standards, pertain to improvement of design, development, production activities, not just for software

SPICE (Software Process Improvement Capability dEtermination) -- an international process improvement initiative, over 40 countries involved

CMM, ISO 9000, SPICE -- all aimed at improving the software development process

Expanded by Ferreiras The Software Engineering 47

Today’s Software Industry* A 1999 report indicates that, by 1997:

– only 2% of software organizations had achieved CMM Level 4 or 5

– almost 62% were still at Level 1– since it requires about 4 years to achieve

Level 3, the number of organizations at top Levels (4 & 5) is still not large (in 2003)

* -- IEEE Software, May/June 1999

Expanded by Ferreiras The Software Engineering 48

Characteristics Of Today’s Software Industry Driven by intense market forces,

including persistent pressure to deliver software on unrealistic time schedules

Continuing rapid evolution of software methodologies and systems

Unable to adopt and utilize proven methodologies in timely fashion

Expanded by Ferreiras The Software Engineering 49

Today’s Software Industry (1)

Even though much is now known about how to improve software production, the overall state is not much better than ever*, due to the urgency of meeting unrealistic delivery schedules and the continuing rapid evolution of the software industry

* -- i.e. poor quality, late delivery, over budget

Expanded by Ferreiras The Software Engineering 50

Today’s Software Industry (2)

“Software glitches cost the U.S. economy $59.5 billion each year …”, according to a recent U.S. Department of Commerce study – approximately 50 per cent due to users, and 50 per cent due to vendors and developers …. *

* -- ACM TECHNews, July 1, 2002

Expanded by Ferreiras The Software Engineering 51

III.Where Is Software Engineering Going ? Important Factors. Market pressures

– short production cycles, unrealistic delivery dates

– shortages of skilled personnel New methodologies/technologies Technology transfer limitations

Expanded by Ferreiras The Software Engineering 52

Market Pressures(1) – Scheduling Considerations Management personnel often agree to

unrealistic schedules, due to market pressure and desire to “beat the competition”

Results:– unrealistic schedules– untested, defective products– customer dissatisfaction

Expanded by Ferreiras The Software Engineering 53

Market Pressures(2) – Estimating Software Project Costs Enlightened software organizations are

making increased use of proven, quantitative techniques for estimating project size, and the corresponding requirements for effort and schedule.

Improved (quantitative) estimates help avoid early commitments to impossible scheduled delivery dates.

Expanded by Ferreiras The Software Engineering 54

Market Pressures(3) – Software Cost Estimation Tools

Numerous approaches, including:– Cost Based in UC– estimation by analogy– lines of code techniques (LOC)– Function Points methods (IFPUG)– COCOMO model, Boehm (COCOMO II)– Walston/Felix model– In 2002, over 50 cost estimation tools marketed in the US, &

25 in Europe*

* -- “Software Cost Estimation in 2002”, CrossTalk, June 2002

Expanded by Ferreiras The Software Engineering 55

Market Pressures(4) -- Shortages Of Skilled Personnel

Late 90’s to 2000 – in US, dot.com frenzy led to major shortages of skilled personnel

Solution = more out-sourcing and importation of skilled workers

Dot.com bust of 2001+ -- eliminated shortages – increased competition in world software development market

Expanded by Ferreiras The Software Engineering 56

New Methodologies (1) New methodologies continue to appear,

more rapidly than they can effectively be put into use

Major Problem: How does one know whether a new methodology is worth putting into use ? (Some may not be.)

Adoption requires major investment -- will there be a positive ROI ?

Expanded by Ferreiras The Software Engineering 57

New Methodologies (2)

Programming paradigms– ad hoc– functional– procedural– structured– object-oriented– pair programming– XP (eXtreme Programming)– next ??

Expanded by Ferreiras The Software Engineering 58

New Methodologies (3)

CASE Tools (Computer Aided Software Engineering) Today’s complex programming

environments require complex, sophisticated software tools -- which, again, raise the question of adoption costs and ROI (usually positive in the long run, but negative in the short run).

Expanded by Ferreiras The Software Engineering 59

New Methodologies (4)

CASE Tool Paradox: CASE tools, such as Integrated

Development Environments (IDE’s), such as Visual Basic, etc, make it easy to develop software components -- even if user of the tool has no understanding of underlying software concepts => such tools can be dangerous !

Expanded by Ferreiras The Software Engineering 60

New Methodologies (5)

CASE Tool Paradox (2) Although CASE tools reduce the

amount of effort required to produce software components, they actually increase the amount of background knowledge the user needs to use the tool safely and effectively.

Expanded by Ferreiras The Software Engineering 61

New Methodologies (6) Software Project Management techniques are

steadily improving, and being applied more effectively.– Increasingly quantitative approach, using

“software metrics”– specific project plans – detailed task breakdowns– firm milestones -- specific results on scheduled

dates– regular reviews and assessments

Expanded by Ferreiras The Software Engineering 62

Technology Transfer Problems* Engineering technology tends to follow

a 15-year cycle from initial concept to application in a production environment – concept development - 5 years– prototyping, and initial use - 5 years– use in production environment - 5 years

* -- Software Engineering, Pressman, 4th ed, 835.

Expanded by Ferreiras The Software Engineering 63

Important Trends

Software Methodologies

Computing Environment

Educational Trends

Expanded by Ferreiras The Software Engineering 64

Educational Trends

Software Engineering has matured as an educational discipline

Software Engineering Body Of Knowledge (SEBOK) has been defined

BS/MS degree programs have been initiated (1st BS/SE – Rochester Institute of Technology – 1996) – and will soon be accredited by ABET (US)

Expanded by Ferreiras The Software Engineering 65

Educational Trends (2) In the past, students have pursued

degrees in CS to prepare for software development work (i.e. software engineering ?)

In the future, students preparing for career in software engineering will be expected to have earned degree in SE (not CS) – especially if accredited

Expanded by Ferreiras The Software Engineering 66

Educational Trends (3)

Prediction – approaching long period of “adjustment” between academic “computer science” programs and academic “software engineering” programs – which may be painful

This leads us back to our original question – “What is Software Engineering ?”

Expanded by Ferreiras The Software Engineering 67

So -- Where Is Software Engineering Going ? Full steam ahead, into an even more

complex software environment, including larger and more complex systems, greater security risks and increased needs for professional education, integrity and competence. Unfortunately, there is no definitive road map to help us find our way.

Software fails casesSoftware fails cases

Expanded by Ferreiras The Software Engineering 68

Software bughttp://en.wikipedia.org/wiki/Software_bug

The results of bugs may be extremely serious. Bugs in the code controlling the Therac-25 radiation therapy machine were directly responsible for some patient deaths in the 1980s. In 1996, the European Space Agency's US$1 billion prototype Ariane 5 rocket was destroyed less than a minute after launch, due to a bug in the on-board guidance computer program. In June 1994, a Royal Air Force Chinook crashed into the Mull of Kintyre, killing 29. This was initially dismissed as pilot error, but an investigation by Computer Weekly uncovered sufficient evidence to convince a House of Lords inquiry that it may have been caused by a software bug in the aircraft's engine control computer.[1]In 2002, a study commissioned by the US Department of Commerce' National Institute of Standards and Technology concluded that "software bugs, or errors, are so prevalent and so detrimental that they cost the US economy an estimated $59 billion annually, or about 0.6 percent of the gross domestic product".

A number of software bugs have become well-known, usually due to their severity: examples include various space and military aircraft crashes. Possibly the most famous bug is the Year 2000 problem, also known as the Y2K bug, in which it was feared that worldwide economic collapse would happen at the start of the year 2000 as a result of computers thinking it was 1900. (In the end, no major problems occurred.)

List of software bugs

http://en.wikipedia.org/wiki/List_of_software_bugs

ReferencesReferences

Expanded by Ferreiras The Software Engineering 69

All references are cited in the inside of this presentation.

Expanded by Ferreiras The Software Engineering 70