3
Softwareis:
Softwareis:
(1) instructions (computer programs) that when executed provide desiredfeatures,
function, andperformance
(2) data structures that enable the programs to adequately manipulate information
and
(3) documentation that describes the operation and use of theprograms
Software Engineering -Defined
(IEEE) The application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software; that is, the application of
engineering to software
(1969)Softwareengineeringistheestablishmentanduseofsoundengineering
principlesinordertoobtaineconomicallysoftwarethatisreliableandworks
efficientlyonrealmachines
Fritz Bauer, a German computer scientist, defines software
engineering as:
Wecandefinesoftwareengineeringasanengineeringbranchassociatedwiththe
developmentofsoftwareproductusingwell-definedscientificprinciples,methodsand
procedures.Theoutcomeofsoftwareengineeringisanefficientandreliablesoftware
product.
NEED OF SOFTWAREENGINEERING
9
1 3 5
642
Largesoftware Cost
Quality
Management
Scalability
DynamicNature Reduce
Complexity
6
Theneedforsoftwareengineeringarisesbecauseofahigherrateofchangeinuser
requirementsandenvironmentinwhichthesoftwareisworking.
❖Largesoftware-Itiseasiertobuildawallthanahouseorbuilding,likewise,asthe
sizeofsoftwarebecomeslarge,engineeringhastosteptogiveitascientificprocess.
❖Scalability-Ifthesoftwareprocesswerenotbasedonscientificandengineering
concepts,itwouldbeeasiertore-createnewsoftwarethantoscaleanexistingone.
❖Cost-Asthehardwareindustryhasshownitsskillsandhugemanufacturinghas
loweredthepriceofcomputerandelectronichardware.Butthecostofthesoftware
remainshighiftheproperprocessisnotadapted.
NEED OF SOFTWAREENGINEERING
❖DynamicNature-Thealwaysgrowingandadaptingnatureofsoftware
hugelydependsupontheenvironmentinwhichtheuserworks.Ifthenatureof
softwareisalwayschanging,newenhancementsneedtobedonetothe
existingone.Thisiswheresoftwareengineeringplaysagoodrole.
❖QualityManagement-Thebetterprocessofsoftwaredevelopmentprovides
betterandqualitysoftwareproducts.
❖ReduceComplexity-Bigsoftwareisalwayscomplicatedandchallengingto
progress.Softwareengineeringhasagreatsolutiontoreducethecomplicationofany
project.Softwareengineeringdividesbigproblemsintovarioussmallissues.And
thenstartsolvingeachsmallissueonebyone.Allthesesmallproblemsaresolved
independentlyofeachother.
NEED OF SOFTWAREENGINEERING
CHARACTERISTICS OF A GOOD
SOFTWARE
Operational
8
TransitionalMaintenance
Maintenance
11
Modularity
Maintainability
Flexibility
Scalability
In this category all factors are included that describe how well a software has the
capabilities to maintain itself in the ever-changing environment:
Software Engineering: A Layered Technology
•Any engineering approach must rest on an organizational commitment to quality.
•The bedrock that supports Software Engineering is a quality focus.
•Quality is the “degree of goodness”. It cant be measured directly. It should have the following
characteristics: Correctness, Maintainability, Integrity, and Usability.
What is a Process?
(Webster) A system of operations in producing something; a
series of actions, changes, or functions that achieve an end or a
result
(IEEE) A sequence of steps performed for a given purpose
•Aprocessis acollectionofactivities,actions,andtasksthatareperformedwhen some
work product is to becreated
•A process is not a rigid prescription for how to build thesoftware ratheritis an adaptable
approachthatenablesthepeopledoingtheworktopickandchoosethe appropriate
set of work actions andtasks
Software Process/ Software Process
Framework
•A Software Engineering process is the model selected for managing the creation of software from
customer initiation to the release of the finished product.
•Software process models can be prescriptive or agile, complex or simple, all-encompassing or
targeted, but in every case, 5 key activities must occur.
•The framework activities are applicable to all projects and all applications domains, and they are a
template for every process model
The framework is a standard way to build anddeploy applications.
▪It is a foundation of the complete software engineeringprocess.
▪Includes a set ofumbrella activities.
16
36
Waterfall Model
(Diagram)
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design
Construction
Code
Test
Deployment
Delivery
Support
Feedback
39
Waterfall Model with Feedback
(Diagram)
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design
Construction
Code
Test
Deployment
Delivery
Support
Feedback
41
Incremental Model
(Diagram)
Communication
Planning
Modeling
Construction
Deployment
Communication
Planning
Modeling
Construction
Deployment
Communication
Planning
Modeling
Construction
Deployment
Increment #1
Increment #2
Increment #3
42
Incremental Model
(Description)
•Used when requirements are well understood
•Multiple independent deliveries are identified
•Work flow is in a linear (i.e., sequential) fashion withinan increment
and is staggered betweenincrements
•Iterative in nature; focuses on an operational product with each
increment
•Provides a needed set of functionality sooner while delivering optional
components later
•Useful also when staffing is too short for a full-scale development
IncrementalProcess Model
43
•Theprocessisrepeatedfollowingthedeliveryofeachincrementuntilthe
completeproductisproduced.
•Ifthecustomerdemandsdeliverybyadatethatisimpossibletomeet,suggest
deliveringoneormoreincrementsbythatdateandtherestoftheSoftware
later.
What are the advantages of an incrementalmodel?
•Customer feedback is received after the delivery of eachcomponent.
•Risk of requirement changes isreduced
•Moreflexible
•Easy totestanddebug
•Give quickresults
What are the disadvantages of an incrementalmodel?
•Needs a proper plan to integrate thecomponents
•Needs a proper design to integrate thecomponents
•More expansive as compared to the waterfallmodel.
When to use the incrementalmodel?
•Whenmajorrequirementsareunderstoodbutsomerequirementscanevolve
within the passage oftime.
•When product launch in the market is gettinglate.
•Whenacustomerhasnoproblemwiththebudgetbuthedemandsmoreand
morequality insoftware.
46
DifferenceBetweenWaterfallandIncrementalModel
47
RAD Model
•RapidApplicationDevelopment(RAD)isanincremental
softwareprocessmodelthatemphasizesashort
developmentcycle.
•RADisa“high-speed”adaptationofthewaterfallmodel,in
whichrapiddevelopmentisachievedbyusingacomponent-
basedconstructionapproach.
•Ifrequirementsarewellunderstoodandprojectscopeis
constrained,theRADprocessenablesadevelopmentteam
tocreateafullyfunctionalsystemwithinashortperiodof
time.
RAD ModelCommunication
Planning
Modeling
business modeling
data modeling
process modeling
Construction
component reuse
automatic code
generation
testing
Deployment
60 - 90 days
Team # 1
Modeling
business modeling
data modeling
process modeling
Construction
component reuse
automatic code
generation
testing
Modeling
business modeling
data modeling
process modeling
Construction
component reuse
automatic code
generation
testing
Team # 2
Team # n
integration
delivery
feedback
What are the drawbacks of the
RAD model?
•Forlarge,butscalableprojects,RADrequiressufficient
humanresourcestocreatetherightnumberofRADteams.
•Ifdevelopersandcustomersarenotcommittedtotherapid-
fireactivitiesnecessarytocompletethesysteminamuch
abbreviatedtimeframe,theRADprojectwillfail.
•Ifasystemcannotproperlybemodularized,buildingthe
componentsnecessaryforRADwillbeproblematic.
Quiz
RAD stands for
a) Relative Application Development
b) Rapid Application Development
c) Rapid Application Document
d) None of the mentioned
Quiz
If you were a lead developer of a software company and
you are asked to submit a project/product within a
stipulated time-frame with no cost barriers, which model
would you select?
a) Waterfall
b) Spiral
c) RAD
d) Incremental
Quiz
Which of the following activities of a Generic Process
framework provides a feedback report?
a) Communication
b) Planning
c) Modeling & Construction
d) Deployment
Quiz
Which one of the following is not an Umbrella Activity
a) Reusability management
b) Risk management
c) Measurement
d) User Reviews
56
Prototyping Model
(Diagram)
Communication
Quick
Planning
Modeling
Quick Design
Construction
Of Prototype
Deployment,
Delivery,
and Feedback
Start
58
Prototyping Model (Description)
•The quick design focuses on a representation of
those aspects of the Software that will be visible
to the customer “Human interface”.
•The quick design leads to the Construction of
the Prototype.
•The prototype is deployed and then evaluated
by the customer.
•Feedback is used to refine requirements for the
Software.
•Iteration occurs as the prototype is tuned to
satisfy the needs of the customer while enabling
the developer to better understand what needs
to be done.Communication
Quick plan
Construction
of
prototype
Modeling
Quick design
Delivery
& Feedback
Deployment
Prototyping Model (Problems and Lessons)
Theprototypecanserveasthe“firstsystem”.Bothcustomersanddeveloperslike
theprototypingparadigmasusersgetafeelfortheactualsystem,anddevelopers
gettobuildSoftwareimmediately.Yet,prototypingcanbeproblematic:
a.Thecustomerseesa"workingversion"ofthesoftware,wantstostopall
development,andthenbuystheprototypeaftera"fewfixes"aremade
b.Developersoftenmakeimplementationcompromisestogetthesoftwarerunning
quickly(e.g.,languagechoice,userinterface,operatingsystemchoice,
inefficientalgorithms)
Lessonlearned
•Definetherulesupfrontonthefinaldispositionoftheprototypebeforeitis
built
•Inmostcircumstances,plantodiscardtheprototypeandengineertheactual
productionsoftwarewithagoalofquality
72
12PrinciplesofAgileManifesto
1.Thefirst principleistotakeacustomer-orientedapproachandkeepthemupdated.
2.Make changes whenever and wherever required, even at the end of the development stage
for any competitivechanges.
3.Delivering the software to customers on time with moreflexibility.
4.Collaboration between Business and developmentteams.
5.Give support and motivation to the team member who shows interest in the project. Give
them that extra work they would like to do, and trust them to get the jobdone.
6.Have a face-to-face interactionwith theteam.
7.Working software is the primary measure ofprogress.
8.Agile processes promote sustainable development forall.
9.Continuous attention to technical excellence and good design enhancesagility.
10.The simplicity of the agileenvironment.
11.The best practices come from self-organizingteams.
12.Work effectively within cross-functionalteams.
Extreme Programming
•A very influential agile method, developed in the late 1990s, that
introduced a range of agile development techniques.
•Extreme Programming (XP) takes an ‘extreme’ approach to iterative
development.
New versions may be built several times per day;
Increments are delivered to customers approx. every 2 weeks;
Alltests must be run for every build and the build is only accepted if tests run
successfully.
15
ExtremeProgramming
❖XP is a lightweight, Efficient, Low risk, Flexible, predictable,
scientific, and fun way to develop asoftware
❖Small to a medium team that worksunder vague and rapidly
changingrequirements
❖It follows Object OrientedApproach
XP Fundamentals by Kent Beck
•Write unit tests beforeprogramming; keeping all tests running at all times.
•Integrating and testing the whole system--several times a day.
•Producing all software in pairs, two programmers at one screen.
•Starting projects with simple design. A simple design can evolve.
•Putting a minimal system into production quickly and growing it in whatever
directions prove most valuable.
XP and Agile Principles
Incremental development is supported through small, frequent system
releases.
Customer involvement means full-timecustomer engagement with the
team.
People not process through pair programming, collective ownership,
and a processthat avoids long working hours.
Changesupported through regular system releases.
Maintaining simplicity through constant refactoringof code.
16
Influential XP practices
•Extremeprogramminghasatechnicalfocusandisnoteasyto
integratewithmanagementpracticeinmostorganizations.
•Consequently,whileagiledevelopmentusespracticesfromXP,the
methodasoriginallydefinedisnotwidelyused.
•Keypractices
•User stories for specification
•Refactoring
•Test-first development
•Pair programming
Examples of refactoring
Re-organization of a class hierarchy to remove duplicate code.
Tidying up and renaming attributes and methods to make them
easier to understand.
The replacement of inline code with calls to methods that have been
included in a program library.
Problems with test-first development
•Programmerspreferprogrammingtotestingandsometimesthey
takeshortcutswhenwritingtests.ForE.g.theymaywriteincomplete
teststhatdonotcheckforallpossibleexceptionsthatmayoccur.
•Sometestscanbeverydifficulttowriteincrementally.E.g.,ina
complexuserinterface,itisoftendifficulttowriteunittestsforthe
codethatimplementsthe‘displaylogic’andworkflowbetween
screens.
•Itisdifficulttojudgethecompletenessofasetoftests.Althoughyou
mayhavealotofsystemtests,yourtestsetmaynotprovide
completecoverage.
4. Pair programming
•Pair programming involves programmers working in pairs,
and developing code together.
•This helps develop common ownership of code and
spreads knowledge across the team.
•It serves as an informal review process as each line of
code is looked at by more than 1 person.
•It encourages refactoring as the whole team can benefit
from improving the system code.
Quiz
2. According to Agile manifesto –
A Individuals and interactions over people and technique
B Individuals and interactions over projects and tools
C Individuals and interactions over processes and tools.
D Individuals and interactions over products and tools
Quiz
Which of the following is not an Agile methodology?
A.Scrum
B.PMBOK® 3
C.Crystal Clear
D.Extreme programming (XP)
Quiz
There are ........... phases in Scrum
A.2
B.3
C.4
D.5
Quiz
Which of the following is responsible for sprint meeting?
A.Scrum team
B.Scrum master
C.Product Owner
D.None of the above
TheKanbanMethodology
dependsonvarious
principles,suchas:
❖VisualizeWork
❖Limit Work inProgress
❖Pulling NewWork
❖Measure and Learn
❖Manage theWorkflow
❖Processimprovement
❖Working Together
❖Deliver with newIdeas
❖Just in TimeDevelopment
❖Welcome to Incremental
Change
AdvantagesOfKanbanMethodology
❖It increases the Productivity of theteam.
❖It provides a flexibility and sustainable development.
❖It deals with continous process improvement anddelivery.
❖Kanban methodology eradicates the bugs from theprocess.
❖Increase the efficiency of deliver a high qualityproduct.
❖It depends on just in timedevelopment.
❖It limits the work in progress, so enhance theoutput.
❖It focuses on one task attime.
❖It provides the status of project in Kanban Board, its open forall.
❖It improves the workflow and limits the timecycle.
❖It maintains workflow status, collaboration on the team and sustainabledevelopment.