Introduction to Software Engineering

Slides:



Advertisements
Similar presentations
Computer ScienceSoftware Engineering Slide 1 SOFTWARE ENGINEERING INTRO l Learn by doing l Two projects Galaxy Sleuth Graduate Program Application l Goals:
Advertisements

Soft. Eng. IDr Driss Kettani1 CSC-3324: Chapter I Introduction and definition Reading: I. Sommerville, Edition 7, Chap. 1.
Introduction To Software Engineering
Software Engineering II
©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.
Modified from Sommerville’s slidesSoftware 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 September 5, 2007.
SE 112 Slide 1 SE 112 l
Frequently asked questions about software engineering
Lecture 1.
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.
Introduction to Software Engineering. What is Software? “ Software is a set of instructions to acquire inputs and to manipulate them to produce the desired.
Objectives of the Lecture
An Introduction to Software Engineering | Website for students | VTU NOTES1.
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 An Introduction to Software Engineering ( ICS 2302)
An Introduction to Software Engineering DeSiamore 1.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
Software engineering. What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software.
Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a.
1 Software Engineering, 7th edition. Chapter 1 Courtesy: ©Ian Sommerville 2004 Sep 02, 2008 Lecture # 1 An Introduction to Software Engineering.
©Ian Sommerville 2006Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
Software Engineering Slide 1 An Introduction to Software Engineering.
Chapter 1: Introduction Omar Meqdadi SE 2730 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 1 Chapter 1 Introduction.
An Introduction to Software Engineering. Communication Systems.
1 Software Engineering Ian Sommerville th edition Instructor: Mrs. Eman ElAjrami University Of Palestine.
Software Engineering. Introduction Objective To familiarize students to the fundamental concepts, techniques, processes, methods and tools of Software.
Introduction to Software Engineering. Why SE? Software crisis manifested itself in several ways [1]: ◦ Project running over-time. ◦ Project running over-budget.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 1 Slide 1 Professional and ethical responsibility l Software engineering involves wider.
An Introduction to Software Engineering Ian Sommerville, Software Engineering 李彤, 王仲民, 康雁, 陆歌浩.
Introduction to Software Engineering COMP 412 – Software Engineering Project Management Prepared by: Engr. Maria Diorella A. Paguio.
INTRODUCTION TO SOFTWARE ENGINEERING. Objectives To introduce software engineering and to explain its importance To set out the answers to key questions.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 / 31 An Introduction to Software Engineering.
1 Software Engineering, 8th edition. Chapter 1 Jan 28 th, 2009 Lecture # 1 Courtesy: ©Ian Sommerville 2006 An Introduction to Software Engineering.
Software Engineering Chapter 1- Introduction. Topics covered  Professional software development  What is meant by software engineering.  Software engineering.
Why? Software Engineers don’t communicate very well…
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.
INTRODUCTION TO SOFTWARE DEVELOPMENT (SOFTWARE ENGINEERING-I)
Introduction to Software Engineering Syed Salman Ali B.E, MBA ( MIS, Mktg), PMP.
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.
Software Engineering I. Course Description This course is designed to provide understanding of the concepts, techniques and tools for the definition,
©Ian Sommerville 2006Software Engineering, 8th 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.
INTRODUCTION TO SOFTWARE ENGINEERING
Software Engineering An Introduction.
An Introduction to Software Engineering
An Introduction to Software Engineering
Chapter 1- Introduction
CS281 – Introduction to Software Engineering Chapter1: Introduction
MISY 301 Mr.Mohammed Rafeeque.
An Introduction to Software Engineering
Software Engineering Introduction.
What are the attributes of good software?
CS281 – Introduction to Software Engineering Chapter1: Introduction
Physical Design and Implementation with Emerging Environment INFS 360
CS385T Software Engineering Dr.Doaa Sami
An Introduction to Software Engineering
An Introduction to Software Engineering
An Introduction to Software Engineering
An Introduction to Software Engineering
An Introduction to Software Engineering
Presentation transcript:

Introduction to Software Engineering

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 Software products may be Generic - developed to be sold to a range of different customers Custom - developed for a single customer according to their specification

What is Good Software? Software has number of attributes which decide whether it is a good or bad . The definition of a good software changes with the person who evaluates it. The software is required by the customer , used by the end users of an organization and developed by software engineer . Each one will evaluate the different attributes differently in order to decide whether the software is good.

What are the attributes of good software? The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable. Maintainability Software must evolve to meet changing needs Dependability Software must be trustworthy Efficiency Software should not make wasteful use of system resources Usability Software must be usable by the users for which it was designed

Software - Characteristics Software has a dual role. It is a product, but also a vehicle for delivering a product. Software is a logical rather than a physical system element. Software has characteristics that differ considerably from those of hardware. - Software is developed or engineered, it is not manufactured in the classical sense. - Software doesn’t “wear out”. - Most software is custom-built, rather than being assembled from existing components.

Types of Software System Software- A collection of programs written to service other programs at system level. For example, compiler, operating systems. Real-time Software- Programs that monitor/analyze/control real world events as they occur. Business Software- Programs that access, analyze and process business information. Engineering and Scientific Software - Software using “number crunching” algorithms for different science and applications. System simulation, computer-aided design.

Types of Software Embedded Software-: Embedded software resides in read-only memory and is used to control products and systems for the consumer and industrial markets. It has very limited and esoteric functions and control capability. Artificial Intelligence (AI) Software: Programs make use of AI techniques and methods to solve complex problems. Active areas are expert systems, pattern recognition, games

Types of Software Internet Software : Programs that support internet accesses and applications. For example, search engine, browser, e-commerce software, authoring tools. Software Tools and CASE environment : Tools and programs that help the construction of application software and systems. For example, test tools, version control tools.

