You are on page 1of 21

COMP 211 COMP 211 INTRODUCTION TO INTRODUCTION TO SOFTWARE ENGINEERING SOFTWARE ENGINEERING

INTRODUCTION AND OVERVIEW INTRODUCTION AND OVERVIEW

COMP 211

INTRODUCTION & OVERVIEW

LEARNING OBJECTIVES
1. Understand the nature and importance of software.

2. Understand that developing large software systems is complex.

3. Know some approaches for dealing with software development complexity.

4. Understand what software engineering is and why it is important in software development.

COMP 211

INTRODUCTION & OVERVIEW

SOFTWARE IS

computer programs plus


configuration data documentation (system; user)

Types of software:
generic custom

Copies in use medium low high

Annual development effort medium high low

Requirements come from market research client needs client/hardware needs

Our focus

embedded

Alternative classification:
data processing organizes and stores business data real-time controls devices/processes in real time

COMP 211

INTRODUCTION & OVERVIEW

SOFTWARE IS (contd)

Important
pervasive and essential part of almost all organizations key part of many products (design; embedded systems)

Big business
several hundred billion dollars/year spent worldwide and growing

Software Demand

Personal computing, information, education Commercial Scientific & Technical 1950 1960 1970 1980 1990 2000

Man-months

But complex to develop


B-2 bomber: 3.5MLOC Windows 95: 15MLOC
(plus 5,000 estimated bugs!)

8000 6000 4000 2000 100 200 300 400 500 1000s of language statements 600

Windows NT: 25MLOC


COMP 211

INTRODUCTION & OVERVIEW

SOFTWARE COMPLEXITY COMES FROM

Application domain
problems are complex developers are not domain experts

Communication among stakeholders (developers, clients, )


different vocabulary: domain experts <=> developers <=> developers inherent ambiguity of language different background knowledge of stakeholders

Managing the process


dividing the project into pieces and reassembling the pieces coordinating many people

Coding
creating useful software is a complicated engineering process

COMP 211

INTRODUCTION & OVERVIEW

SOFTWARE COMPLEXITY LEADS TO


1. software quality problems
unreliable unsafe inflexible abandoned Hong Kong Airport; Ariane 5 rocket London Ambulance; Therac-25 hard to change/maintain London Stock Exchange

2. project management problems


over schedule over budget

3. programmer productivity problems For large software projects:


25% are canceled 50% take longer than planned 75% are operational failures
COMP 211 INTRODUCTION & OVERVIEW 6

SOFTWARE COMPLEXITY LEADS TO (contd)


Ariane 5 Its maiden flight on June 4, 1996 ended in the launcher being exploded because of a chain of software failures London Ambulance Because of a succession of software engineering failures, especially defects in project management, a system was introduced that failed twice in the autumn of 1992. Although the monetary cost, at only about 9m, was small by comparison with other examples, it is believed that people died who would not have died if ambulances had reached them as promptly as they would have done without this software failure. Therac-25 Between 1985 and 1987 six people (at least) suffered serious radiation overdoses because of software-related malfunctions of the Therac-25 radiation therapy machine. Three of them are thought to have died of the overdoses. An important root cause was a lack of quality assurance, which led to an overcomplex, inadequately tested, under-documented system being developed, and subsequently to the failure to take adequate corrective action. London Stock Exchange Taurus was a planned automated transaction settlement system. The project was canceled in 1993 after having lasted more than five years and costing around 75m; the estimated loss to customers was around 450m; and the damage to the reputation of the London Stock Exchange was incalculable.
COMP 211 INTRODUCTION & OVERVIEW 7

DEALING WITH SOFTWARE QUALITY PROBLEMS QUALITY DESIGN GOALS


There are many desirable software quality characteristics:
correct reliable robust efficient usable verifiable maintainable repairable evolvable reusable portable interoperable understandable productive timely visible

Impossible (or unnecessary) to achieve all of them simultaneously (time/cost/conflicting or not important)

Need to choose most important qualities for a given project


and base the development around these. This reduces the complexity of designing the system!
COMP 211 INTRODUCTION & OVERVIEW 8

DEALING WITH SOFTWARE QUALITY PROBLEMS QUALITY DESIGN GOALS (contd)


correct - behaves according to the specifications of its functions (functionally correct) reliable - probability that the software will work as expected over a specified time interval robust - if it behaves reasonably in unanticipated circumstances efficient - in use of time, space, etc. usable - if human users find it easy to use (user interface aspect very important) verifiable - if properties can be easily checked (e.g., correct, efficient, etc.) maintainable - if software can be easily fixed/changed after implementation repairable - if defects can be easily corrected with limited/reasonable effort evolvable - if software can be easily changed over time reusable - if we can reuse parts, perhaps with minor changes portable - if software can run in different hardware/software environments interoperable - if software can co-exist and cooperate with other hardware/software systems understandable - if it is easy to figure out what is going on/being done productive - efficiency of the software production process timely - ability to deliver a product on time visible - if all steps/current status are available and easily accessible for external examination
COMP 211 INTRODUCTION & OVERVIEW 9

DEALING WITH PROJECT MANAGEMENT PROBLEMS MODULAR DEVELOPMENT


Large software systems are complex and changing. Large software systems are complex and changing. There is a limit to how much a person can understand There is a limit to how much a person can understand at any one time. at any one time. DIVIDE and CONQUER

The System

coupling

module: any piece of a system which it makes sense to consider separately modules not arbitrary (should have cohesion) cohesion

