Sei sulla pagina 1di 18

Programming is part of  Software Design & Engineering

These slides introduce software engineering and explain its importance in dealing with large software systems.
Provide answers to key questions about software design and development as part of software engineering discipline.

Introduction to Software Engineering


Kamran Sartipi

Software systems

The impact of software systems on modern society and technology for 50 years.

Process automation: automobile industry; renery; software product family for electronic devices; telephony and switching systems
Equipment control: embedded systems in different electronic devices such as home appliances; automobile control gadgets
Scientic problems: differential equations; matrix operations; model checking; searching algorithms; information system manipulation
Entertainment industry: gaming; graphics; movies; music
Education and ofce management: distance education; word processors; databases; spreadsheets; slide presenters






Kamran Sartipi

Introduction to Software Engineering

Software systems

Example of very large software systems



Flight simulators; medical and imaging applications; air-trafc control; banking; telecommunications; etc.
These systems are written in more than 500 different languages.
Billions of lines of source code are written for mission critical software systems worldwide.

Introduction to Software Engineering


Kamran Sartipi

Software engineering to solve software crisis



Software crisis refers to the current state of software technology in dealing with development and maintenance of large and complex software systems. Instances are:

For every 8 large projects, 2 are cancelled.


Most projects exceed their time-schedule by 50%.
75% of large software systems malfunction after completion.
Detecting and correcting errors take 50% of time and effort.
Maintenance cost of a system is 60% of entire cost.
An example: baggage-handling system at Denver international airport

4000 telecars, 5000 electric-eyes, 400 radio receivers, 100 computers, cost $193

million

Software engineering tackles the software crisis by providing disciplined processes and methodologies to design, implement, and maintain large systems.
Introduction to Software Engineering




Kamran Sartipi

Software engineering key questions



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?

Introduction to Software Engineering


Kamran Sartipi

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?

Introduction to Software Engineering


Kamran Sartipi

What is software?

Computer programs and associated documentation:



SRS, SDS, Technical manual, User manual, Source code, Binary les, Build les, Versions
Tool provided documents: Reverse Engineering aspects, Tracing code to requirement
Generic - developed to be sold to a range of different customers
Customized - developed for a single customer according to their specication

Software products may be



Introduction to Software Engineering


Kamran Sartipi

What is software engineering?


Multi-person construction of multi-version software [Parnas 1978]


Software engineering is an engineering discipline which is concerned with all aspects of software production
Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available

Introduction to Software Engineering


Kamran Sartipi

Professional Responsibilities of Software Engineers



Accept individual responsibility


Solve the real problem
Be honest about capabilities and competence
Produce reviewable designs
Consider maintainability of product
Respect to condentiality of the clients
Knowledge of IP rights for patents, copyright, etc.
No computer miss-use by e.g., computer games; spreading computer viruses
P.Eng. Applicants write Ethics and Law Exams

Introduction to Software Engineering


Kamran Sartipi

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
Computer science theories are currently insufcient to act as a complete underpinning for software engineering

Introduction to Software Engineering


Kamran Sartipi

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 specication, architectural design, integration and deployment

Introduction to Software Engineering


Kamran Sartipi

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:

Specication - 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

Introduction to Software Engineering


Kamran Sartipi

What is a software process model?


A simplied representation of a software process, presented from a specic perspective


Examples of process perspectives are

Workow perspective - sequence of activities
Data-ow perspective - information ow
Role/action perspective - who does what
Waterfall
Evolutionary development
Formal transformation
Integration from reusable components

Generic process models




Introduction to Software Engineering


Kamran Sartipi

What are the costs of software engineering?


Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs
Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability
Distribution of costs depends on the development model that is used

Introduction to Software Engineering


Kamran Sartipi

What are software engineering methods?


Structured approaches to software development which include system models, notations, rules, design advice and process guidance
Model descriptions


Descriptions of graphical models which should be produced
Constraints applied to system models
Advice on good design practice
What activities to follow

Rules
Recommendations
Process guidance

Introduction to Software Engineering


Kamran Sartipi

What is CASE (Computer-Aided Software Engineering)


Software systems which are intended to provide automated support for software process activities. CASE systems are often used for method support
Upper-CASE

Tools to support the early process activities of requirements and design
Tools to support later activities such as programming, debugging and testing

Lower-CASE

Introduction to Software Engineering


Kamran Sartipi

What are the attributes of good software?



The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable
Maintainability

Software must evolve to meet changing needs


Software must be trustworthy
Software should not make wasteful use of system resources
Software must be usable by the users for which it was designed

Dependability

Efciency
Usability

Introduction to Software Engineering


Kamran Sartipi

What are the key challenges facing software engineering?


Coping with legacy systems, coping with increasing diversity and coping with demands for reduced delivery times

Legacy systems

Old, valuable systems must be maintained and updated

Heterogeneity

Systems are distributed and include a mix of hardware and software

Delivery

There is increasing pressure for faster delivery of software

Introduction to Software Engineering


Kamran Sartipi

Potrebbero piacerti anche