Amit Singh Introduction to Software Engineering. What is Software? The product that software professionals build and then support over the long term.

Slides:



Advertisements
Similar presentations
Adaptive Processes Introduction to Software Engineering Adaptive Processes.
Advertisements

Developed by Reneta Barneva, SUNY Fredonia
Chapter 2 The Software Process
LECTURE-2. Software Is a Product Designed by software engineers. Consists of : –Programs - that execute within a computer and provides desired functions.
CS487 Software Engineering Omar Aldawud
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
An Introduction to Software Engineering.
Lecture 1.
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.
Chapter : Software Process
Process: A Generic View
Chapter 1- Introduction
1 Software Engineering Muhammad Fahad Khan Software Engineering Muhammad Fahad Khan University Of Engineering.
1 Software Engineering CEN5035 copyright © 1996, 2001 R.S. Pressman & Associates, Inc.
Chapter 1- Introduction Lecture 1 Ready, fire, aim (the fast approach to software development). Ready, aim, aim, aim, aim... (the slow approach to software.
Introduction to Software Engineering. Topic Covered What is software? Attribute of good S/w? Computer Software? What is Software Engineering? Evolving.
Introduction to Software Engineering. What is Software? “ Software is a set of instructions to acquire inputs and to manipulate them to produce the desired.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
College of Engineering and Computer Science Computer Science Department CSC 131 Computer Software Engineering Fall 2006 Lecture # 1 (Ch. 1, 2, & 3)
SOFTWARE ENGINEERING MCS-2 LECTURE # 1. COMPULSORY READING MATERIAL  Software Engineering (6 th edition) by IAN Sommerville  Software Engineering; A.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Introduction to Software Engineering LECTURE 2 By Umm-e-Laila 1Compiled by: Umm-e-Laila.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Engineering CS 421 / SWE 421 Kinga Dobolyi
Chapter 2 Process: A Generic View
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Chapter 1 Software and Software Engineering Discussion of the Software Product.
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.
Lecture 1 The University of Lahore Software Engineering Saeed Akhtar
1 Software Engineering Ian Sommerville th edition Instructor: Mrs. Eman ElAjrami University Of Palestine.
1 Software Engineering CS 421 / SWE 421 Kinga Dobolyi.
INPUT#3 SOFTWARE ENGINEERING. QUALITY SOFTWARE?  Satisfies the needs of the users and programmers involved with it.
Introduction to Software Engineering. Why SE? Software crisis manifested itself in several ways [1]: ◦ Project running over-time. ◦ Project running over-budget.
Coming up: Why worry about SW Engineering? 1 Software Engineering CS 421 / SWE 421 Dan Fleck.
Coming up: Why worry about SW Engineering? 1 Software Engineering CS 421 / SWE 421 Dan Fleck.
Coming up: Why worry about SW Engineering? 1 Software Engineering CS 421 / SWE 421 Dan Fleck.
An Introduction to Software Engineering (Chapter 1 from the textbook)
Overview: Software and Software Engineering n Software is used by virtually everyone in society. n Software engineers have a moral obligation to build.
© 2013, published by Flat World Knowledge Chapter 10 Understanding Software: A Primer for Managers 10-1.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
IS444: Modern tools for applications development Dr. Azeddine Chikh.
Software Engineering Introduction.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
BIT SOFTWARE ENGINEERING APPLICATION DEVELOPMENT Referred Textbook: Software Engineering: A Practitioner’s Approach, 7/e, by Roger S. Pressman CHAPTER.
INTRODUCTION TO SOFTWARE DEVELOPMENT (SOFTWARE ENGINEERING-I)
Object-Oriented Software Engineering Chapter 1 Software and Software Engineering.
PI2134 Software Engineering IT Telkom.  Software definition  Characteristic of software  Software myths  Software Engineering definition  Generic.
Software Engineering (CSI 321) Software Process: A Generic View 1.
Chapter 1- Introduction Lecture 1. Topics covered  Professional software development  What is meant by software engineering.  Software engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 1 Introduction to Software Engineering.
Software and Software Engineering By bscshelp.com software engineering 1.
TCS / TIT 603 : Software Engineering
CompSci 280 S Introduction to Software Development
INTRODUCTION The economies of ALL developed nations are dependent on software. More and more systems are software controlled Software engineering is concerned.
Chapter 1- Introduction
Chapter 1 The Nature of Software
Software Engineering (CSI 321)
Software Engineering B.E IT Sem-VII
An Introduction to Software Engineering
CS385T Software Engineering Dr.Doaa Sami
What is Software? Software is: (1) instructions (computer programs) that when executed provide desired features, function, and performance; (2) data structures.
Software and Software Engineering
Presentation transcript:

Amit Singh Introduction to Software Engineering

What is Software? The product that software professionals build and then support over the long term. Software encompasses: —instructions (computer programs) that when executed provide desired features, function, and performance; —data structures that enable the programs to adequately store and manipulate information and —documentation that describes the operation and use of the programs

Software Products Generic products —Stand-alone systems that are marketed and sold to any customer who wishes to buy them. —Examples – PC software such as editing, 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.

Why Software is Important? The economies of ALL developed nations are dependent on software. More and more systems are software controlled (transportation, medical, telecommunications, military, industrial, entertainment...) Software engineering is concerned with theories, methods and tools for professional software development. Expenditure on software represents a significant fraction of GNP in all developed countries

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.

Features of Software? Characteristics that make software different from other human being built things. —Software is Developed or engineered, not manufactured. —doesn't "wear out.” but it deteriorates (due to change). Component-based construction —Modern reusable components encapsulate data and processing into software parts to be reused by different programs. E.g. graphical user interface, window, pull- down menus in library etc. Yet, most software continue to be custom-built.

Software Applications System software: —such as compilers, editors, file management utilities Application software —stand-alone programs for specific needs. Engineering/scientific software —Characterized by “number crunching”algorithms. such as automotive stress analysis, molecular biology, orbital dynamics etc Embedded software —resides within a product or system. (key pad control of a microwave oven, digital function of dashboard display in a car) Product-line software —focus on a limited marketplace to address mass consumer market. (word processing, graphics, database management)

Software Applications (Contd.) WebApps —(Web applications) network centric software. As web 2.0 emerges, more sophisticated computing environments is supported integrated with remote database and business applications. AI —software uses non-numerical algorithm to solve complex problem. Robotics, expert system, pattern recognition game playing

Software Engineering Definition [Software engineering is] the establishment and use of sound engineering principles in order to obtain economical software that is reliable and works efficiently on real machines. The IEEE definition: —Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).