modules also need to depend on each other


COMP 211 INTRODUCTION & OVERVIEW 10

DEALING WITH PROJECT MANAGEMENT PROBLEMS MODULAR DEVELOPMENT (contd)


cohesion a measure of the number of functionally different things a module has to do

a module is most cohesive when it does only one thing


(i.e., provides an abstraction of some intuitively understood function which may nevertheless be complex to implement; a good abstractions is a pluggable component can replace and/or reuse it fairly easily)

coupling a measure of the number and types of interconnections (dependencies) a module has with other modules

a module has the lowest coupling when it has minimal


dependencies with other modules
COMP 211 INTRODUCTION & OVERVIEW 11

DEALING WITH PROJECT MANAGEMENT PROBLEMS MODULAR DEVELOPMENT (contd)

interface Use interfaces to control coupling (and thus complexity)


abstracts a module so the developer does not have to understand how a module is implemented

A module can be used without knowing


how it is implemented.

This reduces the complexity of understanding the system!


COMP 211 INTRODUCTION & OVERVIEW 12

DEALING WITH PROJECT MANAGEMENT PROBLEMS MODULAR DEVELOPMENT (contd)

interface
encapsulates a module so the developer is prevented from using knowledge about how the module is implemented

A module can be changed without


changing the rest of the system. This reduces the complexity of maintaining the system!

abstraction + encapsulation = information hiding abstraction + encapsulation = information hiding


COMP 211 INTRODUCTION & OVERVIEW 13

DEALING WITH PROJECT MANAGEMENT PROBLEMS MODULAR DEVELOPMENT (contd)

modularity defined via interfaces allows for:


more productivity in team development fewer bugs more maintainable software more reusable software

and the possibility of module-based (component-based) development using a suitable software architecture

This reduces the complexity of cost and time estimates for developing the system!

COMP 211

INTRODUCTION & OVERVIEW

14

DEALING WITH PROJECT MANAGEMENT PROBLEMS MODULAR DEVELOPMENT (contd)

SOFTWARE ENGINEERING SOFTWARE ENGINEERING CHALLENGES CHALLENGES


1. Define good modules with the right 1. Define good modules with the right things in their interfaces. things in their interfaces. 2. Specify suitable software architectures 2. Specify suitable software architectures to support modules. to support modules.

COMP 211

INTRODUCTION & OVERVIEW

15

DEALING WITH PROGRAMMER PRODUCTIVITY PROBLEMS TRAINING SOFTWARE ENGINEERS


programming-in-the-small coding programming-in-the-small coding programming-in-the-large software engineering programming-in-the-large software engineering Software engineers need to be able to:
talk with users in terms of the application, rather than computer jargon translate vague requirements and desires into precise specifications move among different levels of abstraction at different stages of the project build a model of the application (actually several models) use and apply several design approaches choose among alternatives (make tradeoffs) work in well-defined roles in a team

This reduces the complexity of building the system!


COMP 211 INTRODUCTION & OVERVIEW 16

1.2

SOFTWARE ENGINEERING IS
Theestablishment and use of sound engineering The establishment and use of sound engineering principles in order to obtain economically software that is principles in order to obtain economically software that is reliable and works efficiently on real machines. reliable and works efficiently on real machines. Frtiz Bauer Frtiz Bauer ...multi-person construction of multi-version software. ... multi-person construction of multi-version software. Dave Parnas Dave Parnas

engineering principles is a disciplined effort economicallyreliableefficiently has built-in quality real machines solves a real problem (implied) multi-person requires team effort multi-version is not a one-shot effort
INTRODUCTION & OVERVIEW 17

COMP 211

SOFTWARE ENGINEERING IS

engineering principles is a disciplined effort that: systematically uses methodologies, techniques and tools, and a store of relevant knowledge, architectures and components uses a modular approach to system building with phases applies appropriate project management techniques economicallyreliableefficiently has built-in quality that: meets cost, time and other constraints has meaningful quality assurance (e.g., standards) does formal testing of modules and the system as a whole real machines solves a real problem (implied), therefore: development is focused on meeting user requirements multi-person requires team effort that: pays attention to team organization, dynamics, and management multi-version is not a one-shot effort, therefore, we: plan for maintenance have excellent documentation
INTRODUCTION & OVERVIEW 18

COMP 211

SOFTWARE ENGINEERING INVOLVES

a modeling activity
problem domain model models the application domain solution model models the system to be built

a problem solving activity


search for an appropriate solution in the presence of change not algorithmic, but should be systematic

a knowledge acquisition activity


not a linear process learn as you go, but may need to unlearn sometimes, you may even need to start over!

a rationale management activity


assumptions and solutions change constantly may need to revisit decisions already made bugs, technology, etc. need to remember: Why did we make this choice?

COMP 211

INTRODUCTION & OVERVIEW

19

SOFTWARE ENGINEERING INVOLVES


A

LOT of documentation

and SOME coding.

COMP 211

INTRODUCTION & OVERVIEW

20

SUMMARY

Developing large software systems is complex We need to deal with this complexity by
Having appropriate quality design goals Using modular development techniques Training computer scientists to use software engineering techniques

Most of software engineering involves modeling and documenting system requirements and solutions, not coding Modeling and documenting may often seem tedious and boring but they are essential for helping to reduce complexity and thus building better software systems!

COMP 211

INTRODUCTION & OVERVIEW

21

You might also like