Title: Introduction to Software Engineering
1Introduction to Software Engineering
- CS-300 Fall 2005
- Supreeth Venkataraman
2Introduction 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.
3Engineering
- 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.htm
l 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.
4Engineering (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?
5Software? What on earth is that?
- Lets talk about this for a while.
- How would you define software?
- ?????
6Software (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?
7The 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.
8What 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.
9What 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?
10Software 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.
11Finally...
- 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.
12Software 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)
13The 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.
14The 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.
15The 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
16Information 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.
17Complete 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.
18Break 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.
19Programming
- 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.
20Testing
- 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.
21Changing 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
22Words 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.
23Conclusion
- 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.
24Study 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.