You are on page 1of 55

1

Chapter 1:
The Scope of Software Engineering

2

By the end of this module, you will...

Recall what a software is and identify its categories.  Understand what software engineering is.

Understand why software engineering is important.  Know answers to key questions related to the software

engineering discipline.

Quick Look
WHAT is it?: Computer software encompasses
programs that execute within a computer of any size and architecture, documents that encompass hard-copy and virtual forms, and data that combine numbers and text but also includes representations of pictorial, video, and audio information.

3

WHO does it?: Software engineers build
software products by applying software engineering approach.

WHY is it important?: Computer software are
used in nearly every aspect of our lives.

4

5

Software: Where does it lie?
Programs
It encompasses programs that execute within a computer, documents that include hard-copy & virtual forms, and data that combine numbers and text but also includes representations of pictorial, video, and other information.

Software
System Documentation

Data

Documentation
User Documentation

The Evolving Role of Software • Software takes on a dual role: – It is a product – It is a vehicle for delivering a product • Significant change in its role has been precipitated by: – Dramatic improvement in hardware performance – Profound change in computing architectures – Vast increases in memory and storage capacity – Wide variety of input and output options 6 .

for labor-intensive industry – Difficulty in automating some manual tasks 7 . cost is in its development • Software is complex to develop esp. manufacturing is the costly stage – In software.The Nature of Software • Software is intangible – Hard to understand development effort • Software is easy to reproduce but costly – In other engineering products.

thus making it complex 8 .The Nature of Software • Software quality problems are hard to notice – Finding all the errors in the software before delivering it to the customer is difficult • Software is easy to modify – People make changes without fully understanding the software • Software does not ‘wear out’ – It deteriorates by having its design changed: • erroneously. or in ways that were not anticipated.

Types of Software • Custom / Bespoke – For a specific customer – Customization is based on user requirements • Generic – Sold on open market – Often called COTS (Commercial Off The Shelf) • Embedded – Intelligent products that reside in ROM – Built into hardware and is hard to modify/change 10 .

Types of Software • Differences among custom. generic and embedded software Number of copies in use Total processing power devoted to running this type of software Worldwide annual development effort Custom low low Generic medium high Embedded high medium high medium low 11 .

operating systems.Specific Types of Software • Systems software – Programs written to service other programs – Include language translators. device drivers • Real time software – Programs that analyze and control real world events – Include control and monitoring systems 12 . file management utilities.

system 13 simulation. etc. sales & inventory. volcanology. . astronomy.• Business/Data processing software – Programs that facilitate business operations or management decision making – Include payroll. accounts receivable/payable • Engineering & scientific software – Programs characterized by “number crunching” algorithms – Include applications used in the area of molecular biology.

entertainment. spreadsheets. • Web-base software – Web applications that incorporates executable instructions (e. HTML.• Personal computer software – Commonly known as productivity tools – Include word processing. database management. CGI. multimedia.g. Perl. computer graphics. or Java) 14 . etc.

• Artificial intelligence software – Programs that makes use of non-numerical algorithms to solve complex problems that are not amenable to computation or straightforward analysis – Include robotics. neural networks. theorem proving. knowledgebased systems. pattern recognition (image and voice). expert systems. game playing 15 .

List as many as you can .16 Activity Think about all the devices and systems that you encounter in your everyday life which have software controlling them… Virtually all countries depend on complex computer-based systems.

developing and managing them. .17 Why is Software Engineering important? Complex systems need a disciplined approach for designing.

18 Software Development Crises Projects were: • Late • Over budget • Unreliable • Difficult to maintain • Performed poorly .

.19 Software errors incur cost.

cost distribution depends on the process used.  Roughly 60% of costs are development costs. and  The process used in software development Each generic approach has a different profile of cost distribution.  Evolution costs often exceed development costs.20 The Cost of Software Engineering  The cost depends on:  The type of software being developed. For custom software.   . 40% are testing costs.

21 Cost distribution Generic software development (COTS) 0 25 50 75 100 Specification Development System testing Product development costs .

22 Cost distribution Custom software development (Bespoke) Software Model Cost units Cost distribution Software development activity Specification Design Development Integration and testing Waterfall Model 0 25 50 75 100 Iterative Development 0 25 50 75 100 Specification Iterative Development System testing Component-based Software Engineering 0 25 50 75 100 Specification Development Integration and testing .

23 Errors in computer software can have devastating effects. .

• Caused by an overflow error.24 Software Crisis Example 2: Ariane 5 Explosion • European Space Agency spent 10 years and $7 billion to produce Ariane 5.youtube. • Crash after 36.com/watch?v=z-r9cYp3tTE .7 seconds. • Watch the video: http://www. Trying to store a 64-bit number into a 16-bit space.