Importance of software Software can have a huge impact in any aspect of society.

Where can you find software?

Some popular ones…

Some popular ones…

Some popular ones…

And even in…

Conclusion Software is Almost Everywhere.

General issues that affect most software Heterogeneity Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices Business and social change Business and society are changing incredibly quickly as emerging economies develop and new technologies become available. They 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 Chapter 1 Introduction

Common issues The final Software doesn´t fulfill the needs of the customer. Hard to extend and improve: if you want to add a functionality later is mission impossible. Bad documentation. Bad quality: frequent errors, hard to use, ... More time and costs than expected

i. The final Software doesn´t fit the needs of the customer ii. Hard to extend and improve: if you want to add a functionality later is mission impossible Bad documentation, bad software design iii. Bad quality: frequent errors, hard to use... iv. More time and costs than expected

But That never happens, right?

Wrong!

Problems in software development

Limitations of Non-engineered Software Requirements Here is the problem!! One of the problems with complex system design is that you cannot foresee the requirements at the beginning of the project. In many cases, where you think you can start with a set of requirements, that specifies the completely the properties of your system you end up with.... Software

Software Production has a Poor Track Record Example: Space Shuttle Software Cost: $10 Billion, millions of dollars more than planned Time: 3 years late Quality: First launch of Columbia was cancelled because of a synchronization problem with the Shuttle's 5 onboard computers. Error was traced back to a change made 2 years earlier when a programmer changed a delay factor in an interrupt handler from 50 to 80 milliseconds. The likelihood of the error was small enough, that the error caused no harm during thousands of hours of testing. Substantial errors still exist. Astronauts are supplied with a book of known software problems "Program Notes and Waivers".

Ariane 5 Flight 501 Cause: design errors in the software

Conclusion Programming is NOT enough! It is not enough to do your best: you must Know what to do, and THEN do your best. -- W. Edwards Deming

And Since… A clever person solves a problem. A wise person avoids it. - Albert Einstein

Solution

Software Engineering The study of approaches as in Application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. (IEEE 93)

By “Systematic” we mean Following a well-defined sequence of activities, - in which desired outputs (deliverables) are well-defined - by using well-defined inputs (i.e. documented syntax, semantics, context and other relevant properties of the input) - in a well-defined process (e.g. using organizational standards for interprocess communication, data formats, error handling etc.) - whose outputs are in turn used similarly as inputs in subsequent process(es), - until the final output is achieved, - and where the correctness of the output is verifiable. Note: The “inputs” and “outputs” most often refer to requirements, software specifications, the software itself, documentation, test inputs/outputs and similar software artifacts. Back

By “disciplined” we mean: Each process is followed using organizational principles (e.g. who manages whom, who is responsible for what?), Intermediate results are carefully documented, as well as final results, Actions are traceable as to their causes, individuals involved, time of occurrence and circumstances. Back Software Engineering - Introduction

By “quantifiable” we mean: The size and extent of the required effort (size of output code, data, documentation, manpower, duration, budget for development, expected error rate and user support) are predictable within justifiable and acceptable bounds Software Engineering - Introduction

Software Engineering Objective To produce software that is: On time: is deliver at the established date. Reliable: doesn´t crash. Complete: good documentation, fulfill customer needs. On time: deliver at the established date Reliable: doesn´t crash often, etc Complete: good documentation, fulfill customer needs

Requirements Analysis Stages for software development Requirements Analysis Software Design Implementation Testing Maintenance

1. Requirements Analysis Find out what the client want the software to do Find out what the client want the software to do

2. Design Planning the software solution How are you going to build your application and how will it be Planning the software solution

3. Implementation Code!!! Code!!!

4. Testing Executing the application trying to find software bugs Try everything to make sure is working correctly Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs Executing the application trying to find software bugs

5. Maintenance Any activity oriented to change an existing software product. Maintenance and enhancing software to cope with newly discovered problems or new requirements can take far more time than the initial development of the software. It may be necessary to add code that does not fit the original design to correct an unforeseen problem or it may be that a customer is requesting more functionality and code can be added to accommodate their requests. It is during this phase that customer calls come in and you see whether your testing was extensive enough to uncover the problems before customers do. Software maintenance activities include any software engineering activity oriented to change an existing software product or to improve or plan for future changes.

Why Software Engineering? Major Goals: - To increase software productivity and quality. - To effectively control software schedule and planning. - To reduce the cost of software development. - To meet the customers’ needs and requirements. - To enhance the conduction of software engineering process. - To improve the current software engineering practice. - To support the engineers’ activities in a systematic and efficient manner.

Computer Science Software Engineering What is the difference between software engineering and computer science? Computer Science Software Engineering is concerned with theory fundamentals the practicalities of developing delivering useful software Computer science theories are currently insufficient to act as a complete underpinning for software engineering, BUT it is a foundation for practical aspects of software engineering

What is the difference between software engineering and system engineering? Software engineering is part of System engineering System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering System engineers are involved in system specification architectural design integration and deployment

Software engineering ethics Software engineering involves wider responsibilities than simply the application of technical skills Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals Ethical behaviour is more than simply upholding the law but involves following a set of principles that are morally correct Chapter 1 Introduction

Issues of professional responsibility Confidentiality Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed Competence Engineers should not misrepresent their level of competence. They should not knowingly accept work which is outwith their competence Chapter 1 Introduction

Issues of professional responsibility Intellectual property rights Engineers should be aware of local laws governing the use of intellectual property such as patents, copyright, etc. They should be careful to ensure that the intellectual property of employers and clients is protected. Computer misuse Software engineers should not use their technical skills to misuse other people’s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses). Chapter 1 Introduction