0% found this document useful (0 votes)
58 views

Welcome! : Tahir Farooq

The document introduces the CS303 Software Engineering course. It will cover software engineering concepts like requirements engineering, software architecture, project management, and quality assurance. The goal is for students to learn how to apply software engineering techniques to successfully develop software products. It also provides an overview of the typical software development life cycle (SDLC) process.
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views

Welcome! : Tahir Farooq

The document introduces the CS303 Software Engineering course. It will cover software engineering concepts like requirements engineering, software architecture, project management, and quality assurance. The goal is for students to learn how to apply software engineering techniques to successfully develop software products. It also provides an overview of the typical software development life cycle (SDLC) process.
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 31

Welcome!

CS303 Software Engineering

Tahir Farooq
Text Book(s)
Software Engineering (9th Edition) by Ian Sommerville

Reference Books:
Software Engineering, A practitioners approach, Roger S.
Pressman.

Object-Oriented Software Engineering: A use case driven


approach, Ivar Jacobson, Magnus Christerson, Patrick Jonsson,
Gunnar Overgaard.
Software Engineering for Students, A programming approach,
Douglas Bell.
Short Description of CS303
Introduction to software engineering concepts
Requirements engineering
Software architecture
Software project management
Cost estimation
Software quality assurance
Software configuration management
Software process models (Our focus)
Course Objective
Upon successful completion of this course the student will be
able to apply software engineering techniques effectively to
produce a successful software product.

They will be able to structure the software production


process, analyze the requirements for a software system,
produce a software design and architecture from
requirements.

The course should also introduce the students to software


project management and planning issues and various
software validation and verification techniques.
Software can have huge impact
in any aspect of our society
Where can we find software?
Some popular ones
Some popular ones
And even in
Conclusion

Software is almost
everywhere!!!
Problems in software development

Common issues
The final software does not fulfill the needs of the
customer
Hard to extend and improve: if you want to add a
functionality later its mission impossible
Bad documentation
Bad quality: frequent errors, hard to use, ...
More time and costs than expected
But

that never
happens?

right?
Wrong!
Ariane 5 Flight 501
Cause: design errors in the software
http://www.youtube.com/watch?v=kYUrqdU
yEpI
Conclusion
Programming is NOT enough!

It is not enough to do your best:


you must Know what
to do, and THEN do your best.
W. Edwards Deming
And Since
A clever person solves a problem.
A wise person avoids it.
- Albert Einstein
Solution
Software Engineering

1) The application of a systematic, disciplined,


quantifiable approach to the development,
operation, and maintenance of software; that is
the application of engineering to software.
-- IEEE Definition
Software Engineering

Software engineering is about the creation of large


pieces of software that consist of thousands of lines of
code and involve many person months of human effort.
(Douglas Bell)
Software Engineering
One of the attractions of software engineering is that
there is no one single best method for doing it, but
instead a whole variety of different approaches.
Consequently, the software engineer needs a
knowledge of many different techniques and tools.
What does a Software Engineer do?

Software engineers apply the principles and techniques of


computer science, engineering, and mathematical analysis
to the design, development, testing, and evaluation of the
software and the systems that enable computers to perform their
many applications.

Software engineers must possess programming skills, but are


often more concerned with developing algorithms and
analyzing and solving programming problems than with
actually writing code.
Goals of Software Engineering
Constructing software is a challenging task, essentially because
software is complex. The perceived problems in software development and
the goals that software development seeks to achieve are:

1. Meeting users needs


2. Low cost of production
3. High performance
4. Portability
5. Low cost of maintenance
6. High reliability
7. Deliver on time
Software Development Life cycle
(SDLC)
The software life cycle is the sequence of different activities
that take place during software development. There are also
different deliverables produced. Although deliverables can
be agreements or evaluations, normally deliverables are
objects, such as source code or user manuals. Usually, the
activities and deliverables are closely related. Milestones
are events that can be used for telling the status of the
project.
SDLC
Feasibi
lity Determining if the proposed development is worth-while.
Market analysis
Determining if there is a potential market for this product.
Requirements
Determining what functionality the software should contain.
Requirement elicitation
Obtaining the requirements from the user.
Domain analysis
Determining what tasks and structures are common to this problem.

Project planning
Determining how to develop the software.
Cost analysis
Determining cost estimates.
Scheduling
Building a schedule for the development.
Software quality assurance plan
Determining activities that will help ensure quality of the product.
Work-breakdown structure
Determining the subtasks necessary to develop the product
SDLC (cont)
Design
Determining how the software should provide the functionality.
Architectural design
Designing the structure of the system.
Interface design
Specifying the interfaces between the parts of the system.
Detailed design
Designing the algorithms for the individual parts.

Implementation
Building the software.
SDLC (cont)
Testi
ng Executing the software with data to help ensure that the correct
software works ly.
Unit testing
Testing by the original developer.
Integration testing
Testing during the integration of the software.
System testing
Testing the software in an environment that matches the operational environment.
Alpha testing
Testing by the customer at the developers site.
Beta testing
Testing by the customer at the customers site.
Acceptance testing
Testing to satisfy the purchaser or SQA team.
Regression testing
Saving tests from the previous version to ensure that the new version retains the
previous capabilities.
Stress testing
Testing to make sure application work under stress (a exampl
lots of inputs for e)
SDLC (cont)
Delivery
Providing the customer with an effective
software solution.
Installation
Making the software available at the customers sit
operational e.
Training
Teaching the users to use the software.
Help desk
Answering questions of the user.

Maintenance
Updating and improving the software to ensure
continued usefulness.

You might also like