cs 360 lecture 1. definition: software engineering covers technical aspects of building software...

23
INTRODUCTION TO SOFTWARE ENGINEERING CS 360 Lecture 1

Upload: morgan-gilmore

Post on 28-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

INTRODUCTION TO SOFTWARE ENGINEERINGCS 360

Lecture 1

Page 2: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE ENGINEERING Definition:

Software engineering covers technical aspects of building software systems, along with management issues such as directing programming teams, scheduling, and budgeting.

More and more systems are software controlled National infrastructures: utilities, communication, navigation Entertainment: music, movie/television, games Residential: community design, landscaping Science/Data Collection: biology, chemistry, physics, engineering, … Social Interactions: email, social networks, text messaging

Page 3: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE ENGINEERING VS. COMPUTER SCIENCE Computer Science:

Study design of algorithms, languages, hardware and software architectures, and complexities such as space and time.

Foundation based on mathematics and theory. Why does it work?

Software Engineering: Study design of creating high quality software that provides a solution to a given

problem using controlled, systematic, and efficient design techniques. Foundation based on problem solving. How does it work?

Page 4: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE ENGINEERING The economies of ALL developed nations are dependent on

software.

Software represents a significant fraction of GDP in all developed countries. 1997: $149 billion

1.7% U.S. GDP 2012: $526 billion

3.2% U.S. GDP

The use of software has also increased the productivity of other industries. 15% increase in all U.S. labor productivity from 2004 to 2012. Software accounted for $101 billion in overall production in 2012.

Page 5: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE ENGINEERING Software Jobs:

1990: 778,000 1995: 1,083,000 2010: 2,095,000 2014: 2,501,000

Software jobs growing faster than any other jobs. 2014: 2.2% of all U.S. employment Software industry directly responsible for ~3.65 million U.S. jobs Software industry employment grows on average by 3.1% Every Year.

Average salary for new employees in the software industry:

$86,457

Average salary per person in the U.S.: $27,000

Page 6: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE COSTS Software costs often dominate computer system costs.

The costs of software on a PC are often greater than the hardware cost.

Page 7: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE COSTS The apparent problem of incomplete, poorly written software

became referred to as "the software crisis". Computers (both software and hardware) were created as 'one-off' items for

particular applications.

With the emergence of large and powerful general purpose mainframes (such as the IBM 360, and now distributed/virtualized cloud architectures) large and complex systems became possible. People began to ask why project failures were so much more common than with

other large projects. The late 1960s introduced the new discipline of Software Engineering.

Page 8: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE COSTS A number of fundamental problems with the process of software

development were identified:

1. Frequently, software was never completed, even after further significant investment had been made.

2. The amount of work involved in removing flaws and bugs from "completed" software, to make it useable, often took a considerable amount of time - often more than had been spent in the writing it in the first place.

3. The functionality of the software seldom matched the requirements of the end-users.

4. Once created, software was almost impossible to maintain; the developer's ability to understand what they had written appeared to decrease rapidly over time.

Page 9: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE COSTS Software costs more to maintain than it does to develop. For systems with

a long life, maintenance costs may be several times development costs.

Page 10: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE ENGINEERING Software engineering is concerned with cost-effective software

development. First determine the needs of the user. Then design, construct, test, and maintain the software system.

Page 11: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE ENGINEERING Role of the software engineer:

1. Research – the software engineer should seek new principles and processes by employing mathematical and scientific concepts, experimental techniques, and inductive reasoning.

2. Design – the software engineer selects methods and materials to satisfy technical requirements and to meet performance specifications.

3. Development – the software engineer applies the results of research to useful purposes. Ingenious and creative application of new knowledge may result in a working software prototype.

4. Construction – the software engineer determines procedures that will economically and safely yield the desired software product.

5. Management – the software engineer may be responsible for deciding how assets are used, project team management, determining economic feasibility, and resolving problems.

Page 12: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE PRODUCTS Generic products

Stand-alone systems that are marketed and sold to any customer who wishes to buy them.

