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

Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

  • View
    231

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

Introduction to Software Engineering

CS-300 Fall 2005

Supreeth Venkataraman

Page 2: 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.”

Page 3: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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/engineers.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.”

Page 4: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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?

Page 5: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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?

?????

Page 6: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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?

Page 7: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 8: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 9: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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?”

Page 10: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 11: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 12: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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)

Page 13: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 14: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 15: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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

Page 16: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.”

Page 17: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 18: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.”

Page 19: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 20: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 21: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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…

Page 22: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 23: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.

Page 24: Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman

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.