ICS 201- Introduction to Software Engineering. How important is Software? Billions spent annually on software. Billions spent annually on software. Is.

Slides:



Advertisements
Similar presentations
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Advertisements

Object-Oriented Software Development CS 3331 Fall 2009.
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
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Overview of Software Engineering Principles
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Overview of Software Engineering Principles CSCI 599: Software Engineering for Embedded Systems August 27, 2002.
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
SE 555 – Software Requirements & Specifications Introduction
Software Lifecycle Software Lifecycle Basics Lifecycle Models Methods and Tools.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
 The software systems must do what they are supposed to do. “do the right things”  They must perform these specific tasks correctly or satisfactorily.
Quality Assurance ITEC Rick Price. Expectations This course is not purely a lecture course – Classroom participation is a large portion – Everyone.
Software System Engineering: A tutorial
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Understand Application Lifecycle Management
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Project Tracking. Questions... Why should we track a project that is underway? What aspects of a project need tracking?
©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.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
 Explain the role of a system analyst.  Identify the important parts of SRS document.  Identify the important problems that an organization would face.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Software Engineering Management Lecture 1 The Software Process.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
University of Virginia Software Development Processes (CS340 John Knight 2005) 1 Software Development Processes.
Basic of Software Testing Presented by The Smartpath Information System An ISO 9001:2008 Certified Organization
Note Excerpts from Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R. Schach
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
The Systems Development Life Cycle
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
CS551 - Lecture 5 1 CS551 Lecture 5: Quality Attributes Yugi Lee FH #555 (816)
1 EE29B Feisal Mohammed EE29B: Introduction to Software Engineering Feisal Mohammed Ph: x3156.
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
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.
Chapter 17 – Object- Oriented Design. Chapter Goals To learn about the software life cycle To learn about the software life cycle To learn how to discover.
An Introduction to Software Engineering (Chapter 1 from the textbook)
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
 Many models have been proposed to deal with the problems of defining activities and associating them with each other  The first model proposed was the.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Lectures 2 & 3: Software Process Models Neelam Gupta.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
 System Requirement Specification and System Planning.
Rekayasa Perangkat Lunak Part-10
Rekayasa Perangkat Lunak
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Introduction to Software Engineering
Rekayasa Perangkat Lunak
Software life cycle models
CS310 Software Engineering Lecturer Dr.Doaa Sami
What Is Good Software(Program)?
Presentation transcript:

ICS 201- Introduction to Software Engineering

How important is Software? Billions spent annually on software. Billions spent annually on software. Is used by practically every business: , spreadsheets, word processing, databases, presentation tools. Is used by practically every business: , spreadsheets, word processing, databases, presentation tools. Is used in designing many products:airplanes, cars, buildings, drugs.. Is used in designing many products:airplanes, cars, buildings, drugs.. Is an essential part of many products: pacemakers, MRI, ultrasound, planes, cars Is an essential part of many products: pacemakers, MRI, ultrasound, planes, cars

Examples of Software.. Bar-code scanners: 10-50,000 lines Bar-code scanners: 10-50,000 lines 4-speed transmission: 20,000 lines 4-speed transmission: 20,000 lines Cell-phone: 30,000 lines Cell-phone: 30,000 lines ATM network: 600,000 lines ATM network: 600,000 lines B-2 Stealth Bomber: 3,500,000 lines B-2 Stealth Bomber: 3,500,000 lines

Engineering …. Putting scientific knowledge to practical use. Putting scientific knowledge to practical use. Building things while conforming to constraints. (budget, time, quality and performance standards) Building things while conforming to constraints. (budget, time, quality and performance standards) Relies on underlying science, but is concerned with the process used to achieve results. Relies on underlying science, but is concerned with the process used to achieve results.

Software Engineering … Term coined at 1968 NATO conference. Term coined at 1968 NATO conference. Involves the full life-cycle of software. Involves the full life-cycle of software. Money plays a role. Money plays a role. Multiple people are required. Multiple people are required. GOAL: production of quality software, delivered on time,within budget, satisfying users ’ needs GOAL: production of quality software, delivered on time,within budget, satisfying users ’ needs

