Introduction to Software Engineering Notes

113 views 38 slides May 20, 2024
Slide 1
Slide 1 of 38
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38

About This Presentation

Software Engineering Unit -1 Part1


Slide Content

Software Engineering
KCS-601, Unit-I, 1.1
Dr APJ Abdul KalamTechnical
University, Lucknow
By
Dr AnuranjanMisra
1
Dr AnuranjanMisra
innovation
Ambassador
Ministry of Education,
Government of India
& Professor & Dean,
GNIOT, Greater Noida

SOFTWARE ENGINEERING –KCS-601
UNIT I SOFTWARE PROCESS MODELS
IntroductiontoSoftwareEngineering,SoftwareProcess,
PerspectiveandSpecializedProcessModels–Waterfallmodel–
SpiralModel–Vshapedmodel–RADmodel–IterativeModel–
Prototypemodel.
2
UNIT-II REQUIREMENTS ANALYSIS AND SPECIFICATION
SoftwareRequirements:FunctionalandNon-Functional,User
requirements,Systemrequirements,SoftwareRequirements
Document–RequirementEngineeringProcess:FeasibilityStudies,
Requirementselicitationandanalysis,requirementsvalidation,
requirementsmanagement-Classicalanalysis:Structuredsystem
Analysis,PetriNets-DataDictionary.

SOFTWARE ENGINEERING –KCS-601
UNIT-IIISOFTWAREDESIGN
Designprocess–DesignConcepts-DesignModel–DesignHeuristic–
ArchitecturalDesign-Architecturalstyles,ArchitecturalDesign,
ArchitecturalMappingusingDataFlow-UserInterfaceDesign:Interface
analysis,InterfaceDesign–ComponentlevelDesign:DesigningClass
basedcomponents,traditionalComponents.
3
basedcomponents,traditionalComponents.
UNIT-IVTESTINGANDMAINTENANCE
Softwaretestingfundamentals-InternalandexternalviewsofTesting-
whiteboxtesting-basispathtesting-controlstructuretesting-blackbox
testing-RegressionTesting–UnitTesting–IntegrationTesting–
ValidationTesting–SystemTestingandDebugging–Software
ImplementationTechniques:Codingpractices-Refactoring-Maintenance
andReengineering-BPRmodel-Reengineeringprocessmodel-Reverse
andForwardEngineering–SoftwareConfigurationManagement.

SOFTWARE ENGINEERING –KCS-601
UNIT-VPROJECTMANAGEMENT
SoftwareProjectManagement:Estimation–LOC,FPBasedEstimation,
Make/BuyDecisionCOCOMOI&IIModel–ProjectScheduling–
Scheduling,EarnedValueAnalysisPlanning–ProjectPlan,Planning
Process,RFPRiskManagement–Identification,Projection-Risk
Management-RiskIdentification-RMMMPlan-CASETOOLS-Introduction
toAgility:Extremeprogramming,Scrum,DevOps
4
toAgility:Extremeprogramming,Scrum,DevOps
TEXTBOOKS
1.RogerS.Pressman,BruceR.Maxim―SoftwareEngineering–A
Practitioner’sApproach,EightEdition,McGraw-HillInternationalEdition,
2015.
2.2.IanSommerville,―SoftwareEngineering,9thEdition,PearsonEducation
Asia,2011.
3.3.GeneKim,JezHumble,PatrickDebois,andJohnWillis,TheDevOps
Handbook-HowtoCreateWorld-ClassAgility,Reliability,&Securityin
TechnologyOrganizations,ITRevolutionPress,2ndEdition,2016

5Introduction to Software
EngineeringEngineering

6

7
Activity
Thinkaboutallthedevicesandsystems
thatyouencounterinyoureverydaylife
whichhavesoftwarecontrollingthem…
Virtually all countries
depend on complex
computer-based
systems.
whichhavesoftwarecontrollingthem…List as many as you can

