View
214
Download
1
Category
Tags:
Preview:
Citation preview
INTRODUCTION -SOFTWARE ENGINEERING
MUHAMMAD RIZWAN
Spring 2012
How to get in touch?2
Email: muhammadrizwan@ciitsahiwal.edu.pk
Office: F 2.7
Room No. : F 2.7
Software Engineering - 2012
Course Details3
Books Somerville, Ian. Software Engineering, 8th Edition, Addison-
Wesley, 2006 R.S. Pressman, Software Engineering: A Practitioner's
Approach, 6th ed., McGraw-Hill Book Co., NY, 2005 Policies
Attendance policy Mobile phone usage Assignment submission Quizzes Fines Plagiarism policy
Important Rule – Don’t Cheat! (There will not be a 2nd warning)
Software Engineering - 2012
Class Objectives4
Students will be able to evaluate software engineering techniques and approaches.
"It is important that students bring a certain ragamuffin barefoot irreverence to their studies. They are here not to worship what is known, but to question it."
- Jacob Bronowski, The Ascent of Man
Students will be able to exercise professional judgment in selecting an approach for a particular project based on an understanding of: How the present state of software practice came about What was tried in the past What worked and what did not work Why
Software Engineering - 2012
Lecture Outcomes5
At the end of this lecture you should be able to answer the following key questions: What is software engineering? Why is software engineering important? What is the role of software in today’s age?
Software Engineering - 2012
Course Outline
Evolving Role of Software Software Process Models Software Configuration management Requirements Analysis Use-Case Fundamentals UML Notations Actor-Goal Lists Class Diagrams Sequence Diagrams ArchitectureArchitectural Patterns Decision TablesUser Interface DesignFacts and Fallacies of Software Engineering
Software Engineering IThis Semester
Software Engineering IINext Semester
Requirements Analysis and Architecture
Design and Implementation
Engineering7
“Its not just oil – its liquid engineering!”- Caltex Advertisement
Software Engineering - 2012
1-8
What is (not) S.E.?
Not just software programming Individual vs. team
Not just a process Field that studies several different processes
What is Software Engineering?
9
An Exercise: List all the ways in which Building a tinker-toy car for fun is different from
designing a new automobile Building a tree-house is different from the architecture of
a high-rise office building
So, how might software “engineering” be different from writing a 50-line Java applet?
Software Engineering - 2012
1-10
Developing software
Product CS201 (Operating Systems) CS425 (Distributed Computing) ...
Process ISE103 (Computer Programming) CS340/350 (Software Engineering I/II) CS860 (Object Oriented Analysis & Design)
People
1-11
Software varies
Size How humans interact with it Requirements stability/knowledge Need for reliability Need for security Portability Cost
Microsoft Powerpoint
Size: large Interactiveness: high Requirements: frequent new features Reliability: moderate Security: low (at least used to be) Portability: high Cost: high
Software Engineering - 2011
12
1-13
Space shuttle software Size: moderate to large Interactiveness: low Requirements: stable Reliability: very high Security: low Portability: low Cost: high
1-14
Online shopping software Size: moderate Interactiveness: high Requirements: frequent new features Reliability: moderate Security: high Portability: low Cost: low
1-15
Your example
Size: Interactiveness: Requirements: Reliability: Security: Portability: Cost:
What will you learn?16
Understanding, clarifying and documenting the requirements for a customer
Planning how to conduct a project
Designing a software system at the architectural and detailed levels
Reviewing and testing designs and implementations
Software Engineering - 2012
Software Engineering17
What is Software? The programs, routines, and symbolic languages that
control the functioning of the hardware and direct its operation.
A set of instructions that cause a computer to perform one or more tasks. The set of instructions is often called a program or, if the set is particularly large and complex, a system.
Programs are written in programming languages, especially designed to facilitate the creation of software
Packaged software such as word processors, spreadsheets, graphics and drawing tools, email systems, and games are widely available and used
Software Engineering - 2012
Software costs
Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost.
Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs.
Software engineering is concerned with cost-effective software development.
Software Engineering19
What is Engineering? Engineering is the discipline and profession of
applying technical, scientific and mathematical knowledge in order to utilize natural laws and physical resources to help design and implement materials, structures, machines, devices, systems, and processes that safely realize a desired objective. [Wikipedia]
Software Engineering - 2012
Software Engineering20
What is Software Engineering? Software Engineering is the establishment and
use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines [NAU69].
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.
Software engineering encompasses a process, management techniques, technical methods, and the use of tools.
Why does Software Engineering matter?
21
Software’s contribution to economies (US, India, Pak…)
Role in infrastructure not just the Internet transportation, energy, medicine, finance
How good is our software? failed developments, accidents & poor quality software
Software Engineering - 2012
22
Motivation for Studying
IT Projects have terrible track record A 1995 Standish Group study (CHAOS) found
that only 16.2% of IT projects were successful Over 31% were canceled before completion,
costing over 81B$ in US alone The need for IT Projects keeps increasing
In 1998, corporate America issued 200,000 new application development projects
In 2001, there were 300,000 new IT projects In 2003, over 500,000 new IT projects were
started http://www.standishgroup.com/press/article.php?id=2Software Engineering - 2012
23
CHAOS research study
Project success rates have increased to just over a third or 34% in 2003 and 35% in 2006 of all projects. This is a 100% plus improvement over the 16% rate in 1994. Project failures in 2006 have declined to 19% of all projects
from the 31% in 1994. Challenged projects account for the remaining 51%.
46% of this 51% had a cost overrun of less than 20% of the estimated cost.
Lost dollar value for US projects in 2002 is estimated at $38 billion with another $17 billion in cost overruns for a total project waste of $55 billion against $255 billion in project spending. In 1994, The Standish Group estimated US IT projects had a
waste of $140 billion ($80 billion in failed projects) against $250 billion in project spending. Software Engineering - 2012
Accidents24
Therac-25 (1985-87) Ariane-5 (June 1996) London Ambulance Service
(1992) 7 out of every 10 major
weapons development programs are encountering software problems and the rate is increasing
Some interesting readings can be found at http://sunnyday.mit.edu/accidents/index.html
Software Engineering - 2012
Software products (Types)
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,
project management tools; CAD software; software for specific markets such as appointments systems for dentists.
Customized products Software that is commissioned by a specific
customer to meet their own needs. Examples – embedded control systems, air traffic
control software, traffic monitoring systems.
Chapter 1 Introduction
25
Frequently asked questions about software engineering
Chapter 1 Introduction
26
Question Answer
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.
What are the fundamental software engineering activities?
Software specification, software development, software validation and software evolution.
What is the difference between software engineering and computer science?
Computer science focuses on 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 more general process.
Frequently asked questions about software engineering
Question Answer
What are the key challenges facing software engineering?
Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software.
What are the costs of software engineering?
Roughly 60% of software costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs.
What are the best software engineering techniques and methods?
While all software projects have to be professionally managed and developed, different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. You can’t, therefore, say that one method is better than another.
What differences has the web made to software engineering?
The web has led to the availability of software services and the possibility of developing highly distributed service-based systems. Web-based systems development has led to important advances in programming languages and software reuse.
Chapter 1 Introduction
27
Essential attributes of good software
Chapter 1 Introduction
28
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.
1-29
Software process
Pressman: “A framework for the tasks that are required to build high-quality software”
IEEE 1074: “A set of activities performed towards a specific purpose”
My View: “The steps a particular group follows to develop software”
Software process activities
Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation.
Software development, where the software is designed and programmed.
Software validation, where the software is checked to ensure that it is what the customer requires.
Software evolution, where the software is modified to reflect changing customer and market requirements.
Chapter 1 Introduction
30
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.
Interactive transaction-based applications Applications that execute on a remote computer and are
accessed by users from their own PCs or terminals. These include web applications such as e-commerce applications.
Embedded control systems These are software control systems that control and
manage hardware devices. Numerically, there are probably more embedded systems than any other type of system.
Chapter 1 Introduction
31
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.
Entertainment systems These are systems that are primarily for personal use
and which are intended to entertain the user. Systems for modelling and simulation
These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects.
Chapter 1 Introduction
32
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.
Systems of systems These are systems that are composed of a
number of other software systems.
Chapter 1 Introduction
33
Software engineering and the web The Web is now a platform for running application
and organizations are increasingly developing web-based systems rather than local systems.
Web services (discussed in Chapter 19) allow application functionality to be accessed over the web.
Cloud computing is an approach to the provision of computer services where applications run remotely on the ‘cloud’. Users do not buy software but pay according to
use.
Chapter 1 Introduction
34
Web-based software engineering Web-based systems are complex distributed
systems but the fundamental principles of software engineering discussed previously are as applicable to them as they are to any other types of system.
The fundamental ideas of software engineering, discussed in the previous section, apply to web-based software in the same way that they apply to other types of software system.
Chapter 1 Introduction
35
36
Hardware vs. Software
Hardware Software
Manufactured
Wears out Built using components Relatively
simple
Developed/
Engineered Deteriorates Custom built
ComplexSoftware Engineering - 2011
37
Manufacturing vs. Development Once a hardware product has been
manufactured, it is difficult or impossible to modify. In contrast, software products are routinely modified and upgraded.
In hardware, hiring more people allows you to accomplish more work, but the same does not necessarily hold true in software engineering.
Unlike hardware, software costs are concentrated in design rather than production.
Software Engineering - 2011
38
Software Myths
If we get behind schedule, we can add more programmers and catch up.
A general statement about objectives is sufficient to begin building programs.
Change in project requirements can be easily accommodated because software is flexible.
Software Engineering - 2011
39
Software Myths
Once we write a working program, we’re done.
Until I get the program running, I have no way of assessing its quality.
The only deliverable work product for a successful project is the working program.
Software engineering will make us create too much documentation and will slow us down.
Software Engineering - 2011
40
Customer Myths
“ A general statement of objectives is sufficient to begin writing programs - we can fill in the details later …”
“Project requirements continually change but this change can easily be accommodated because software is flexible …”
Software Engineering - 2011
Assignments
Write down brief description of few software applications that are being used at various organizations in Pakistan (Deadline – 12th Feb)
Read Chapter 1 and be prepare for quiz Presentations:
Chapter 1 1.2 Professional and Ethical Responsibility of a SE
and Q1.10
41
Software Engineering - 2011
Questions?42
Software Engineering - 2011
Recommended