Examples – PC software such as graphics programs, games Project management tools CAD software Software for specific markets such as appointments systems for dentists, doctors

Customized products Software that is commissioned by a specific customer to meet their own needs. Examples –

Embedded control systems Air traffic control systems Traffic monitoring systems

12

Page 13: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

PRODUCT SPECIFICATION Generic products

The specification of what the software should do is owned by the software developer. Microsoft Office 365 Google Gmail Android OS

Customized products The specification of what the software should do is owned by the customer.

Embedded system control for automated manufacturing Hospital systems for storing patient data Billing systems for super markets and gas stations

13

Page 14: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

What is software? Computer programs and associated documentation. Software products

may be developed for a particular customer or may be developed for a general market.

What are the attributes of good software? Good software should deliver the required functionality and performance

to the user and should be maintainable, dependable and usable.

What is software engineering? Software engineering is an engineering discipline that is concerned with

all aspects of software production.

14

FREQUENTLY ASKED QUESTIONS ABOUT SOFTWARE ENGINEERING

Page 15: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

What are the key challenges facing software engineering? Coping with increasing diversity Demands for reduced delivery times Developing trustworthy software

15

FREQUENTLY ASKED QUESTIONS ABOUT SOFTWARE ENGINEERING

Page 16: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

ESSENTIAL ATTRIBUTES OF GOOD SOFTWARE

16

Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment.

Dependability and security Software dependability includes a range of characteristics including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system.

Efficiency Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use.

Page 17: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

IMPORTANCE OF SOFTWARE ENGINEERING More and more, individuals and society rely on advanced software

systems.. Education Social media Smart home devices Communication

It is usually cheaper, in the long run, to use software engineering methods and techniques for developing software systems rather than ad-hoc software development. 67% of the software system’s life spent in maintenance phase. Who’s maintaining the software?

17

Page 18: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE PROCESS ACTIVITIES Software specification:

where clients and engineers define the software that is to be produced and the constraints on its operation.

Performed by: clients and software engineering team

Software development: where the software is designed and programmed. Performed by: software engineering team

Software validation: where the software is checked to ensure that it is what the customer requires. Performed by: clients and software engineering team

Software evolution: where the software is modified to reflect changing customer and market

requirements. Performed by: software engineering team

18

Page 19: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

GENERAL ISSUES THAT AFFECT MOST SOFTWARE Heterogeneity

Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices. Mobile devices

Business and social change Business need to be able to change their existing software and to rapidly develop

new software.

Security and trust As software is intertwined with all aspects of our lives, it is essential that we can

trust that software. Fitness monitoring software Banking software Cloud enabled software

19

Page 20: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

SOFTWARE ENGINEERING DIVERSITY There are many different types of software systems.

There is no universal set of software techniques that is applicable to all of these. Ex: Techniques for building the embedded software system for autonomous robots

versus techniques for building software systems used for metadata harvesting.

The software engineering methods and tools used depend on: The type of application being developed The requirements of the client The background of the development team

In this class, the teams will be diverse, and the client’s requests may change over time.

20

Page 21: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

APPLICATION TYPES Stand-alone applications

These are application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to a network.

These are becoming increasingly uncommon Example?

Interactive transaction-based applications Applications that execute on a remote computer and are accessed by users from

their own PCs or terminals. Email Dropbox

Embedded control systems These are software control systems that control and manage hardware devices.

Numerically, the most common type of system. Traffic control systems Automotive control systems HVAC control systems

21

Page 22: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

APPLICATION TYPES Batch processing systems

These are business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs. Bank transaction systems Inventory tracking systems

Entertainment systems These are systems that are primarily for personal use and which are intended to entertain

the user. Gaming systems DVD/Blue-Ray systems

Systems for modeling and simulation These are systems that are developed by scientists and engineers to model physical

processes or situations. CloudSim NS2

22

Page 23: CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing

APPLICATION TYPES Data collection systems

These are systems that collect data from their environment using a set of sensors and send that data to other systems for processing. Hobo environmental sensor systems Inventory tracking with RFID

23