Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-

Slides:



Advertisements
Similar presentations
Multimedia Specification Design and Production 2013 / Semester 1 / week 7 Lecturer: Dr. Nikos Gazepidis
Advertisements

© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Metrics for Process and Projects
Alternate Software Development Methodologies
3130 Summer What is Software?  Software (IEEE) is a collection of  programs,  procedures,  rules, and  associated documentation and data CS3130.
Andrew Rau-Chaplin Introduction Andrew Rau-Chaplin CS3130 SOFTWARE ENGINEERING.
Chapter 2- Software Process Lecture 4. Software Engineering We have specified the problem domain – industrial strength software – Besides delivering the.
Software Process and Product Metrics
Lecture 3.
Introduction to Software Engineering. Topic Covered What is software? Attribute of good S/w? Computer Software? What is Software Engineering? Evolving.
SOFTWARE ENGINEERING Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
SOFTWARE ENGINEERING1 Introduction. Software Software (IEEE): collection of programs, procedures, rules, and associated documentation and data SOFTWARE.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
2-Oct-15 1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts ICS Software Engineering.
Chapter 6 : Software Metrics
2-Oct-15 Introduction to SWE1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
CSCI-383 Object-Oriented Programming & Design Lecture 1.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
INTRODUCTION SOFTWARE HARDWARE DIFFERENCE BETWEEN THE S/W AND H/W.
Software Project Management Lecture # 3. Outline Chapter 22- “Metrics for Process & Projects”  Measurement  Measures  Metrics  Software Metrics Process.
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.
Introduction to Software Engineering. Why SE? Software crisis manifested itself in several ways [1]: ◦ Project running over-time. ◦ Project running over-budget.
SOFTWARE ENGINEERING1 Introduction. SOFTWARE ENGINEERING2 Software Q : If you have to write a 10,000 line program in C to solve a problem, how long will.
1. Introduction Kirstie Hawkey, CS3130 SOFTWARE ENGINEERING – Summer Slides adapted from A. Rau Chaplin.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
SOFTWARE ENGINEERING1 Introduction. SOFTWARE ENGINEERING2 Software Q : If you have to write a 10,000 line program in C to solve a problem, how long will.
An Introduction to Software Engineering (Chapter 1 from the textbook)
Program Development Cycle
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
 System Requirement Specification and System Planning.
MANAGEMENT INFORMATION SYSTEM
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
CS220:INTRODUCTION TO SOFTWARE ENGINEERING CH1 : INTRODUCTION 1.
Embedded Systems Software Engineering
CompSci 280 S Introduction to Software Development
Methodologies and Algorithms
Software Project Configuration Management
Algorithms II Software Development Life-Cycle.
The Development Process of Web Applications
CIF301 Project Quality Unit 6
The Software Development Cycle
The Systems Engineering Context
Introduction SOFTWARE ENGINEERING.
Object oriented system development life cycle
Software Development CMSC 202.
Software Life Cycle Models
Software Engineering (CSE 314)
HCI in the software process
Introduction to Software Engineering
Constructive Cost Model
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Introduction to Software Testing
Software life cycle models
HCI in the software process
Welcome to Corporate Training -1
CS310 Software Engineering Lecturer Dr.Doaa Sami
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
HCI in the software process
Software Development Life Cycle Models
Human Computer Interaction Lecture 14 HCI in Software Process
Metrics for Process and Projects
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
The Software Development Cycle
Logical Architecture & UML Package Diagrams
SOFTWARE ENGINEERING CS-5337: Introduction
Presentation transcript:

Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students- A programming approach SOFTWARE ENGINEERING

Software Software surrounds us everywhere. Give examples of software you have dealt with before. SOFTWARE ENGINEERING

Software types System Software: software that acts as a tool to help construct or support application software Application Software: software that helps perform some directly useful or enjoyable task games information systems real-time systems embedded systems office software scientific software SOFTWARE ENGINEERING

Software… Software (IEEE): Collection of programs, procedures, rules, and associated documentation and data SOFTWARE ENGINEERING

Software Crisis it is expensive it is often late Cost it is expensive it is often late it fails to do what users want it to do it isn’t always fast enough it cannot be transferred to another machine easily it is expensive to maintain it is unreliable it is not always easy to use. Quality Time SOFTWARE ENGINEERING

Cost Productivity = output/input resources In SW output is considered as LOC Input resources is effort - person months; overhead cost modeled in rate for person month SOFTWARE ENGINEERING

Cost Q: What is the productivity in a typical commercial SW organization ? A: Between 100 to 1000 LOC/PM Q: Why is it low, while a student productivity is so high? A: What the student is building and what the industry builds are two different things SOFTWARE ENGINEERING

