CS 360 Lecture 1.  Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing.

Slides:



Advertisements
Similar presentations
SWE Introduction to Software Engineering
Advertisements

©Ian Sommerville 2000Software Engineering, 6th edition Slide 1 Introduction l Getting started with software engineering l Objectives To introduce software.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
SE 112 Slide 1 SE 112 l
An Introduction to Software Engineering
Frequently asked questions about software engineering
Lecture 1.
Introduction/overview, Process model. What is Software Engineering? Why we need Software Engineering? Software Process Models.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 System and Software Engineering.
Chapter 1 - Introduction Lecture 1. Way back when... “The name ‘software engineering’ was proposed in 1969 at a NATO conference to discuss software development.
Chapter 1 Introduction Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Chapter 1- Introduction
Chapter 1- Introduction Lecture 1 Ready, fire, aim (the fast approach to software development). Ready, aim, aim, aim, aim... (the slow approach to software.
Objectives of the Lecture
1 An Introduction to Software Engineering. 2 Objectives l To introduce software engineering and to explain its importance l To set out the answers to.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 Software Engineering The first lecture.
Introduction to Software Engineering
2-Oct-15 1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts ICS Software Engineering.
2-Oct-15 Introduction to SWE1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts.
Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
An Introduction to Software Engineering. What is Software?
Chapter 1: Introduction Omar Meqdadi SE 2730 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Chapter 1- Introduction Lecture 1. Topics covered  Professional software development  What is meant by software engineering.  Software engineering.
An Introduction to Software Engineering. Communication Systems.
Lecture 1 The University of Lahore Software Engineering Saeed Akhtar
SOFTWARE ENGINEERING Chapter 1. Introduction We can’t run the modern world without software. Why? Discussion….
Software Engineering, COMP201 Slide 1 Introduction to software engineering Lecture 1.
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.
Chapter 1- Introduction Lecture 1. Topics covered  Professional software development  What is meant by software engineering.  Software engineering.
An Introduction to Software Engineering (Chapter 1 from the textbook)
An Introduction to Software Engineering. Objectives  To introduce software engineering and to explain its importance  To set out the answers to key.
Software Engineering Chapter 1- Introduction. Topics covered  Professional software development  What is meant by software engineering.  Software engineering.
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.
Figures – Chapter 1. Figure 1.1 Frequently asked questions about software engineering QuestionAnswer What is software?Computer programs and associated.
INTRODUCTION TO SOFTWARE DEVELOPMENT (SOFTWARE ENGINEERING-I)
Introduction to Software Engineering Syed Salman Ali B.E, MBA ( MIS, Mktg), PMP.
Chapter 1- Introduction Lecture 1. Topics covered  Professional software development  What is meant by software engineering.  Software engineering.
1 CSC 4700 Software Engineering John Lewis These slides are based on originals provided by Ian Sommerville.
Chapter 1- Introduction Lecture 1. Topics covered  Professional software development  What is meant by software engineering.  Software engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 1 Chapter 1 Introduction As modified by Randy Smith.
L ECTURE 1 Introduction Getting started with software engineering.
Software and Software Engineering By bscshelp.com software engineering 1.
Chapter 1- Introduction. Topics covered  Professional software development  What is meant by software engineering.  Software engineering ethics  A.
CS220:INTRODUCTION TO SOFTWARE ENGINEERING CH1 : INTRODUCTION 1.
CompSci 280 S Introduction to Software Development
Chapter 1- Introduction
Software Engineering and Human Computer Interaction
An Introduction to Software Engineering
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
CS281 – Introduction to Software Engineering Chapter1: Introduction
MISY 301 Mr.Mohammed Rafeeque.
Chapter 1- Introduction
Frequently asked questions about software engineering
Introduction To software engineering
Chapter 1- Introduction
Frequently asked questions about software engineering
CS281 – Introduction to Software Engineering Chapter1: Introduction
Physical Design and Implementation with Emerging Environment INFS 360
Introduction To software engineering
CS385T Software Engineering Dr.Doaa Sami
Chapter 1 Introduction.
Presentation transcript:

CS 360 Lecture 1

 Definition:  Software engineering covers technical aspects of building software systems, along with management issues such as directing programming teams, scheduling, and budgeting.  More and more systems are software controlled  National infrastructures: utilities, communication, navigation  Entertainment: music, movie/television, games  Residential: community design, landscaping  Science/Data Collection: biology, chemistry, physics, engineering, …  Social Interactions: , social networks, text messaging

 Computer Science:  Study design of algorithms, languages, hardware and software architectures, and complexities such as space and time.  Foundation based on mathematics and theory.  Why does it work?  Software Engineering:  Study design of creating high quality software that provides a solution to a given problem using controlled, systematic, and efficient design techniques.  Foundation based on problem solving.  How does it work?

 The economies of ALL developed nations are dependent on software.  Software represents a significant fraction of GDP in all developed countries.  1997: $149 billion  1.7% U.S. GDP  2012: $526 billion  3.2% U.S. GDP  The use of software has also increased the productivity of other industries.  15% increase in all U.S. labor productivity from 2004 to  Software accounted for $101 billion in overall production in 2012.

 Software Jobs:  1990: 778,000  1995: 1,083,000  2010: 2,095,000  2014: 2,501,000  Software jobs growing faster than any other jobs.  2014: 2.2% of all U.S. employment  Software industry directly responsible for ~3.65 million U.S. jobs  Software industry employment grows on average by 3.1% Every Year.  Average salary for new employees in the software industry: $86,457  Average salary per person in the U.S.: $27,000

 Software costs often dominate computer system costs.  The costs of software on a PC are often greater than the hardware cost.

 The apparent problem of incomplete, poorly written software became referred to as "the software crisis".  Computers (both software and hardware) were created as 'one-off' items for particular applications.  With the emergence of large and powerful general purpose mainframes (such as the IBM 360, and now distributed/virtualized cloud architectures) large and complex systems became possible.  People began to ask why project failures were so much more common than with other large projects.  The late 1960s introduced the new discipline of Software Engineering.

 A number of fundamental problems with the process of software development were identified: 1. Frequently, software was never completed, even after further significant investment had been made. 2. The amount of work involved in removing flaws and bugs from "completed" software, to make it useable, often took a considerable amount of time - often more than had been spent in the writing it in the first place. 3. The functionality of the software seldom matched the requirements of the end- users. 4. Once created, software was almost impossible to maintain; the developer's ability to understand what they had written appeared to decrease rapidly over time.

 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.  First determine the needs of the user.  Then design, construct, test, and maintain the software system.

 Role of the software engineer: 1. Research – the software engineer should seek new principles and processes by employing mathematical and scientific concepts, experimental techniques, and inductive reasoning. 2. Design – the software engineer selects methods and materials to satisfy technical requirements and to meet performance specifications. 3. Development – the software engineer applies the results of research to useful purposes. Ingenious and creative application of new knowledge may result in a working software prototype. 4. Construction – the software engineer determines procedures that will economically and safely yield the desired software product. 5. Management – the software engineer may be responsible for deciding how assets are used, project team management, determining economic feasibility, and resolving problems.

 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, games  Project management tools  CAD software  Software for specific markets such as appointments systems for dentists, doctors  Customized products  Software that is commissioned by a specific customer to meet their own needs.  Examples –  Embedded control systems  Air traffic control systems  Traffic monitoring systems 12

 Generic products  The specification of what the software should do is owned by the software developer.  Microsoft Office 365  Google Gmail  Android OS  Customized products  The specification of what the software should do is owned by the customer.  Embedded system control for automated manufacturing  Hospital systems for storing patient data  Billing systems for super markets and gas stations 13

 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. 14

 What are the key challenges facing software engineering?  Coping with increasing diversity  Demands for reduced delivery times  Developing trustworthy software 15

16 Product characteristicDescription MaintainabilitySoftware 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 securitySoftware 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. EfficiencySoftware should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc. AcceptabilitySoftware 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.

 More and more, individuals and society rely on advanced software systems..  Education  Social media  Smart home devices  Communication  It is usually cheaper, in the long run, to use software engineering methods and techniques for developing software systems rather than ad-hoc software development.  67% of the software system’s life spent in maintenance phase.  Who’s maintaining the software? 17

 Software specification:  where clients and engineers define the software that is to be produced and the constraints on its operation.  Performed by: clients and software engineering team  Software development:  where the software is designed and programmed.  Performed by: software engineering team  Software validation:  where the software is checked to ensure that it is what the customer requires.  Performed by: clients and software engineering team  Software evolution:  where the software is modified to reflect changing customer and market requirements.  Performed by: software engineering team 18

 Heterogeneity  Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices.  Mobile devices  Business and social change  Business need to be able to change their existing software and to rapidly develop new software.  Security and trust  As software is intertwined with all aspects of our lives, it is essential that we can trust that software.  Fitness monitoring software  Banking software  Cloud enabled software 19

 There are many different types of software systems.  There is no universal set of software techniques that is applicable to all of these.  Ex: Techniques for building the embedded software system for autonomous robots versus techniques for building software systems used for metadata harvesting.  The software engineering methods and tools used depend on:  The type of application being developed  The requirements of the client  The background of the development team  In this class, the teams will be diverse, and the client’s requests may change over time. 20

 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.  These are becoming increasingly uncommon  Example?  Interactive transaction-based applications  Applications that execute on a remote computer and are accessed by users from their own PCs or terminals.   Dropbox  Embedded control systems  These are software control systems that control and manage hardware devices. Numerically, the most common type of system.  Traffic control systems  Automotive control systems  HVAC control systems 21

 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.  Bank transaction systems  Inventory tracking systems  Entertainment systems  These are systems that are primarily for personal use and which are intended to entertain the user.  Gaming systems  DVD/Blue-Ray systems  Systems for modeling and simulation  These are systems that are developed by scientists and engineers to model physical processes or situations.  CloudSim  NS2 22

 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.  Hobo environmental sensor systems  Inventory tracking with RFID 23