Software Engineering.

Slides:



Advertisements
Similar presentations
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Advertisements

1 Software Processes A Software process is a set of activities and associated results which lead to the production of a software product. Activities Common.
Systems Analysis, Prototyping and Iteration Systems Analysis.
Lecture # 2 : Process Models
Object-Oriented Software Development CS 3331 Fall 2009.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
CS487 Software Engineering Omar Aldawud
1 Chapter 4 - Part 1 Software Processes. 2 Software Processes is: Coherent (logically connected) sets of activities for specifying, designing, implementing,
Modeling the Process and Life Cycle CSCI 411 Advanced Database and Project Management Monday, February 2, 2015.
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process.
Chapter 2 – Software Processes
CH02: Modeling the process and life cycle Process of developing software (organization and discipline in the activities) contribute to the quality of the.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Engineering For Beginners. General Information Lecturer, Patricia O’Byrne. – Times: –See noticeboard outside.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Introduction to Software Testing
CSC230 Software Design (Engineering)
Software Life Cycle Model
Data Structures and Programming.  John Edgar2.
Introduction to Computer Technology
Software Engineering (Chapter 15 in text). Science vs. Engineering The difference between science and engineering:  Science seeks to explain phenomena.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Chapter 2 The process Process, Methods, and Tools
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Assessing the influence on processes when evolving the software architecture By Larsson S, Wall A, Wallin P Parul Patel.
1 Software Engineering Ian Sommerville th edition Instructor: Mrs. Eman ElAjrami University Of Palestine.
Introduction to Software Engineering. Why SE? Software crisis manifested itself in several ways [1]: ◦ Project running over-time. ◦ Project running over-budget.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Systems Analysis and Design in a Changing World, Fourth Edition
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering 1.
An Introduction to Software Engineering
What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
An Introduction to Software Engineering (Chapter 1 from the textbook)
CSE 303 – Software Design and Architecture
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
Click to add text Systems Analysis, Prototyping and Iteration.
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
Software Development Life Cycle (SDLC)
IS444: Modern tools for applications development Dr. Azeddine Chikh.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
Modelling the Process and Life Cycle. The Meaning of Process A process: a series of steps involving activities, constrains, and resources that produce.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Object-Oriented Software Engineering Chapter 1 Software and Software Engineering.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
SEG 3300: Sections A&B Introduction to Software Engineering Lecture 1: Software and Software Engineering Based on Presentations LLOSENG (Lethbridge, Laganiere,2001,
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
Chapter 1: Software and Software Engineering The Nature of Software... Software is intangible  Hard to understand development effort Software.
Software Processes (a)
CS385T Software Engineering Dr.Doaa Sami
CS310 Software Engineering Lecturer Dr.Doaa Sami
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Chapter 1: Software and Software Engineering
Chapter 1: Software and Software Engineering
Presentation transcript:

Software Engineering

Topics Computer science vs. software engineering Definition of software engineering Types of software The nature of software Software history and the “software crisis” Software quality Elements of a software engineering discipline Software development personnel Software development process models

Science vs. Engineering The difference between science and engineering: Science seeks to explain phenomena through theory, hypothesis, and experiment, in an effort to ascertain natural laws For example, chemistry investigates the structure of chemicals and their interactions Engineering seeks to apply natural laws to the solution of practical problems For example, chemical engineering might use the results of chemistry to come up with a better way of refining gasoline

Computer Science as a Science Theory: Computability, automata, discrete computational structures Algorithm analysis Hypothesis: That a certain algorithm will solve a problem Experiment: Run a program implementing the algorithm

Computer Science as a Science (cont'd) Theory of Computation Algorithms & Data Structures Programming Languages . . . Theory Hypothesis Experiment

Adding a Customer Requirements Computer Customer Science Problem . . . Theory of Computation Algorithms & Data Structures Programming Languages Problem . . . Requirements

The Difference Between Computer Science and Software Engineering Customer Theory of Computation Algorithms & Data Structures Programming Languages Problem . . . Software Engineering Tools and Techniques to Solve Problem

Definition of Software Engineering The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints.

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 to identify and understand the problem

Definition of Software Engineering (again) The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints.

Systematic Development and Evolution An engineering process involves applying well understood techniques in an organized and disciplined way Many well-accepted practices have been formally standardized e.g. by the IEEE or ISO Most development work is evolution

Definition of Software Engineering (again) The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints.

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 that is produced must be of sufficient quality

Definition of Software Engineering (again) The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints.

Cost, 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

Types of Software Custom Generic Embedded For a specific customer Sold on open market Often called “COTS” (commercial off-the-shelf) or “shrink-wrapped” Embedded Built into hardware Hard to change

Differences among Custom, Generic, and Embedded software

More Types of Software Real time Data-processing E.g., control and monitoring systems Must react immediately Safety often a concern Data-processing Used to run businesses Accuracy and security of data are key

The Nature of Software Software is intangible Hard to understand development effort Software is easy to reproduce Cost is in its development in other engineering products, manufacturing is the costly stage The industry is labor-intensive Hard to automate

The Nature of Software (cont'd) Untrained people can hack something together Quality problems are hard to notice Software is easy to modify People make changes without fully understanding it Software does not ‘wear out’ Deterioriates through design change that increases its complexity and decreases its maintainability

The Nature of Software (cont'd) Conclusions Much software has poor design and is getting worse Demand for software is high and rising We are in a perpetual ‘software crisis’ We have to learn to ‘engineer’ software

History of the Role of Software In the 1950's software development was de- emphasized, because it only contributed to about 20% of overall system cost

History of the Role of Software In the 1950's software development was de- emphasized, because it only contributed to about 20% of overall system cost Programmers moved from machine language, to assembly language, to high-level language

History of the Role of Software In the 1950's software development was de- emphasized, because it only contributed to about 20% of overall system cost Programmers moved from machine language, to assembly language, to high-level language In 1968, a NATO report coined the term "software engineering"

History of the Role of Software In the 1950's software development was de- emphasized, because it only contributed to about 20% of overall system cost Programmers moved from machine language, to assembly language, to high-level language In 1968, a NATO report coined the term "software engineering" Hardware became faster and cheaper, outpacing the ability of software to keep up

History of the Role of Software In the 1950's software development was de- emphasized, because it only contributed to about 20% of overall system cost Programmers moved from machine language, to assembly language, to high-level language In 1968, a NATO report coined the term "software engineering" Hardware became faster and cheaper, outpacing the ability of software to keep up By the 1980's the software cost of a system had risen to 80%, and many experts pronounced the field "in crisis"

Elements of the Continuing Software Crisis Software is not delivered on time

Elements of the Continuing Software Crisis Software is not delivered on time Software is over budget (usually by a factor of 2 or more) Dramatic example: in the early 1980's the IRS hired Sperry to automate tax form processing for $103 million. By 1985 the cost had tripled, the system could not handle the workload, and it had to be replaced.

Elements of the Continuing Software Crisis Software is not delivered on time Software is over budget (usually by a factor of 2 or more) Dramatic example: in the early 1980's the IRS hired Sperry to automate tax form processing for $103 million. By 1985 the cost had tripled, the system could not handle the workload, and it had to be replaced. Software is too complex. Complexity does not scale linearly: a 1000 line program is more than 10 times as complex as a 100 line program

Elements of the Software Crisis (cont'd) Software is unmaintainable due to: poor design poor documentation (most software can be understood only by its author, and then only within a few months of writing it)

Elements of the Software Crisis (cont'd) Software is unmaintainable due to: poor design poor documentation (most software can be understood only by its author, and then only within a few months of writing it) Software is inefficient (new versions of complex software require machine upgrades)

Elements of the Software Crisis (cont'd) Software is unmaintainable due to: poor design poor documentation (most software can be understood only by its author, and then only within a few months of writing it) Software is inefficient (new versions of complex software require machine upgrades) Software is unreliable due to: poor design (Therac-25 disaster) inadequate testing (market pressures, beta releases) impossible testing (SDI)

Elements of a Software Engineering Discipline Abstraction: Identifying hierarchical classes of objects to reason about, ignoring detail

Elements of a Software Engineering Discipline Abstraction: Identifying hierarchical classes of objects to reason about, ignoring detail Analysis and Design Methods and Notations: For example, use of design patterns and UML

Elements of a Software Engineering Discipline Abstraction: Identifying hierarchical classes of objects to reason about, ignoring detail Analysis and Design Methods and Notations: For example, use of design patterns and UML User Interface Prototyping: To help user and developer agree on requirements and software functions

Elements of a Software Engineering Discipline Abstraction: Identifying hierarchical classes of objects to reason about, ignoring detail Analysis and Design Methods and Notations: For example, use of design patterns and UML User Interface Prototyping: To help user and developer agree on requirements and software functions Software Architecture: striving for independence of parts through modularity

Elements of a Software Engineering Discipline (cont'd) Software Process (see later)

Elements of a Software Engineering Discipline (cont'd) Software Process (see later) Reuse: Not just of software, but also sets of requirements, parts of designs, or groups of test scripts

Elements of a Software Engineering Discipline (cont'd) Software Process (see later) Reuse: Not just of software, but also sets of requirements, parts of designs, or groups of test scripts Measurement: Trying to quantify project goals to evaluate progress (for example, number of bugs per 100 lines of code)

Elements of a Software Engineering Discipline (cont'd) Software Process (see later) Reuse: Not just of software, but also sets of requirements, parts of designs, or groups of test scripts Measurement: Trying to quantify project goals to evaluate progress (for example, number of bugs per 100 lines of code) Tools and Integrated Environments: For example, CASE (computer-aided software engineering) tools

Key Factors Altering Software Engineering Practice Since 1970s Time-to-market criticality: competition for market share

Key Factors Altering Software Engineering Practice Since 1970s Time-to-market criticality: competition for market share Shifts in economics: cheaper to add disk or memory than spend time optimizing code

Key Factors Altering Software Engineering Practice Since 1970s Time-to-market criticality: competition for market share Shifts in economics: cheaper to add disk or memory than spend time optimizing code Desktop computing: puts power in hands of users who demand more sophisticated tools

Key Factors Altering Software Engineering Practice Since 1970s Time-to-market criticality: competition for market share Shifts in economics: cheaper to add disk or memory than spend time optimizing code Desktop computing: puts power in hands of users who demand more sophisticated tools GUIs: make complex programs easier to use

Key Factors Altering Software Engineering Practice Since 1970s Time-to-market criticality: competition for market share Shifts in economics: cheaper to add disk or memory than spend time optimizing code Desktop computing: puts power in hands of users who demand more sophisticated tools GUIs: make complex programs easier to use Local and wide-area networks

Key Factors Altering Software Engineering Practice Since 1970s Time-to-market criticality: competition for market share Shifts in economics: cheaper to add disk or memory than spend time optimizing code Desktop computing: puts power in hands of users who demand more sophisticated tools GUIs: make complex programs easier to use Local and wide-area networks OOD and OOP: enhance module reusability

Key Factors Altering Software Engineering Practice Since 1970s Time-to-market criticality: competition for market share Shifts in economics: cheaper to add disk or memory than spend time optimizing code Desktop computing: puts power in hands of users who demand more sophisticated tools GUIs: make complex programs easier to use Local and wide-area networks OOD and OOP: enhance module reusability Demise of the waterfall process model (see later)

Software Engineering Stakeholders Users Those who use the software Customers Those who pay for the software Software developers Development managers Software quality means different things to different stakeholders.

The Goal of Software Engineering: Software Quality Three perspectives on software quality: Manager view: does product conform to a good process, and does it meet specs? (externally measured)

The Goal of Software Engineering: Software Quality Three perspectives on software quality: Manager view: does product conform to a good process, and does it meet specs? (externally measured) User/customer view: product characteristics measured by fitness for purpose, e.g., correctness, reliability, maintainability (externally measured)

The Goal of Software Engineering: Software Quality Three perspectives on software quality: Manager view: does product conform to a good process, and does it meet specs? (externally measured) User/customer view: product characteristics measured by fitness for purpose, e.g., correctness, reliability, maintainability (externally measured) Developer view: quality measured by internal characteristics (software "metrics") thought to be indicators of good external characteristics

User/Customer Views of Quality Correctness Reliability Efficiency Integrity Usability Maintainability Testability Flexibility Portability Reusability Interoperability

Developer Views of Quality Completeness Consistency Accuracy Error tolerance Execution efficiency Storage efficiency Access control Operability Training Communicativeness Simplicity Conciseness Instrumentation Self-descriptiveness Expandability Generality Modularity Software system independence Machine independence Communications commonality Data commonality

Relating the Views Completeness Consistency Correctness Accuracy Reliability Error tolerance Execution efficiency Efficiency Storage efficiency Integrity Access control Operability Usability Training Communicativeness Maintainability Simplicity Conciseness Testability Instrumentation Flexibility Self-descriptiveness Expandability Portability Generality Modularity Reusability Software system independence Interoperability Machine independence Communications commonality Data commonality

Software Development Steps Requirements Analy- sis and Definition System Design Program Design Program Implementation Unit Testing Integration Testing System Testing System Delivery Maintenance

Software Developer Roles Requirements Analy- sis and Definition Analyst System Design Designer Program Design Programmer Tester Trainer Program Implementation Unit Testing Integration Testing System Testing System Delivery Maintenance

Programming Team Organization Chief Programmer Assist. Chief Programmer Senior Programmers Librarian Administra- tion Test Team Junior Programmers

Other Software Personnel Librarians: Prepare and store documents used during the life of the system: Requirements specifications Design descriptions Program documentation Training manuals Test data and schedules, etc. Configuration Managers: Maintain cross references among requirements, design, implementation, and tests Coordinate different versions of software across platforms, and from one release to another

Software Process Models A process is a series of steps involving activities, constraints, and resources that produce an intended output of some kind. Two approaches to software process models: Prescribe the way that software development should progress Describe the way that software development is done in actuality In theory, these two kinds of models should be similar or the same. In practice, they are not. Every software development model has requirements as input and a delivered product as output.

The Opportunistic Model Why this model is inadequate: Ignores requirements and design No plan No systematic testing Resulting maintenance costs will be high

The Waterfall Model Requirements Analysis System Design Program Design Coding Unit & Integration Testing System Testing Acceptance Testing Operation & Maintenance

Elements of the Waterfall Model Proposed around 1970 Assumes that one development stage completes before the next begins Has been used to prescribe software development activity For example, Department of Defense Standard 2167-A Useful for explaining steps to customers who are not familiar with software development

Drawbacks of the Waterfall Model Incorrectly treats software as a manufacturing process Manufacturing produces a particular item and reproduces it many times Software is not like this, incorporating both problem solving and creativity Creativity involves trying alternative solutions, contrasting designs, and learning from failure Except for well understood problems, the software process is characterized by iteration

The Uncontrolled Software Process Requirements Analysis System Design System Design Mainenance Program Design Acceptance Testing Coding System Testing Unit & Integra- tion Testing

Prototyping In practice, neither users nor developers know in advance all the factors that affect desired outcome Thus considerable "thrashing" between one activity and back may take place in order to gain knowledge about the problem One way to control such thrashing: develop a partial product and allow customers and developers to examine it for feasibility Advantage: revisions made at requirements stage rather than the more costly testing stage The partially developed product is a prototype

Waterfall Model With Prototyping Requirements Analysis System Design Program Design Coding Prototyping Unit & Integration Testing System Testing Acceptance Testing Operation & Maintenance

Validation and Verification Prototyping attempts to minimize surprises encountered during system testing Goals of system testing: Validation: ensuring that the system has implemented all of the requirements (coverage) Verification: ensuring that each function works correctly (quality)

Validation and Verification (cont'd) Requirements Analysis Validate System Design Verify Program Design Coding Prototyping Unit & Integration Testing System Testing Acceptance Testing Operation & Maintenance

Software Development Focus Two Views: The Waterfall Model is a product-oriented focus, regarding software as a product on its own, consisting of a set of programs and defining texts This approach "does not permit us to treat systematically questions pertaining to the relationship between software and the living human world" (C. Floyd) The process-oriented approach "views software in connection with human learning, work, and communication" (C. Floyd) The V Model is an example of a process-oriented model

The V Model Operation & Maintenance Validate Requirements Requirements Analysis Acceptance Testing Verify Design System Design System Testing Verify Design Program Design Unit & Integration Testing Analysis and Design Testing Coding

The Prototype as a Central Element If a prototype is used in the Waterfall Model, it is usually thrown away. In the Prototyping Model, the prototype becomes the product: List of Revisions List of Revisions List of Revisions User/ Customer review revise prototype Prototype Requirements Prototype Design Prototype System Test System Requirements (sometimes informal or incomplete) Delivered System

The Spiral Model Explicitly embraces prototyping and iterative develop- ment

Reducing "Cycle" Time: Phased Development DEVELOPERS Build Release 1 Build Release 2 Build Release 3 Time Use Release 1 Use Release 2 Use Release 3 USERS

Evolution of Phased Development

Two Approaches to Phased Development Incremental Development Iterative Development

"Automatic" Programming: AI Meets Compiler Theory Compare with requirements; update as needed Formal Specification Program Code Test System Requirements (sometimes informal or incomplete) Delivered System This transformation has automated support