Cost Let us look at costs involved Productivity = Appx 1000 LOC/PM Cost = $3K to $15K/PM Cost per LOC = $3 to $15 I.e, each line of delivered code costs many $s A simple application for a business may have 20KLOC to 50KLOC Cost = $100K to $2.25Million Can easily run on $10K-$20K hardware So HW costs in an IT solution are small as compared to SW costs. SOFTWARE ENGINEERING

Time (schedule) Business requirements today demand short delivery times for software (tight schedule) In the past, software products have often failed to be completed in time Along with cost, cycle time is a fundamental driving force SOFTWARE ENGINEERING

Productivity – for Cost and Schedule An industrial strength software project is driven by cost and schedule Both can be modeled by productivity, measured in terms of output per unit effort (e.g. LOC per person month) Higher productivity leads to lower cost Higher productivity leads to lower cycle time Hence, for projects (to deliver software), quality and productivity are basic drivers SOFTWARE ENGINEERING

Quality Along with productivity, quality is the other major driving factor Developing high Quality software is a basic goal Quality of software is harder to define SOFTWARE ENGINEERING

Quality – ISO standard SOFTWARE ENGINEERING

Quality – ISO standard ISO std has six attributes Functionality: The capability to provide functions which meet stated and implied needs when the software is used. Reliability: The capability to provide failure-free service. Usability: The capability to be understood, learned, and used. SOFTWARE ENGINEERING

Quality – ISO standard Efficiency: The capability to provide appropriate performance relative to the amount of resources used Maintainability: The capability to be modified for purposes of making corrections, improvements, or adaptation Portability: The capability to be adapted for different specified environments without applying actions or means other than those provided for this purpose in the product. SOFTWARE ENGINEERING

Quality… Multiple dimensions mean that not easy to reduce Q to a single number Concept of Q is project specific For some reliability is most important For others usability may be more important Reliability is generally considered the main Quality criterion SOFTWARE ENGINEERING

Quality… Reliability = Probability of failure hard to measure approximated by no. of defects in software To normalize Quality = Defect density Quality = No. of defects delivered / Size Defects delivered - approximated with no. of defects found in operation Current practices: less than 1 def/KLOC What is a defect? Project specific! SOFTWARE ENGINEERING

Quality – Maintainability Once software delivered, it enters the maintenance phase, in which Residual errors are fixed – this is corrective maintenance Upgrades and environment changes are done – this is adaptive maintenance Maintenance can consume more effort than development over the life of the software (can even be 20:80 ratio!) Hence maintainability is another quality attribute of great interest SOFTWARE ENGINEERING

Quality and Productivity Hence, quality and productivity (Q&P) are the basic drivers in a software project The aim of most methodologies is to deliver software with a high Q&P Besides the need to achieve high Q&P there are some other needs SOFTWARE ENGINEERING

Change Only constant in business is change! Requirements change, even while the project is in progress In a project, up to 40% of development effort may go in implementing changes Practices used for developing software must accommodate change SOFTWARE ENGINEERING

Scale Most industrial strength software tend to be large and complex Methods for solving small problems do not often scale up for large problems Two clear dimensions in a project engineering project management For small, both can be done informally, for large both have to be formalized SOFTWARE ENGINEERING

Scale… SOFTWARE ENGINEERING

Scale… An illustration of issue of scale is counting the number of people in a room vs taking a census Both are counting problems Methods used in first not useful for census For large scale counting problem, must use different techniques and models Management will become critical SOFTWARE ENGINEERING

Scale: Examples Gcc 980KLOC C, C++, yacc Perl 320 KLOC C, perl, sh Appache 100 KLOC C, sh Linux 30,000 KLOC C, c++ Windows XP 40,000 KLOC C, C++ SOFTWARE ENGINEERING

Scale… As industry strength software tends to be large, hence methods used for building these must be able to scale up For much of the discussion, we will high Q&P as the basic objective SOFTWARE ENGINEERING

A remedy - Software Engineering There are big problems with developing software successfully. A number of ideas have been suggested for improving the situation. These methods and tools are collectively known as Software Engineering. Some of the main ideas are: greater emphasis on carrying out all stages of development systematically. computer assistance for software development – software tools. SOFTWARE ENGINEERING

A remedy - Software Engineering an emphasis on finding out exactly what the users of a system really want (requirements engineering and validation) demonstrating an early version of a system to its customers (prototyping) use of new, innovative programming languages greater emphasis on trying to ensure that software is free of errors (verification). incremental development, where a project proceeds in small, manageable steps SOFTWARE ENGINEERING

Summary The problem domain for SE is industrial strength software SE aims to provide methods for systematically developing (industrial strength) software Besides developing software the goal is to achieve high quality and productivity (Q&P) Methods used must accommodate changes, and must be able to handle large problems SOFTWARE ENGINEERING