• The problem did not create a safety issue but could cause delays in flights.fl ights.delayed . • Read more at: http://edition.com/2009/WORLD/europe/10/03/uk.25 Software Crisis Example 1: 2009. • The agency said it reverted to backup equipment as engineering worked on the system.cnn.Computer glitch delays flights • Dozens of flights from the UK were delayed Saturday after a glitch in an air traffic control system in Scotland. but the problem was fixed a few hours later.

. Sending multiple units to some locations and no units to other locations. • Generates many exceptions messages. London Ambulance Service • Considered the largest ambulance service in the world.26 Software Crisis Example 3: 1992. • It was unable to keep track of the ambulances and their statuses. • 46 deaths. • Caused by database overload problem.

27 Therefore… A well-disciplined approach to software development and management is necessary. . This is called software engineering.

.28 Software Engineering: Historical Aspects The term software engineering first appeared in the 1968 NATO Software Engineering Conference and was meant to provoke thought regarding what was then called the “software crisis”.” Sommerville.7   . “. pg.. An engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use.

but is still engineering 29 . mathematics and economics – Ethical practice is also a key tenet of the profession • In many countries.Software Engineering and the Engineering Profession • The term Software Engineering was coined in 1968 – People began to realize that the principles of engineering should be applied to software development • Engineering is a licensed profession – In order to protect the public – Engineers design artifacts following well accepted practices which involve the application of science. much software engineering does not require an engineering license.

• Fundamentals. Software Engineering • Practicalities of software design.30 Software Engineering vs. development and delivery. . Computer Science “Computer science is no more about computers than astronomy is about telescopes.” Edsger Dijkstra Computer Science • Theory.

. • Older than SWE. Focuses on how complex engineering projects should be designed and managed. Software Engineering • Deals with the design. Systems Engineering • All aspects of computerbased systems development: HW + SW + Process.31 Software Engineering vs. Systems Engineering Systems Engineering:   Interdisciplinary engineering field (computer. and process eng.). software. • Is part of Systems Engineering. development and delivery of SW.

the application of engineering to software. (2) The study of approaches as in (1). maintenance of software. • To produce software within the • Other definitions: budget & time – allotted IEEE: (1) the application of a systematic. operation. that is. – The Canadian Standards Association: The systematic activities involved in the design. quantifiable approach to the development. and other constraints. high-quality software systems within •To time produce high-quality software cost.What is Software Engineering? • The of solving customers’ problems by •Toprocess solve customer’s problems the systematic development and evolution of • To utilize systematic development large. implementation and testing of software to optimize its production and support. 32 . disciplined.

Goals of Software Engineering • Solving customers’ problems – This is the goal of software engineering – Sometimes the solution is to buy. not build – Adding unnecessary features does not help solve the problem – Software engineers must communicate effectively with the customers to identify and understand the problem 33 .

Goals of Software Engineering • Systematic development and evolution – An engineering process involves applying well understood techniques in a organized and disciplined way – Many well-accepted practices have been formally standardized • e. by the IEEE or ISO – Most development work is evolutionary 34 .g.

Goals of Software Engineering • Large. high quality software systems – Software engineering techniques are needed because large systems cannot be completely understood by one person – Teamwork and co-ordination are required – Key challenge: Dividing up the work and ensuring that the parts of the system work properly together – The end-product must be of sufficient quality 35 .

time and other constraints – Finite resources – The benefit must outweigh the cost – Others are competing to do the job cheaper and faster – Inaccurate estimates of cost and time have caused many project failures 36 .Goals of Software Engineering • Cost.

Development Managers • All four roles can be fulfilled by the same person 37 . system designers.Stakeholders in Software Engineering 1. Software developers Include system analysts. Customers Those who pay for the software 3. Users Those who use the software 2. system builders 4.

easy to reuse its parts Development manager: sells more and pleases customers while costing less to develop and maintain 38 User: easy to learn. easy to maintain. helps get work done . efficient to use.Software Quality and the Stakeholders Customer: solves problems at an acceptable cost in terms of money paid and resources used QUALITY SOFTWARE Developer: easy to design.

what the system does. . capability of the software to provide functions which meet stated and implied needs when the software is used Key Goal: To capture the required behavior of a software system in terms of functionality and the technology implementation through a system analysis process.39 Functional Attributes of a Software  Functional attributes System performance.