Definition of Software Engineering The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. IEEE Standard

Why is Software Hard? Lots of lines of code Lots of lines of code Complexity Complexity Lots of people Lots of people Changeability Changeability Invisible Invisible Money and time are major factors Money and time are major factors

What Can Go Wrong? Designer-client communications break down Designer-client communications break down Poor Quality Poor Quality –reduced functionality, unreliable, unsafe, inflexible, undocumented Development time and costs are underestimated Development time and costs are underestimated

Software Engineering is NOT just Programming! ICS 102 program Software Engineering well-defined tasks part of work is defining the task! few constraints outside constraints are key developer = user lots of developers Required (developer != user) write-once, never read write, read, re-write, read, re-write,... developer = modifier developer !=  Modifier lifetime of one semester lifetime of years

Software Life Cycle Requirements Analysis Design Implementation Verification Maintenance Specification Determine Customer Needs (what) State Customer Needs (what) Design a solution (How) Implement a solution (How) Show solution meets specification Keep solution working

Waterfall Model with Iterations  The drawback of the waterfall model is the difficulty of accommodating change after the process is underway. Having some level of iteration is clearly necessary.

Requirements & Specification Determine exactly what the customer and user want Determine exactly what the customer and user want Develop a contract with the customer Develop a contract with the customer Specifies what the software product is to do Specifies what the software product is to do Difficulties Difficulties – client asks for wrong product – client is computer/software illiterate – specifications are ambiguous, inconsistent, incomplete

Design High-level: decompose software into modules with interfaces High-level: decompose software into modules with interfaces Detailed: develop module specifications (select algorithms and data types) Detailed: develop module specifications (select algorithms and data types) Maintain a record of design decisions and traceability Maintain a record of design decisions and traceability Specifies how the software product is to do its tasks Specifies how the software product is to do its tasks Difficulties: Difficulties: – Miscommunication between module designers – Design may be inconsistent, incomplete, ambiguous

Implementation & Integration Implement modules; verify that they meet their specifications Implement modules; verify that they meet their specifications Combine modules according to the design Combine modules according to the design Specifies how the software product does its tasks Specifies how the software product does its tasks Difficulties Difficulties – module interaction errors – order of integration may influence quality and productivity

Operation and Maintenance Maintain software during/after user operation Maintain software during/after user operation Determine whether the product still functions correctly Determine whether the product still functions correctly Difficulties Difficulties – rigid design – lack of documentation – personnel turnover

Risk Most Problems In Software Development Arise Because Of Risk Most Problems In Software Development Arise Because Of Risk Things Happen During Development That Were Not Anticipated Things Happen During Development That Were Not Anticipated Software Engineers Are Not Malicious Software Engineers Are Not Malicious Problems That Arise Are Things Like: Problems That Arise Are Things Like: –Insufficient Computer Time –Inadequate Software Tools –Critical Staff Leave The Project –Wrong Requirements –Incorrect Design –Expected New Equipment (Hardware Or Software) Fails To Arrive –Ambiguous Documents –Projected Schedule Unachievable –Project Cost Estimates Incorrect Goal - Risk Reduction Goal - Risk Reduction

Significant Risk Area Personnel - People Vary A Lot Personnel - People Vary A Lot Schedules And Budgets - How Long Will It Take To Build The System? Schedules And Budgets - How Long Will It Take To Build The System? Developing Software Functions - Wrong Functionality Developed: Developing Software Functions - Wrong Functionality Developed: –Developer Does Not Understand Application –Inadequate Requirements Analysis Requirements Stability: Requirements Stability: –Customers Think Software Is Flexible So Requests Changes Quality Of External Components: Quality Of External Components: –Compiler, Operating System, Or Other Support Software Has Bugs Hardware Slower Than Expected Hardware Slower Than Expected Late Delivery Of Equipment Late Delivery Of Equipment BUT, THE MOST SIGNIFICANT RISK: BUT, THE MOST SIGNIFICANT RISK: –Programming is Hard – Software Engineer Does Not Understand The Development Problems

