Muhammad Naveed Zafar
Educational Background
BS in Computer Science
(Bahria University)
MS in Software Project
Management
(FAST University)*
Professional Experience
Project Manager
(NevTech)
Faculty Member
(Aptech MSG)
Project Coordinator
AMI
Software Engineer
GoSafe Systems
What is software?
•Computerprogramsandassociateddocumentation
•Softwareproductsmaybedevelopedforaparticular
customerormaybedevelopedforageneralmarket
•Softwareproductsmaybe
–Generic/COTS-developedtobesoldtoarangeof
differentcustomers
–Custom-developedforacustomeraccordingtotheir
specification
What is Engineering?
•Engineeringis…
–Theapplicationofscientificprinciplesandmethodstothe
constructionofusefulstructures.
Examples:
–Mechanicalengineering
–Computerengineering
–Civilengineering
–Chemicalengineering
–Electricalengineering
–Nuclearengineering
–Aeronauticalengineering
What Actually “Software Engineering”?
•Adisciplinewhoseaimintheproductionofsoftwarethat
–meetstheclient‟sneeds
–fault-free
–deliveredontime
–deliveredwithinbudget
–easytomodify
Why the need for Software Engineering?
SoftwareCrisis:Unacceptablelowqualityofsoftware,
exceedsdeadlineandbudget.Canceled, 23%
Successful,
28%
*Completed with
Faults, 49%
*Completed late, over budget, and/or with features missing
Why Software Engineering ?
•Theproblemiscomplexity
•Manysources,butsizeisakey:
–Mozillacontains3Millionlinesofcode
–UNIXcontains4millionlinesofcode
–Windows2000contains10
8
linesofcode
•Secondisrolesdefine
•Thirdisuncertaintyof“inputs”andtheirtiming
•Fourthisthecontinuingchanging“environment”anddemands.
Software engineering is about managing all the sources of complexity to
produce effective software.
•Economic Aspects
–SoftwareEngineeringv.s.ComputerScience
•Thecomputerscientistinvestigatesseveralwaystoproduce
software,somegoodandsomebad
•But the software engineeris interested in only those techniques
that make sound economicsense.
For example:A coding technique that can execute very efficiently
but with higher maintenance cost may not be a good choice, since
maintenance occupies a lot of resources of the whole life cycle.
Software Engineering Aspects…
Horror Software Failure Stories
•Patientsdiedasaconsequenceofsevereoverdosesof
radiation.
•USTreasuryDepartmentmailedincorrectlyprintedSocial
SecurityChecks.
•Interestmiscalculatedonstudentloansresultinginhigher
monthlypayments.
•MarsClimateOrbiterspacecraftcrashesintothesurfaceof
Marsbecauseofmeasurementconversionerror.
Consequences of software failures range from inconvenienceto death!
Software Engineer Line of Actions
SoftwareEngineersshould
–adoptasystematicandorganisedapproachtoallaspects
ofsoftwaredevelopment.
–useappropriatetoolsandtechniquesdependingon
•theproblemtobesolved,
•thedevelopmentconstraintsand
•theresourcesavailable
–Understandandcommunicateprocessesforimproved
softwaredevelopmentwithintheirorganization
–Beeffectiveteammembersand/orleaders.
–Canbeverytechnicalormoremanagerialdependingon
organizationalneed.
Where Does the Software Engineer Fit In?
•Computer Science: focusing on computer
hardware,compilers,operatingsystems,andprogramming
languages
•SoftwareEngineering:adisciplinethatusescomputerand
softwaretechnologiesasaproblem-solvingtools
Where Does the SW Engineer Fit in?...
Relationship between Computer Science and Software Engineering
Qualities of Good Software?
•Goodsoftwareengineeringmustalwaysincludeastrategy
forproducingqualitysoftware
•Threewaysofconsideringquality
–Thequalityoftheproduct
–Thequalityoftheprocess
–Thequalityoftheproductinthecontextofthebusiness
environment
Who Does Software Engineering?
•Customer:thecompany,organization,orpersonwhopays
forthesoftwaresystem
•Developer:thecompany,organization,orpersonwhois
buildingthesoftwaresystem
•User:thepersonorpeoplewhowillactuallyusethesystem
Who Does Software Engineering? (continued)
Participants (stakeholders) in a software development project
Engineering Approach
Building a System
•Requirementanalysisanddefinition
•Systemdesign
•Programdesign
•Writingtheprograms
•Unittesting
•Integrationtesting
•Systemtesting
•Systemdelivery
•Maintenance
Members of the Development Team
•RequirementAnalysts:workwiththecustomerstoidentifyanddocumentthe
requirements
•Designers:generateasystem-leveldescriptionofwhatthesystemus
supposedtodo
•Programmers:writelinesofcodetoimplementthedesign
•Testers:catchfaults
•Trainers:showusershowtousethesystem
•MaintenanceTeam:fixfaultsthatshowuplater
•Librarians:prepareandstoredocumentssuchassoftwarerequirements
•ConfigurationManagementTeam:maintaincorrespondenceamongvarious
artefacts.
Members of the Development Team
(continued)
Typical roles played by the members of a development team
The Software Process
•Astructuredsetofactivitiesrequiredtodevelopasoftwaresystem
–Specification;
–Design;
–Validation;
–Evolution.
•Asoftwareprocessmodelisanabstractrepresentationofaprocess.
•Itpresentsadescriptionofaprocessfromsomeparticularperspective.
Waterfall Model Characteristics
•Theclassiclifecycle-oldestandmostwidelyusedparadigm
•Activities„flow‟fromonephasetoanother
•Iftherearecorrections,returntoapreviousphaseand„flow‟from
thereagain
•Majoradvantages:Goodforplanningandwelldefined/repeatedprojects
Problems of Waterfall Model
•Realprojectsoftenfollowthesequence
•Allrequirementsmaynotbestatedexplicitlybycustomer
•Customeronlyseestheresultsaftersometime
•Developersareoftendelayedatcertainphases
Rapid Application Development (RAD)
Business
Modeling
Data
Modeling
Process
Modeling
Application
Generation
Testing &
Turnover
Team #1
Business
Modeling
Data
Modeling
Process
Modeling
Application
Generation
Testing &
Turnover
Team #2
Time period
RAD Characteristics
•“High-speed”versionofwaterfallmodel
•Primarilyforinformationsystemsapplications
•Requirementswell-understood,fullyfunctionalsystemproducedin
shorttime
•Theapplicationmodularized-majorfunctionscanbecompletedin3
months
•Separateteamscompletethefunctions,thenintegratedasawhole
•Requireshumanresourceandcommitment