an introduction to software engineering. software engineering is concerned with theories, methods...

Post on 22-Dec-2015

227 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

An Introduction to

Software Engineering

Software engineering is concerned with theories, methods and tools for professional software development

Software engineering

Course Themes

1. Leadership of large software projects

Software as a product

Clients and their needs Quality

Requirements and specification

Usability Evolution

Project management

Personnel management Economic, legal, and social factors

Course Themes

2. Large and very large systems

Software design

Software architecture Object-oriented design

Dependable systems

Reliability Verification

FAQs about software engineering

What is software? What is software engineering? What is the difference between software engineering

and computer science? What is the difference between software engineering

and system engineering? What is a software process? What is a software process model?

FAQs about software engineering

What are the costs of software engineering? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? What are the key challenges facing software

engineering?

What is software?

Computer programs and associated documentation

Software products may be• Generic - developed to be sold to a range of

different customers• Bespoke (custom) - developed for a single

customer according to their specification• Embedded

• Built into hardware• Hard to change

Software Applications

1. System software: such as compilers, editors, file management2. Application software: stand-alone programs for specific needs. 3. Engineering/scientific software: such as automotive stress analysis, molecular biology, orbital dynamics etc 4. Embedded software resides within a product or system. (key pad control of a microwave oven, digital function of dashboard display in a car)5. Product-line software focus on a limited marketplace to address mass consumer market. (word processing, graphics, database management)6. WebApps (Web applications) network centric software :remote database and business applications. 7. AI software Robotics, expert system, pattern recognition game playing

Software Engineering

• Software Engineering is the science and art ofbuilding significant software systems that are:

1) on time2) on budget3) with acceptable performance4) with correct operation.

What is Software Engineering?

Some Definitions and Issues

“state of the art of developing quality software on time and within budget”

Trade-off between perfection and physical constraints• SE has to deal with real-world issues

State of the art!• Community decides on “best practice” + life-long education

What is Software Engineering?

“multi-person construction of multi-version software” Team-work

• Scale issue (“program well” is not enough) + Communication Issue

Successful software systems must evolve • Change is the norm, not the exception

12

Why Study Software Engineering?

To acquire skills to develop large programs. • Exponential growth in complexity and

difficulty level with size.• The ad hoc approach breaks down

when size of software increases

What is the difference between software engineering and computer science?

Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software

What is the difference between software engineering and system engineering?

System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process

System engineers are involved in system specification, architectural design, integration and deployment

What is a software process?

A set of activities whose goal is the development or evolution of software

Generic activities in all software processes are:• Specification - what the system should do and its

development constraints• Development - production of the software system• Validation - checking that the software is what the

customer wants• Evolution - changing the software in response to changing

demands

What is a software process model?

A simplified representation of a software process, presented from a specific perspective

Examples of process perspectives are• Workflow perspective - sequence of activities• Data-flow perspective - information flow• Role/action perspective - who does what• Waterfall• Evolutionary development• Formal transformation• Integration from reusable components

Software Quality... Usability

• Users can learn it and fast and get their job done easily Efficiency

• It doesn’t waste resources such as CPU time and memory Reliability

• It does what it is required to do without failing Maintainability

• It can be easily changed Reusability

• Its parts can be used in other projects, so reprogramming is not needed

18

Emergence of Software Engineering

Early Computer Programming (1950s):• Programs were being written in

assembly language. • Programs were limited to about a

few hundreds of lines of assembly code.

Early Computer Programming (50s)

Every programmer developed his own style of writing programs:• according to his intuition

(exploratory programming).

Software development style was still exploratory.

Typical program sizes were limited to a few thousands of

lines of source code.

High-Level Language Programming (Early 60s)

21

Control Flow-Based Design (late 60s)

Size and complexity of programs increased further:• exploratory programming style

proved to be insufficient. Programmers found:

• very difficult to write cost-effective and correct programs.

Control Flow-Based Design (late 60s)

Programmers found:• programs written by others very

difficult to understand and maintain.

Control Flow-Based Design (late 60s)

Using flow charting technique: • one can represent and design a

program's control structure. • Usually one understands a

program:• by mentally simulating the program's execution sequence.

Control Flow-Based Design (Late 60s)

It was found:• GO TO ) JUMP ( statements makes

control structure of a program messy• GO TO statements alter the flow of

control arbitrarily. • The need to restrict use of GO TO

statements was recognized.

Control Flow-Based Design (Late 60s)

But, soon it was conclusively proved: A program is called structured

• only three programming constructs are sufficient to express any programming logic:• sequence (e.g. a=0;b=5;)• selection (e.g.if(c=true) k=5 else m=5;)

• iteration (e.g. while(k>0) k=j-k;)

Data Structure-Oriented Design (Early 70s)

Soon it was discovered:• it is important to pay more

attention to the design of data structures of a program • than to the design of its control structure.

27

Data Flow-Oriented Design (Late 70s)

Data flow-oriented techniques advocate: • the data items input to a system

must first be identified, • processing required on the data

items to produce the required outputs should be determined.

Data Flow Model of a Car Assembly Unit

FitEngine

Paint and Test

FitWheels

FitDoors

Chassis Store

Door Store

Wheel Store

Engine Store

Car

Partly Assembled Car

Assembled Car

Chassis with Engine

29

Object-Oriented Design (80s)

Object-oriented technique:• an intuitively appealing design

approach: • natural objects (such as

employees, pay-roll-register, etc.) occurring in a problem are first identified.

30

Object-Oriented Design (80s)

Relationships among objects:• such as composition, reference,

and inheritance are determined. Each object essentially acts as

• a data hiding (or data abstraction) entity.

Future Experience

What will you be doing one year from now?

Ten years from now?

Principle Texts Software Engineering (9th Edition),

Ian Sommerville, 2010, ISBN-10: 0137035152

Software Engineering: A Practitioner's Approach, Roger Pressman, 2009

Projects

Project teams, about 3 to 5 people.

Select your own project, any branch of software engineering

Real project for real client who intends to use the software in production.

Presentations:

requirements

design

final

Client (a.k.a Customer)

The client provides resources and expects some product in return.

Client satisfaction is the primary measurement of success.

Question: Who is the client for Microsoft Excel?

top related