Some Risk Reduction Techniques Prototyping: Prototyping: –Build A Piece Of The Application In The Risk Area Simulation: Simulation: –Simulate The Situation Benchmarking: Benchmarking: –Try Out Things That Might Be Bottlenecks References: References: –See If Others Have Done It Before User Questionnaires: User Questionnaires: –Ask Users About Their Requirements

Software Qualities External vs. Internal qualities External vs. Internal qualities – external qualities are visible to the user reliability, efficiency, usability reliability, efficiency, usability – Internal qualities are the concern of developers they help developers achieve external qualities they help developers achieve external qualities verifiability, maintainability, extensibility, evolvability, adaptability verifiability, maintainability, extensibility, evolvability, adaptability Product vs. Process qualities Product vs. Process qualities – product qualities concern the developed artifacts maintainability, understandability, performance maintainability, understandability, performance – process qualities deal with the development activity products are developed through process products are developed through process maintainability, productivity, timeliness maintainability, productivity, timeliness

Some Software Qualities Correctness Correctness – established w.r.t. the requirements specification Reliability Reliability – probability that software will operate as expected over a given period of time Robustness Robustness – “reasonable” behavior in unforeseen circumstances Usability Usability – ability of end-users to easily use software Understandability Understandability – ability of developers to easily understand produced artifacts Performance Performance – equated with efficiency

Some Software Qualities Evolvability Evolvability – ability to add or modify functionality Reusability Reusability – ability to construct new software from existing pieces Interoperability Interoperability – ability of software (sub)systems to cooperate with others Scalability Scalability – ability of a software system to grow in size while maintaining its properties and qualities Heterogeneity Heterogeneity – ability to compose a system from pieces developed in multiple programming languages, on multiple platforms, by multiple developers, etc. Portability Portability – ability to execute in new environments with minimal effort

Software Engineering “Axioms” Adding developers to a project will likely result in further delays and accumulated costs Adding developers to a project will likely result in further delays and accumulated costs Basic tension of software engineering Basic tension of software engineering – better, cheaper, faster — pick any two! – functionality, scalability, performance — pick any two! The longer a fault exists in software The longer a fault exists in software – the more costly it is to detect and correct – the less likely it is to be properly corrected Up to 70% of all faults detected in large-scale software projects are introduced in requirements and design Up to 70% of all faults detected in large-scale software projects are introduced in requirements and design – detecting the causes of those faults early may reduce their resulting costs by a factor of 100 or more

Object- Oriented Software Development Object-oriented software development is quit different form the traditional water fall model. The analysis and design phase tend to be intermixed instead of being separate, sequential activities. That involve in 1- Discover classes 2- Determine the behavior of each class 3- Describe the relationships between the classes

1- Discover classes: A simple rule for finding classes is to look for nouns in the task description. For example, suppose your job is to print an invoice. Obvious classes that come to mind are Invoice, Item, and Customer. Object- Oriented Software Development(cont.)

2-Determine the behavior of each class: you need to find out what methods each object needs to carry out to solve the programming problem. A simple rule for finding these methods is to look for verbs in the task description, and then match the verbs to the appropriate objects for example, in the invoice program, some class needs to compute the amount due An excellent way to carry out this task is the use of CRC(Classes, Responsibilities, Collaborators). For example, suppose you decide that an invoice should compute the amount due, Then you write compute amount due on an index card with the title Invoice. Object- Oriented Software Development(cont.)

CRC cards(Classes, Responsibilities, Collaborators) CRC cards(Classes, Responsibilities, Collaborators) CRC cards (Classes, Responsibilities, Collaborators) 3- Relationships between classes Use UML( Unified Modeling Language) to record class relationships, attributes, and methods. Some of these relations -inheritance(“is”), aggregation(“has”), and dependency(“uses”)

UML uses ----> and arrow with an open triangle pointing to the superclass. In the UML notation aggregation is denoted by a line with a diamond. The diamond is placed toward the aggregating class an is – a and a has-a Compartments for attributes and Methods UML(Unified Modeling Language) Dependency relationship The invoice depend on customer Invoice has items Inheritance car is a vehicle Aggregation Car has Tire