8
Software
Softwareis:
(1)
Instructions(computerprograms)thatwhenexecuted
providedesiredfeatures,function,andperformance;providedesiredfeatures,function,andperformance;
(2)
Datastructuresthatenabletheprogramstoadequately
manipulateinformation,
(3)
Descriptiveinformationinbothhardcopyandvirtualforms
thatdescribestheoperationanduseoftheprograms.

ProgramsPrograms
9
What is Software?
SoftwareSoftware
DocumentationDocumentation
DataData
System
Documentation
User
Documentation

10
Attributes of good software

Functional attributes (performance; what the system does).

Non-functional attributes (quality; how the system does it).
Product CharacteristicDescription
Maintainability Evolution qualities such as Testability, extensibility.
Dependability Reliability,security, safety.
Efficiency Responsetime, processing time, memory utilization.
Usability Easy to learnhowto use the system by target users.
Efficient to use the system by users to accomplish a task.
Satisfyingto use by intended users.

11
Activity

What are the key attributes for..
Interactive game Banking system
Cardiac monitor in an ICU
unit
Players, score, scenes, Client accounts, stocks heart rate, temperature, Players, score, scenes,
theme.
Client accounts, stocks
bonds, money transfers.
heart rate, temperature,
blood pressure.

12
Software Development Crises
Projects were:
•Late.
•Over budget.
•Unreliable.
•Difficult to maintain.
•Performed poorly.

13
Software errors….the cost
Errors in computer software can have
devastating effects.devastating effects.

14
Software Crisis
Example1:2009,Computerglitchdelaysflights
Saturday3
rd
October2009-London,England(CNN)

DozensofflightsfromtheUKweredelayedSaturdayafter

DozensofflightsfromtheUKweredelayedSaturdayafter
aglitchinanairtrafficcontrolsysteminScotland,butthe
problemwasfixedafewhourslater.

Theagencysaiditrevertedtobackupequipmentas
engineeringworkedonthesystem.

Theproblemdidnotcreateasafetyissuebutcouldcause
delaysinflights.

Readmoreat:
http://edition.cnn.com/2009/WORLD/europe/10/03/uk.fl
ights.delayed

15
Software Crisis
Example2:Ariane5Explosion

EuropeanSpaceAgencyspent10yearsand$7
billiontoproduceAriane5.

Crashafter36.7seconds.

Causedbyanoverflowerror.Tryingtostorea64-bit
numberintoa16-bitspace.

Watch the video:
http://www.youtube.com/watch?v=z-r9cYp3tTE

16
Software Crisis
Example 3: 1992, London Ambulance Service

Consideredthelargestambulanceserviceinthe
world.

Overloadedproblem.

Itwasunabletokeeptrackoftheambulances
andtheirstatuses.Sendingmultipleunitstosome
locationsandnounitstootherlocations.

Generatesmanyexceptionsmessages.

46deaths.

17
Therefore…
A well-disciplined approach to software
development and management is development and management is
necessary. This is called engineering.

18
Software Engineering
“Anengineeringdisciplinethatisconcernedwithallaspectsof
softwareproductionfromtheearlystagesofsystemspecification
tomaintainingthesystemafterithasgoneintouse.”
Sommerville,
tomaintainingthesystemafterithasgoneintouse.”
Sommerville,
pg.7
The IEEE definition:
SoftwareEngineering:Theapplicationofasystematic,disciplined,
quantifiableapproachtothedevelopment,operation,and
maintenanceofsoftware;thatis,theapplicationofengineeringto
software.

19
QUICK LOOKS

Whatisit?

Whodoesit?

Whyisitimportant?

Whatarethesteps?

Whatarethesteps?

Whatistheworkproduct?

HowdoIensurethatI’vedoneitright?

20
Why is Software Engineering important?
Complexsystemsneedadisciplinedapproachfor
designing,developingandmanagingthem.youcanhaveit
fast,youcanhaveitright,oryoucanhaveitcheap.Pick
two!”two!”

•Software is developed or engineered, it is not
manufactured in the classical sense.
•Software is custom built
•Softwareshouldachieveagoodqualityin
Characteristics of software
•Softwareshouldachieveagoodqualityin
designandmeetallthespecificationsofthe
customer.
•Softwaredoesnotwearouti.e.itdoesnot
losethematerial.
21

