introduction to software engineering cs-300 fall 2005 supreeth venkataraman
Post on 22-Dec-2015
231 views
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”
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.”
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.