Software Engineering Definition According to Wikipedia: “Software engineering is a profession dedicated to designing, implementing, and modifying software so that it is of higher quality, more affordable, maintainable, and faster to build”

Why worry about SW Engineering? Quality issues: History of SW failures from —Many more incidents…

Software is expensive to maintain Maintenance activities consume 70-90% of the total lifecycle cost of software, summing to over $70 billion per year We want to “get it right” the first time —But as we’ll see this is non-trivial

Why is it so hard? Lots of “parts”. Many more than mechanical devices —Dishwasher parts —Car - 14,000 parts —Space shuttle million parts —Red Hat Linux million source lines of code (SLOC) — Mac Office - 30 million SLOC —Using 70 programmers = 428,000 SLOC / programmer —But those are big… what about “normal size programs”? –Average programmer SLOC (Source lines of code) / day = 100 –5 days/week * 52 weeks/year = 26,000 SLOC / year –15 programmer team = 390,000 SLOC / year

Why do projects fail? Why do projects fail so often? —Unrealistic or unarticulated project goals —Inaccurate estimates of needed resources —Badly defined system requirements —Poor reporting of the project's status —Unmanaged risks —Poor communication among customers, developers, and users —Use of immature technology —Inability to handle the project's complexity —Sloppy development practices —Poor project management —Stakeholder politics —Commercial pressures

Why do projects fail?

How do we fix it? Need to have more reproducible results —Standard processes / procedures to produce good outcomes —Design patterns —Object oriented programming (reuse) More measurements of both the software and the process More testing at all stages of development By creating a better understanding of the process we use to create software, we’ll create better software faster. “ Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.” - IEEE Standard Glossary of Software Engineering Terminology

Is it essential ? Software engineering! Software engineering is really just a set of ideas and tools to use (when it makes sense) to give you a higher likelihood of success on a software project. Will your project fail if you don’t use any software engineering techniques? —No…. but you have a better chance at success if you do.

A Generic Framework Communication —Heavy collaboration with the customer, other stakeholders and encompasses requirements gathering and related activities Planning —Establish a plan for the work. Technical task to be conducted, risks, needed resources, work products to be created, and a schedule Modeling —Creation of models to allow the customer and the developer to better understand the requirements and design that will achieve those requirements Construction —Combines code generation and testing required to uncover errors in the code Deployment —The software (as a complete entity or partially complete increment) is delivered to the customer who evaluates it and provides feedback.

Framework Activities Communication Planning Modeling —Analysis of requirements —Design Construction —Code generation —Testing Deployment

Umbrella Activities Software project management Formal technical reviews Software quality assurance Software configuration management Work product preparation and production Reusability management Measurement Risk management

A Layered Technology Software Engineering a “quality” focus process model methods tools