Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

  • View
    226

  • Download
    5

Embed Size (px)

Text of Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

  • Slide 1
  • Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman
  • Slide 2
  • 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.
  • Slide 3
  • 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 http://www.engr.washington.edu/score/enginee 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. http://www.engr.washington.edu/score/enginee rs.html
  • Slide 4
  • 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?
  • Slide 5
  • CS-300 Fall 2005 Supreeth Venkataraman 5 Software? What on earth is that? Lets talk about this for a while. How would you define software? ?????
  • Slide 6
  • 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?
  • Slide 7
  • 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.
  • Slide 8
  • 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.
  • Slide 9
  • 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?
  • Slide 10
  • 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.
  • Slide 11
  • 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.
  • Slide 12
  • 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)
  • Slide 13
  • 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.
  • Slide 14
  • 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.
  • Slide 15
  • 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
  • Slide 16
  • 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.
  • Slide 17
  • 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.
  • Slide 18
  • 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.
  • Slide 19
  • 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.
  • Slide 20
  • 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.
  • Slide 21
  • 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
  • Slide 22
  • 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.
  • Slide 23
  • 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.
  • Slide 24
  • 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.