Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Design by Contract.
1 ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
10 Software Engineering Foundations of Computer Science ã Cengage Learning.
SECOND MIDTERM REVIEW CS 580 Human Computer Interaction.
Process Design (Specification)
Documentation 1 Comprehending the present – Investing in the future.
Principles of Software Development CS-300 Fall 2005 Supreeth Venkataraman.
© Janice Regan, CMPT 102, Sept CMPT 102 Introduction to Scientific Computer Programming The software development method algorithms.
Unit 231 Software Engineering Introduction to SWE What is SDLC Phases of SDLC.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Design - Architecture CS-300 Fall 2005 Supreeth Venkataraman.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
1 CS150 Introduction to Computer Science 1 Professor: Chadd Williams
ECE Lecture 1 1 ECE 3561 Advanced Digital Design Department of Electrical and Computer Engineering The Ohio State University.
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
Introduction To C++ Programming 1.0 Basic C++ Program Structure 2.0 Program Control 3.0 Array And Structures 4.0 Function 5.0 Pointer 6.0 Secure Programming.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
Profile and a quick introduction Software Engineering: ) هندسة البرمجيات (in Arabic: is the branch of computer science Designed to develop a set rules.
CompSci 230 Software Design and Construction
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
INTRODUCTION TO COMPUTING CHAPTER NO. 06. Compilers and Language Translation Introduction The Compilation Process Phase 1 – Lexical Analysis Phase 2 –
1 REQUIREMENT ENGINEERING Chapter 7. 2 REQUIREMENT ENGINEERING Definition Establishing what the customer requires from a software system. OR It helps.
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
INTEGRATED SYSTEMS 1205 Technology Education A Curriculum Review Sabine Schnepf-Comeau July 19, 2011 ED 4752.
Process Design (Requirements). Recall the Four Steps of Problem Solving * Orient Plan Execute Test These apply to any kind of problem, not just spreadsheet.
Tuesday, September 8 th Come in quietly 2. Have binder and new lifeline out 3. Be quiet and in your seat before bell rings 4. Make sure you picked.
The Program Development Cycle
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Algorithms and their Applications CS2004 ( ) Dr Stephen Swift 1.2 Introduction to Algorithms.
Software Life Cycle Requirements and problem analysis. –What exactly is this system supposed to do? Design –How will the system solve the problem? Coding.
The Software Development Life Cycle. Software Development SDLC The Software Development Life-Cycle Sometimes called the program development lifecycle.
Chapter 3 Developing an algorithm. Objectives To introduce methods of analysing a problem and developing a solution To develop simple algorithms using.
Software Development Process.  You should already know that any computer system is made up of hardware and software.  The term hardware is fairly easy.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
Lecture 1 Introduction Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
1 Introduction to Software Engineering Lecture 1.
Problem Solving using the Science of Computing MSE 2400 EaLiCaRA Spring 2015 Dr. Tom Way.
Concepts of Software Development Chapter 1. Separation of Concerns Break the system down into less complicated parts, and concentrate on each one in turn.
Intermediate 2 Software Development Process. Software You should already know that any computer system is made up of hardware and software. The term hardware.
C++ Basics C++ is a high-level, general purpose, object-oriented programming language.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Introduction to Physical Science “What is Physical Science?”
Basics of Research and Development and Design STEM Education HON4013 ENGR1020 Learning and Action Cycles.
Software Production ( ) First Semester 2011/2012 Dr. Samer Odeh Hanna (PhD)
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Systems Development Life Cycle
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Computer Science, Algorithms, Abstractions, & Information CSC 2001.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
Data Structure Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2010.
How Are Computers Programmed? CPS120: Introduction to Computer Science Lecture 5.
CMSC 2021 Software Development. CMSC 2022 Software Development Life Cycle Five phases: –Analysis –Design –Implementation –Testing –Maintenance.
C++ for Engineers and Scientists, Second Edition 1 Problem Solution and Software Development Software development procedure: method for solving problems.
Chapter 1 Software Development Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2008.
Dillon: CSE470: ANALYSIS1 Requirements l Specify functionality »model objects and resources »model behavior l Specify data interfaces »type, quantity,
 System Requirement Specification and System Planning.
 Programming methodology: ◦ is a process of developing programs that involves strategically dividing important tasks into functions to be utilized by.
Advanced Computer Systems
Algorithms and Problem Solving
Object oriented system development life cycle
Algorithm and Ambiguity
Objective of This Course
Introduction to Structured Programming
Algorithm and Ambiguity
CS310 Software Engineering Lecturer Dr.Doaa Sami
Algorithms and Problem Solving
Presentation transcript:

Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

CS-300 Fall 2005 Supreeth Venkataraman 2 Introduction to Software Engineering The art of building things is nothing new. Humans realized the practical aspect of building and designing things very early in the history of the world. The structured approach of building things got refined through the ages, and in the modern era was given the term “Engineering.”

CS-300 Fall 2005 Supreeth Venkataraman 3 Engineering The textbook defines engineering as “the art or science of making practical application of the knowledge of pure sciences” rs.html defines engineering as “Engineering is the science and art of applying scientific and mathematical principles, experience, judgment, and common sense to design things that benefit society.” rs.html

CS-300 Fall 2005 Supreeth Venkataraman 4 Engineering (Continued) There are many disciplines of engineering traditionally Civil engineering Mechanical engineering Electrical engineering etc. What do all these have in common? What about management?

CS-300 Fall 2005 Supreeth Venkataraman 5 Software? What on earth is that? Let’s talk about this for a while. How would you define software? ?????

CS-300 Fall 2005 Supreeth Venkataraman 6 Software (continued) Software is a term that is used to refer to a computer program or a set of computer programs that work towards the solution of problems of different nature on a computer. Software development is the process of transforming a problem statement into a form that can be executed on a computer for solving the problem. So what makes software unique?

CS-300 Fall 2005 Supreeth Venkataraman 7 The uniqueness of software Can you imagine the world without software today? Software is present everywhere. Cell phones, automobiles, space shuttles, X-ray machines... Software is used both as an end product and also in the development of other products. Software provides us with all the information we need through the medium of the Internet.

CS-300 Fall 2005 Supreeth Venkataraman 8 What makes software different? For starters, software cannot be touched or felt unlike other engineering products. Software can have an extremely high complexity that makes it difficult to comprehend and leaves an extremely large space for human errors. Software development is a nightmare if not approached in the proper way.

CS-300 Fall 2005 Supreeth Venkataraman 9 What is software engineering? Consider this scenario. John Doe is given a problem to solve on the computer. John sits at his computer in his garage, and spews out a few hundred lines of code, and gets the required output somehow. (Haven't we all done this? ) My question is, “Is software engineering the same as computer programming?”

CS-300 Fall 2005 Supreeth Venkataraman 10 Software Engineering (continued) Writing a program on a computer is not software engineering. Computer programming is but one aspect of software engineering. It is the implementation of a possible solution to the problem at hand, and not the solution itself.

CS-300 Fall 2005 Supreeth Venkataraman 11 Finally... Software engineering is a structured approach for developing software. Software engineering uses the orderliness and discipline of traditional engineering to craft a solution to a given problem. This process is called the software development lifecycle.

CS-300 Fall 2005 Supreeth Venkataraman 12 Software Systems Software engineering is used to build software systems A software system is a set of components that interact with each other to produce the solution for which the software system was developed. Each component is usually termed a “module.” Modules communicate with each other using interfaces. (Think of one function calling another)

CS-300 Fall 2005 Supreeth Venkataraman 13 The structured process If we were to attempt to solve a problem, how would we go about it in a structured way? We need to know what the problem is We need to determine how to solve the problem We need to implement a possible solution We need to verify that the solution implemented is correct.

CS-300 Fall 2005 Supreeth Venkataraman 14 The structured process of software development The task of software development is divided into well-defined tasks called phases. Each phase ends in a “milestone.” The phases of software development put together form the process, also called the “software development lifecycle.” We will study each component of the lifecycle in detail in this course.

CS-300 Fall 2005 Supreeth Venkataraman 15 The phases in software development Phase I: Information exchange between developer and end user. Phase II: Complete problem description (developer only) Phase III: Break down into detailed assignments for programming. Phase IV: Programming Phase V: Testing Phase VI: Changing the program

CS-300 Fall 2005 Supreeth Venkataraman 16 Information exchange between developer and end user. This phase involves discussions between the end user (customer) and the developers. The customers tell the developers what features they want. This is the most important phase of development. (Why?) This phase culminates in a document called the “requirements document.”

CS-300 Fall 2005 Supreeth Venkataraman 17 Complete Problem Description (Developer Only) The requirements document is now expressed in a form that is understandable and familiar to developers. The corresponding product is called the “specifications.” Specifications state exactly what the software is supposed to do from the perspective of the developers, and not how the functionality will be achieved. Requirements state EXACTLY the same, except that they are stated in terms that the customer can understand.

CS-300 Fall 2005 Supreeth Venkataraman 18 Break down into detailed assignments for programming Based on the specifications, the system is broken down into components, and each component is described. Every component has an interface to the other components The goal is to be able to give well defined programming assignments to individual developers. The milestone of this phase is called the “design document.”

CS-300 Fall 2005 Supreeth Venkataraman 19 Programming Do I need to say what it is? This phase transforms the design document into working code. Ideally this phase should be all mechanical work. The milestone of this phase is an executable program that can run on computers.

CS-300 Fall 2005 Supreeth Venkataraman 20 Testing Testing is the process of checking whether the software is doing what it is supposed to do. Does the software correspond to the requirements completely? This involves trying out different input values on the program and examining the output to check if the expected output is obtained. The milestone of the testing phase is the tested software.

CS-300 Fall 2005 Supreeth Venkataraman 21 Changing the program What happens when the software is deployed? Usually, the customers start finding inconsistencies in the software (Hey, this is not what I asked for!) The software has to be “patched” in order to get it working as needed When the program is changed, it means that it has to be tested again. And so life goes on…

CS-300 Fall 2005 Supreeth Venkataraman 22 Words of Wisdom Thanks to Charlotte Mahoney for this slide Writing software is an art, as well as a science. Software engineering researchers: Design computer systems and write programs to perform tasks on those systems, which requires a great deal of art, ingenuity, and skill. A software engineer is responsible for solving a given problem through careful design and analysis, before beginning to implement the solution.

CS-300 Fall 2005 Supreeth Venkataraman 23 Conclusion Software engineering uses a structured process for software development Like any other form of development, resource management (people, equipment, money) is essential for software development Management issues are as important as development issues.

CS-300 Fall 2005 Supreeth Venkataraman 24 Study Questions Why is software engineering different from other types of engineering? What is the difference between software engineering and computer programming? What are the products of each phase in the software development lifecycle? Give me a name for each of the phases in the lifecycle.