•Softwareshouldbeinherentlycomplex.
•Softwaremustbeefficienti.e.theabilityof
thesoftwaretousesystemresourcesinan
effectiveandefficientmanner.
Characteristics of software
effectiveandefficientmanner.
•Softwaremustbeintegrali.e.itmustprevent
fromunauthorizedaccesstothesoftwareor
data
22

23
Types of Software
Seven Broad Categories of software are challenges for software
engineers
•Systemsoftware-Systemsoftwareisacollectionofprograms
writtentoserviceotherprograms.Systemsoftware:suchas
compilers,editors,filemanagementutilities.compilers,editors,filemanagementutilities.
•Applicationsoftware:stand-aloneprogramsforspecificneeds.This
softwareareusedtocontrolsbusinessneeds.Ex:Transaction
processing.
•Artificialintelligencesoftware-Artificialintelligence(AI)software
makesuseofnonnumericalgorithmstosolvecomplexproblems.
Applicationwithinthisareaincluderobotics,patternrecognition,
gameplaying
.

24
Types of Software
•Engineeringandscientificsoftware-Engineeringandscientific
softwarehavebeencharacterizedby"numbercrunching"
algorithm.
•Embeddedsoftwareresideswithinaproductorsystem.(keypad
controlofamicrowaveoven,digitalfunctionofdashboarddisplay
inacar)inacar)
•Product-linesoftwarefocusonalimitedmarketplacetoaddress
massconsumermarket.(wordprocessing,graphics,database
management)
•WebApps(Webapplications)networkcentricsoftware.Asweb
2.0emerges,moresophisticatedcomputingenvironmentsis
supportedintegratedwithremotedatabaseandbusiness
applications.

25
Software engineering -Layered technology
•Softwareengineeringisafullylayeredtechnology.
•Todevelopasoftware,weneedtogofromonelayerto
another.
•Alltheselayersarerelatedtoeachotherandeachlayer
demandsthefulfillmentofthepreviouslayer.demandsthefulfillmentofthepreviouslayer.

26
Software engineering -Layered technology
Quality focus
The characteristics of good quality software are:
•Correctnessofthefunctionsrequiredtobeperformed
bythesoftware.bythesoftware.
•Maintainabilityofthesoftware
•Integrityi.e.providingsecuritysothatthe
unauthorizedusercannotaccessinformationordata.
•Usabilityi.e.theeffortsrequiredtouseoroperatethe
software
.

27
Software engineering -Layered technology
Quality focus
The characteristics of good quality software are:
•Correctnessofthefunctionsrequiredtobeperformed
bythesoftware.bythesoftware.
•Maintainabilityofthesoftware
•Integrityi.e.providingsecuritysothatthe
unauthorizedusercannotaccessinformationordata.
•Usabilityi.e.theeffortsrequiredtouseoroperatethe
software
.

28
Software engineering -Layered technology
2. Process
•It is the base layer or foundation layer for the software
engineering.
•The software process is the key to keep all levels
together.
•It defines a framework that includes different activities
and tasks.
•In short, it covers allactivities, actions and tasks
required to be carried out for software development.

29
Software engineering -Layered technology
3. Methods
•Themethodprovidestheanswersofall'how-to'that
areaskedduringtheprocess.
•Itprovidesthetechnicalwaytoimplementthe
software.
•Itincludescollectionoftasksstartingfrom
communication,requirementanalysis,analysisand
designmodelling,programconstruction,testingand
support.

30
Software engineering -Layered technology
4. Tools
•Thesoftwareengineeringtoolisanautomated
supportforthesoftwaredevelopment.
•Thetoolsareintegratedi.etheinformationcreated
byonetoolcanbeusedbytheothertool.
•Forexample:TheMicrosoftpublishercanbe
usedasawebdesigningtool.