how the system does it. software quality attributes. reliability and security.40 Non-Functional Attributes of a Software Non-functional System attributes quality. based on the parameters of system performance. constraints in design and implementation Key goal: To determine the factors that can be used to judge the operation of a system or the quality attributes of the system. . cost.

memory utilization.org/wiki/Non-functional _requirement . security. safety. Evolution qualities such as testability. Response time. Satisfying to use by intended users. Reprogramming is not needed. Reliability.wikipedia. Maintainability Dependability Efficiency Reusability http://en. extensibility.41 Some Attributes of a Good Software Product Characteristic Description Usability Easy to learn how to use the system by target users. Efficient to use the system by users to accomplish a task. processing time.

blood pressure. theme. stocks bonds. . Interactive game Players. temperature.. scenes. Cardiac monitor in an ICU unit heart rate. score. money transfers. Banking system Client accounts.43 Activity  What are the key attributes for.

Software Quality: Conflicts & Objectives • The different qualities can conflict – Increasing usability can reduce efficiency – Increasing efficiency can reduce maintainability or reusability • Setting objectives for quality is a key engineering activity – You then design to meet the objectives – Avoids ‘over-engineering’ which wastes money • Optimizing is also sometimes necessary – E. obtain the highest possible reliability using a fixed budget 44 .g.

Trust Demonstrate that it can be trusted by users. Be delivered in shorter time without compromising quality.. . different support systems. Cope with this variability. different platforms. study. Software is a part of many aspects of our lives (work. leisure). Delivery Businesses are more responsive  supporting software needs to evolve rapidly. Heterogeneity Different computers.45 Challenges Facing Software Engineering Challenge Why? Software needs to .

Most projects are evolutionary or maintenance projects. involving work on legacy systems Development and evolution costs for long-lifetime systems 0 100 200 300 400 System development System evolution 46 .Software Engineering Projects 1.

Rules and regulations – Enhancement projects: adding new features for users – Reengineering or perfective projects: changing the system internally so it is more maintainable 47 .Software Engineering Projects – Corrective projects: fixing defects – Adaptive projects: changing the system in response to changes in • Operating system. Database.

projects that are often coveted by engineers – Examples: Cellular networks. there’s no need to remodel or demolish an existing structure – Minority of projects are greenfield.Software Engineering Projects 2. power plant. ‘Greenfield’ projects – New development. project that lacks any constraints imposed by prior work. airports 48 .

Projects that involve building on a framework or a set of existing components. 49 . – A framework is an application that is missing some important details. • E. • Provide much of the same freedom to innovate found in green field development. – Such projects: • Involve plugging together components that are: – Already developed.g.Software Engineering Projects 3. Specific rules of this organization. • Benefit from reusing reliable software. – Provide significant functionality.

inspired by the works of John Zachman. INTERFACES 50 . by which various people with different perspectives can organize and view the fundamental building blocks of software projects. 1. DATA 2. PROCESSES 3.Information Systems Framework • This provides a unifying framework.

Activities Common to Software Projects • Requirements and specification – Includes • Domain analysis • Defining the problem • Requirements gathering – Obtaining input from as many sources as possible • Requirements analysis – Organizing the information • Requirements specification – Writing detailed instructions about how the software should behave 51 .

using the available technology – Includes: • Systems engineering: Deciding what should be in hardware and software • Software architecture: Dividing the system into subsystems and deciding how the subsystems will interact • Detailed design of the internals of a subsystem • User interface design • Design of databases 52 .Activities Common to Software Projects • Design – Deciding how the requirements should be implemented.

Activities Common to Software Projects • Modeling – Creating representations of the domain or the software • Use case modeling • Structural modeling • Dynamic and behavioural modeling • Programming • Quality assurance – Reviews and inspections – Testing • Deployment • Managing the process 53 .

Difficulties and Risks in Software Engineering • Complexity and large numbers of details • Uncertainty about technology • Uncertainty about requirements • Uncertainty about software engineering skills • Constant change • Deterioration of software design • Political risks (considered as wicked problem) 54 .

Software Depression • The software crisis has not been solved: .Data on 9236 projects completed in 2004 55 .

the functionality of the information system as delivered did not meet up to the claims of the developers – In 56% of the disputes. the defects were so severe that the information system was unusable 56 . the promised delivery date slipped several times – In 45% of the disputes.Cutter Consortium Data • 2002 survey of information technology – 78% have been involved in disputes ending in litigation • For the organizations that entered into litigation: – In 67% of the disputes.

• The only deliverable work product for a successful project is the working program. our job is done. • Until I get the program “running” I have no way of assessing its quality. • Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down. 57 .Software Myths: Practitioner’s View • Once we write the program and get it to work.