Software Engineering (Week-1)
Software Engineering (Week-1)
Software Engineering (Week-1)
(Week-1)
USAMA MUSHARAF
MS-CS (Software Engineering)
LECTURER (Department of Computer Science)
FAST-NUCES PESHAWAR
COURSE CONTENT
Text Books
Software Engineering, Sommerville I., 10th Edition, Pearson
Inc., 2014
Software Engineering, A Practitioner’s Approach, Pressman R.
S.& Maxim B. R., 8th Edition, McGraw-Hill, 2015.
OBJECTIVE OF THIS COURSE
To help students to develop basic skills that will enable them to construct
software of high quality software that is reliable, and that is reasonably
easy to understand, modify and maintain.
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
A clever person solves a problem.
A wise person avoids it.
- Albert Einstein
SOLUTION
SOFTWARE ENGINEERING
SE HISTORY
Software is:
“Computer programs, procedures, and possibly
associated documentation and data pertaining to the
operation of a computer system”.
THE ROLE OF SOFTWARE ENGINEERING
A bridge from customer needs to programming implementation
Customer
Customer
Programmer
Maintainability
Software must evolve to meet changing needs
Dependability
Software must be trustworthy
Efficiency
Software should not make wasteful use of system resources
Usability
Software must be usable by the users for which it was designed
and much more....
WELL ENGINEERED SOFTWARE?
It is reliable
It is of good quality
It is cost-effective
WHAT ARE THE KEY CHALLENGES FACING SOFTWARE
ENGINEERING?
Legacy systems
Old, valuable systems must be maintained and updated.
Heterogeneity
Systems are distributed and include a mix of hardware and software.
Delivery
There is increasing pressure for faster delivery of software.
QUESTIONS ADDRESSED BY SOFTWARE ENGINEERING
Project Management
Software Quality Assurance
Requirement Engineering
Software Configuration
Testing
SOFTWARE DEVELOPMENT
SOFTWARE DEVELOPMENT
SOFTWARE DEVELOPMENT
Construction
Management
SOFTWARE DEVELOPMENT
Construction
Construction activities are related to the development of
software.
Requirement Gathering
Design Development
Coding
Testing
SOFTWARE DEVELOPMENT
Management
Management activities are kind of umbrella activities that
are used to smoothly and successfully perform the
construction activities
Definition: What?
Development: How?
Application domain
Required functionality
Required performance
User interface
DEFINITION (CONT.)
SOFTWARE DESIGN
User interface design
High-level design
Coding
Integration
Combine modules
Develop code for each module
System testing
Unit testing
MAINTENANCE
New hardware
Communication
Between customer and developer
Changing requirements
5 x cost during development
up to 100 x cost during maintenance
Hardware/software configuration
Security requirements
Real time requirements
Reliability requirements
WHY IS SOFTWARE DEVELOPMENT DIFFICULT? (CONT.)
Management issues
Personnel characteristics
Cost estimation
Ability
Scheduling
Prior experience
Resource allocation
Communication skills
Quality assurance
Team cooperation
Version control
Training
Contracts
MAJOR PROBLEMS IN SOFTWARE DEVELOPMENTS
SOFTWARE MYTHS
Management myths
Customer myths
A general description of objectives enough to start
coding.
Project requirements continually change, but change
can be easily accommodated because software is
flexible.
SOFTWARE MYTHS
Practitioner myths
Once we write the program and get it to work, our job is
done.
Until I get the program "running" I have no way of
assessing its quality.
The only deliverable work product for a successful
project is the working program.
Software engineering will make us create voluminous
and unnecessary documentation and will invariably slow
us down.
HAVE A GOO DAY!