Case Study –An Insulin Pump Control System
A personal insulin pump
–Anembeddedsysteminaninsulinpumpusedbydiabeticsto
maintainbloodglucosecontrol.Insulin pump control systemInsulin pump control system
–Collectsdatafromabloodsugarsensorandcalculatestheamount
ofinsulinrequiredtobeinjected.
–Calculationbasedontherateofchangeofbloodsugarlevels.
–Sendssignalstoamicro-pumptodeliverthecorrectdoseof
insulin.
–Safety-criticalsystemaslowbloodsugarscanleadtobrain
malfunctioning,comaanddeath;high-bloodsugarlevelshave
long-termconsequencessuchaseyeandkidneydamage.
17

Insulin pump hardware architecture
22

Activity model of the insulin pump
19

Case Study
An Embedded System for Smart Card
34

35
The Cost of Software Engineering

Dependson:

Theprocessused,and

Thetypeofsoftwarebeingdeveloped.

Thetypeofsoftwarebeingdeveloped.

Eachgenericapproachhasadifferentprofileofcostdistribution.

Roughly60%ofcostsaredevelopmentcosts,40%aretestingcosts.

Forcustomsoftware,evolutioncostsoftenexceeddevelopment
costs.

36
Challenges facing software engineering
ChallengeWhy? Software needs to ..
Heterogeneity
Different computers, different
Cope with this variability.
Heterogeneity
Different computers, different
platforms, different support systems.
Cope with this variability.
Delivery
Businesses are more responsive
supporting software needsto
evolve as rapidly.
Bedelivered in shorter time
without compromising quality.
Trust
Softwareis a part of many aspects of
our lives (work, study, leisure).
Demonstratethat it can be
trusted by users.

Question Answer
Whatissoftware? Computerprogramsandassociateddocumentation.Software
productsmaybedevelopedforaparticularcustomerormay
bedevelopedforageneralmarket.
Whataretheattributesofgoodsoftware?Goodsoftwareshoulddelivertherequiredfunctionalityand
performancetotheuserandshouldbemaintainable,
Frequently asked questions about software
engineering
37
performancetotheuserandshouldbemaintainable,
dependableandusable.
Whatissoftwareengineering? Softwareengineeringisanengineeringdisciplinethatis
concernedwithallaspectsofsoftwareproduction.
Whatarethefundamentalsoftware
engineeringactivities?
Softwarespecification,softwaredevelopment,software
validationandsoftwareevolution.
Whatisthedifferencebetweensoftware
engineeringandcomputerscience?
Computersciencefocusesontheoryandfundamentals;
softwareengineeringisconcernedwiththepracticalitiesof
developinganddeliveringusefulsoftware.
Whatisthedifferencebetweensoftware
engineeringandsystemengineering?
Systemengineeringisconcernedwithallaspectsof
computer-basedsystemsdevelopmentincludinghardware,
softwareandprocessengineering.Softwareengineeringis
partofthismoregeneralprocess.

Frequently asked questions about software
engineering
Question Answer
Whatarethekeychallengesfacingsoftware
engineering?
Copingwithincreasingdiversity,demandsforreduceddelivery
timesanddevelopingtrustworthysoftware.
Whatarethecostsofsoftwareengineering?Roughly60%ofsoftwarecostsaredevelopmentcosts,40%are
testingcosts.Forcustomsoftware,evolutioncostsoften
exceeddevelopmentcosts.
38
exceeddevelopmentcosts.
Whatarethebestsoftwareengineering
techniquesandmethods?
Whileallsoftwareprojectshavetobeprofessionallymanaged
anddeveloped,differenttechniquesareappropriatefor
differenttypesofsystem.Forexample,gamesshouldalwaysbe
developedusingaseriesofprototypeswhereassafetycritical
controlsystemsrequireacompleteandanalyzable
specificationtobedeveloped.Youcan’t,therefore,saythat
onemethodisbetterthananother.
Whatdifferenceshasthewebmadeto
softwareengineering?
Thewebhasledtotheavailabilityofsoftwareservicesandthe
possibilityofdevelopinghighlydistributedservice-based
systems.Web-basedsystemsdevelopmenthasledto
importantadvancesinprogramminglanguagesandsoftware
reuse.