SlideShare une entreprise Scribd logo
1  sur  34
Cisco Confidential 1© 2010 Cisco and/or its affiliates. All rights reserved.
The Process of Software Engineering
JohnLynch(jlynch2@cisco.com)
John Lynch
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 2
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 3
Communication
Communicating
complex Ideas
Requirements
CostAll software
has a cost!
Software
Modelling
Quality
The true
definition of
software quality
Good
/Bad
Design
Tools
Use the
available tools! Testing
1. Functional &
Non Functional
2. An incredibly
comprehensive
software design
template
3. Symptoms of
a good and bad
design
4. Test every
line of code!
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 4
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 5
Scenario - John and Dave are software engineers working together
on something complicated…
John is reviewing Dave’s code. Dave writes loads of code. John hasn’t a
notion what Dave’s code is doing but it certainly looks really clever. Its got
layers of inheritance and abstraction all over the place.
John is almost too embarrassed to ask what its doing but he plucks up the
courage to ask Dave how it works.
Dave gives John a very flowery overview about ‘polymorphism’, ‘abstraction’
and inter-connecting clouds. John is feeling inadequate.
John doesn’t have a clue how the code works but signs off on the review and
hopes there never comes a day where he has to take over Dave’s code!
John thinks Dave is very clever. Maybe he is but is this scenario good for the
company?
Cisco Confidential 6© 2010 Cisco and/or its affiliates. All rights reserved.
Requirements / User
Stories
Our Starting Point.
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 7
• Do I understand the requirements/user stories?
• And do I understand the associated non-functional
requirements / user stories?
• If not you may just solve the wrong problem OR
• You may just solve some of the problem (i.e.
60% of the time it works every time!)
1) What do I have to do?
• I understand the requirements; now how am I
going to build a solution to satisfy these
requirements?
2) How am I going to do it?
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 8
SSO
CUCM
IM&P
HA
CUCM Jabber
ADGroups
Etc.
SRM PE ICSA GUI
System Feature
(Theme)
Product
(Epic)
Component
(User Story)
Etc.
XCP DB
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 9Cisco Confidential 9Cisco Confidential 9© 2010 Cisco and/or its affiliates. All rights reserved.
Software Modelling
The Complete Software Design Template
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 10
1. Static Model
2. Dynamic Model3. Functional Model
Context Diagrams
Object Model Diagrams
Class Diagrams
API Definitions
Threading Model Diagrams
Etc.
Object Interaction Diagrams
Sequence Diagrams
State Machines Diagrams
Activity Diagrams
Etc.
Detailed Flow Charts
Documented Algorithms
Etc.
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 11
1. Static Model
2. Dynamic Model3. Functional Model
Context Diagrams
Object Model Diagrams
Class Diagrams
API Definitions
Threading Model Diagrams
Etc.
Object Interaction Diagrams
Sequence Diagrams
State Machines Diagrams
Activity Diagrams
Etc.
Detailed Flow Charts
Documented Algorithms
Etc.
Wireframes
User Interaction Flows
Navigation Model
Localization
Design - Look and Feel (toolkits, technology etc..)
Etc.
4. GUI Model
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 12Cisco Confidential 12Cisco Confidential 12© 2010 Cisco and/or its affiliates. All rights reserved.
Software Modelling
1. The Static Model
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 13
This server architecture view
shows the software layers
and the major external
interfaces. There are over 5
million lines of code in this
product!
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 14
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 15
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 16
mtq_worker_
thread_func(
)
mtq_worker_
thread_func(
)
mtq_worker_
thread_func(
)
()
()mtq_worker_
thread_func(
)
Jabber MIO thread pool
JSM DB thread pool
mtq(m->user->q)
This is a queue of users mtq’s.
The JSM thread pool reads this queue,
removes an mtq; processes all the messages on that
users mtq. It then it moves on to the next mtq entry.
1) js_mapi_call_async() posts JSM
events into a users mtq to be processed in
the context of one of the JSM mtq thread
pool threads. This method can be called
from any thread (mio, JSM threads etc.)
3) swdb_checkout()
There is an mtq for each of the db threads. (currently 11 of these)
swdb_checkout() will suspend processing of the users mtq; push the
DB processing activity on to one of the generic DB mtq’s. One of the
DB threads carries out the DB action; un-suspends processing of the
users mtq and posts handle or pass to the users mtq.
mtq(dbpool generic mtq)
This is a queue of dbpool generic
mtq’s
JSM entry code runs in the
Context of the Jabber MIO threads before
eventually a call is made to
Js_mapi_call_async() to pass processing of
the event off to the JSM thread pool.
5) pass()/handle()
2)
4)
JSM mtq thread pool
XCP Router XMPP packet entry/exit point.
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 17Cisco Confidential 17Cisco Confidential 17© 2010 Cisco and/or its affiliates. All rights reserved.
Software Modelling
2. The Dynamic Model
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 18
See next slide for this
exploded flow (layer 3) in
SRM!
Tracking SRM
state changes
Tracking
PE state
changes
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 19
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 20Cisco Confidential 20Cisco Confidential 20© 2010 Cisco and/or its affiliates. All rights reserved.
Software Modelling
3. The Functional Model
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 21
• This flow covers the
sequence of operations
carried out for a Database
migration algorithm covering
3K lines of new code
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 22Cisco Confidential 22Cisco Confidential 22© 2010 Cisco and/or its affiliates. All rights reserved.
Software Modelling
4. The GUI Model
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 23
• Provide the user navigation tree/model
Navigation Model
• Get quick feedback – ensure everyone is on the ‘same page’
Screen Mock-Ups
• Icons, graphics, colour schemes, fonts, font sizes, headings etc.
Look and Feel
• Chrome, IE, Firefox etc..
Browser Support (for Web based UI)
• Can UI be isolated for testing?
• Are there off the shelf tools available?
Testing Strategy
Etc.
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 24
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 25Cisco Confidential 25Cisco Confidential 25© 2010 Cisco and/or its affiliates. All rights reserved.
Design Validation
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 26
Stage 1
Symptoms
• Good Traceability for user stories
• All Non functional user stories considered
• Easy to understand & quick ramp up for
fellow engineers
• Docs/wikis not too wordy - pictures are
clearer!
• Well defined boundaries of responsibility
for objects/modules
Stage 2
Symptoms
• Meets customers expectations!
• Reliable, robust & deterministic
• Easy to maintain
• Easy to extend
• Easy to debug
• Easy to test
• Good overall quality – low bug count!
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 27
Unclear
Doesn’t meet the
customers expectations
or requirements!
Design lacks clarity
Dissatisfied
Customers
Boundaries of
responsibility
not well defined
Poorly Thought out !
Not obvious
how to
transition to
implementation
Difficult to
Debug/Test
Time is money!
Difficult
to
maintain
Buggy
Solution
Costs escalate
Absorbs
resources -
a
Bottomless
pit!
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 28
• Test every line of code if possible.
Test, Test and more Test!
• Have you captured all the requirements?
• Does it look like it will work? (i.e. gut feeling)
• Is it easy to understand? i.e. can you easily and quickly get
feedback from peers?
• Is there a natural progression from this design to
implementation?
• Can I take a ‘divide and conquer approach!’ ?
• Is Iterative development/ continuous integration possible ?
• Can I get quick and continuous feedback during the dev.
Process ?
• Are there logical test & integration points? / Is it testable?
Early Checks
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 29
• The name of the class/object, module or component
• Does the name make sense?
Class
• Define the key responsibilities for this object,
module, component
• Are they functionally grouped/ related?
• Are there too few? Too many?
Responsibilities
• Who talks to this object, module or component?
• Who does this object, module or component talk to?
Collaborators
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 30
2) Design1) US def / Planning 3) Implementation 4) Test /Verification
Next iteration
New Feature
Quality Software = Quality User Stories + Quality Planning +
Quality Design + Quality Implementation + Quality Test/Verification
Shippable
Quality
Software!
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 31Cisco Confidential 31Cisco Confidential 31© 2010 Cisco and/or its affiliates. All rights reserved.
Conclusion
Summing it up!
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 32
Our goal is clear. Produce software that meets the requirements, is delivered on time (on budget) and of the
highest quality.
If you can’t draw it you don’t fully understand it.
Build in your test strategy from the start. Test all your code.
It is our duty to ensure that our software is maintainable.
Be crystal clear on your intent.
Comment your code well. Comments are free! Be proud of what you write; make your code pretty and easy to
read.
If you are sitting at your computer and thinking how you are going to do things you probably missed a step (or two
or three  )
Quick feedback loops are one of the key ingredients to success. Use the tools available to you.
All software has a cost!
Quality at every step in the process = Software Quality
© 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 33Cisco Confidential 33Cisco Confidential 33© 2010 Cisco and/or its affiliates. All rights reserved.
Thank you for listening!
The process of software engineering

Contenu connexe

En vedette

Vivi il Divertimento, Parti con RicciBus!
Vivi il Divertimento, Parti con RicciBus!Vivi il Divertimento, Parti con RicciBus!
Vivi il Divertimento, Parti con RicciBus!
RICCIBUS
 
Henry Cornell Brewer Resume Fall 2015
Henry Cornell Brewer Resume Fall 2015Henry Cornell Brewer Resume Fall 2015
Henry Cornell Brewer Resume Fall 2015
Henry Brewer
 
Figurlas planas lucia
Figurlas planas luciaFigurlas planas lucia
Figurlas planas lucia
paqui
 

En vedette (17)

ziadcvnew3-5
ziadcvnew3-5ziadcvnew3-5
ziadcvnew3-5
 
Inumda mi ser
Inumda mi serInumda mi ser
Inumda mi ser
 
Seminar3
Seminar3Seminar3
Seminar3
 
Trabajo
TrabajoTrabajo
Trabajo
 
Vivi il Divertimento, Parti con RicciBus!
Vivi il Divertimento, Parti con RicciBus!Vivi il Divertimento, Parti con RicciBus!
Vivi il Divertimento, Parti con RicciBus!
 
How to Publish an Online game (WoL2)
How to Publish an Online game (WoL2)How to Publish an Online game (WoL2)
How to Publish an Online game (WoL2)
 
Ada 1
Ada 1Ada 1
Ada 1
 
Henry Cornell Brewer Resume Fall 2015
Henry Cornell Brewer Resume Fall 2015Henry Cornell Brewer Resume Fall 2015
Henry Cornell Brewer Resume Fall 2015
 
Jordan_Poster
Jordan_PosterJordan_Poster
Jordan_Poster
 
Materi kelas-9
Materi kelas-9Materi kelas-9
Materi kelas-9
 
Stressbusters
StressbustersStressbusters
Stressbusters
 
Figurlas planas lucia
Figurlas planas luciaFigurlas planas lucia
Figurlas planas lucia
 
Management of vt vf storm in advanced heart failure
Management of vt vf storm in advanced heart failureManagement of vt vf storm in advanced heart failure
Management of vt vf storm in advanced heart failure
 
How to publish foreign mobile game in china
How to publish foreign mobile game in chinaHow to publish foreign mobile game in china
How to publish foreign mobile game in china
 
GEMC- Pulseless Electrical Activity- for Residents
GEMC- Pulseless Electrical Activity- for ResidentsGEMC- Pulseless Electrical Activity- for Residents
GEMC- Pulseless Electrical Activity- for Residents
 
María, pequeña maría
María, pequeña maríaMaría, pequeña maría
María, pequeña maría
 
Lectores de noviembre 2013
Lectores de noviembre 2013Lectores de noviembre 2013
Lectores de noviembre 2013
 

Similaire à The process of software engineering

Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12
Enkitec
 
Resume_Thoota_Phani (2)
Resume_Thoota_Phani (2)Resume_Thoota_Phani (2)
Resume_Thoota_Phani (2)
Phani Thoota
 
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
mfrancis
 
PratheshBV_Resume
PratheshBV_ResumePratheshBV_Resume
PratheshBV_Resume
pradeesh bv
 
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang RamadhanCara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
DicodingEvent
 

Similaire à The process of software engineering (20)

Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12
 
Puppet for Production in WebEx - PuppetConf 2013
Puppet for Production in WebEx - PuppetConf 2013Puppet for Production in WebEx - PuppetConf 2013
Puppet for Production in WebEx - PuppetConf 2013
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye code
 
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
 
Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPages
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
 
Seacon Continuous Delivery Pipeline Tools Track
Seacon Continuous Delivery Pipeline Tools TrackSeacon Continuous Delivery Pipeline Tools Track
Seacon Continuous Delivery Pipeline Tools Track
 
The Coming Earthquake in WebSphere Application Server Configuration Management
The Coming Earthquake in WebSphere Application Server Configuration ManagementThe Coming Earthquake in WebSphere Application Server Configuration Management
The Coming Earthquake in WebSphere Application Server Configuration Management
 
The Coming Earthquake in WebSphere Application Server Configuration Management
The Coming Earthquake in WebSphere Application Server Configuration Management The Coming Earthquake in WebSphere Application Server Configuration Management
The Coming Earthquake in WebSphere Application Server Configuration Management
 
ITN_Module_2_Basic_Switch_and_End_Device_Configuration.pdf.pdf
ITN_Module_2_Basic_Switch_and_End_Device_Configuration.pdf.pdfITN_Module_2_Basic_Switch_and_End_Device_Configuration.pdf.pdf
ITN_Module_2_Basic_Switch_and_End_Device_Configuration.pdf.pdf
 
Resume_Thoota_Phani (2)
Resume_Thoota_Phani (2)Resume_Thoota_Phani (2)
Resume_Thoota_Phani (2)
 
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
 
Reactive Micro Services with Java seminar
Reactive Micro Services with Java seminarReactive Micro Services with Java seminar
Reactive Micro Services with Java seminar
 
PratheshBV_Resume
PratheshBV_ResumePratheshBV_Resume
PratheshBV_Resume
 
Ci tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsCi tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepins
 
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang RamadhanCara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
Cara Tepat Menjadi iOS Developer Expert - Gilang Ramadhan
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
 
01.intro
01.intro01.intro
01.intro
 
The Coming Earthquake in IIS and SQL Configuration Management
The Coming Earthquake  in IIS and SQL Configuration ManagementThe Coming Earthquake  in IIS and SQL Configuration Management
The Coming Earthquake in IIS and SQL Configuration Management
 

Dernier

Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
MsecMca
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
dollysharma2066
 

Dernier (20)

Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
A Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna MunicipalityA Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna Municipality
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 

The process of software engineering

  • 1. Cisco Confidential 1© 2010 Cisco and/or its affiliates. All rights reserved. The Process of Software Engineering JohnLynch(jlynch2@cisco.com) John Lynch
  • 2. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 2
  • 3. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 3 Communication Communicating complex Ideas Requirements CostAll software has a cost! Software Modelling Quality The true definition of software quality Good /Bad Design Tools Use the available tools! Testing 1. Functional & Non Functional 2. An incredibly comprehensive software design template 3. Symptoms of a good and bad design 4. Test every line of code!
  • 4. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 4
  • 5. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 5 Scenario - John and Dave are software engineers working together on something complicated… John is reviewing Dave’s code. Dave writes loads of code. John hasn’t a notion what Dave’s code is doing but it certainly looks really clever. Its got layers of inheritance and abstraction all over the place. John is almost too embarrassed to ask what its doing but he plucks up the courage to ask Dave how it works. Dave gives John a very flowery overview about ‘polymorphism’, ‘abstraction’ and inter-connecting clouds. John is feeling inadequate. John doesn’t have a clue how the code works but signs off on the review and hopes there never comes a day where he has to take over Dave’s code! John thinks Dave is very clever. Maybe he is but is this scenario good for the company?
  • 6. Cisco Confidential 6© 2010 Cisco and/or its affiliates. All rights reserved. Requirements / User Stories Our Starting Point.
  • 7. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 7 • Do I understand the requirements/user stories? • And do I understand the associated non-functional requirements / user stories? • If not you may just solve the wrong problem OR • You may just solve some of the problem (i.e. 60% of the time it works every time!) 1) What do I have to do? • I understand the requirements; now how am I going to build a solution to satisfy these requirements? 2) How am I going to do it?
  • 8. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 8 SSO CUCM IM&P HA CUCM Jabber ADGroups Etc. SRM PE ICSA GUI System Feature (Theme) Product (Epic) Component (User Story) Etc. XCP DB
  • 9. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 9Cisco Confidential 9Cisco Confidential 9© 2010 Cisco and/or its affiliates. All rights reserved. Software Modelling The Complete Software Design Template
  • 10. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 10 1. Static Model 2. Dynamic Model3. Functional Model Context Diagrams Object Model Diagrams Class Diagrams API Definitions Threading Model Diagrams Etc. Object Interaction Diagrams Sequence Diagrams State Machines Diagrams Activity Diagrams Etc. Detailed Flow Charts Documented Algorithms Etc.
  • 11. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 11 1. Static Model 2. Dynamic Model3. Functional Model Context Diagrams Object Model Diagrams Class Diagrams API Definitions Threading Model Diagrams Etc. Object Interaction Diagrams Sequence Diagrams State Machines Diagrams Activity Diagrams Etc. Detailed Flow Charts Documented Algorithms Etc. Wireframes User Interaction Flows Navigation Model Localization Design - Look and Feel (toolkits, technology etc..) Etc. 4. GUI Model
  • 12. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 12Cisco Confidential 12Cisco Confidential 12© 2010 Cisco and/or its affiliates. All rights reserved. Software Modelling 1. The Static Model
  • 13. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 13 This server architecture view shows the software layers and the major external interfaces. There are over 5 million lines of code in this product!
  • 14. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 14
  • 15. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 15
  • 16. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 16 mtq_worker_ thread_func( ) mtq_worker_ thread_func( ) mtq_worker_ thread_func( ) () ()mtq_worker_ thread_func( ) Jabber MIO thread pool JSM DB thread pool mtq(m->user->q) This is a queue of users mtq’s. The JSM thread pool reads this queue, removes an mtq; processes all the messages on that users mtq. It then it moves on to the next mtq entry. 1) js_mapi_call_async() posts JSM events into a users mtq to be processed in the context of one of the JSM mtq thread pool threads. This method can be called from any thread (mio, JSM threads etc.) 3) swdb_checkout() There is an mtq for each of the db threads. (currently 11 of these) swdb_checkout() will suspend processing of the users mtq; push the DB processing activity on to one of the generic DB mtq’s. One of the DB threads carries out the DB action; un-suspends processing of the users mtq and posts handle or pass to the users mtq. mtq(dbpool generic mtq) This is a queue of dbpool generic mtq’s JSM entry code runs in the Context of the Jabber MIO threads before eventually a call is made to Js_mapi_call_async() to pass processing of the event off to the JSM thread pool. 5) pass()/handle() 2) 4) JSM mtq thread pool XCP Router XMPP packet entry/exit point.
  • 17. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 17Cisco Confidential 17Cisco Confidential 17© 2010 Cisco and/or its affiliates. All rights reserved. Software Modelling 2. The Dynamic Model
  • 18. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 18 See next slide for this exploded flow (layer 3) in SRM! Tracking SRM state changes Tracking PE state changes
  • 19. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 19
  • 20. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 20Cisco Confidential 20Cisco Confidential 20© 2010 Cisco and/or its affiliates. All rights reserved. Software Modelling 3. The Functional Model
  • 21. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 21 • This flow covers the sequence of operations carried out for a Database migration algorithm covering 3K lines of new code
  • 22. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 22Cisco Confidential 22Cisco Confidential 22© 2010 Cisco and/or its affiliates. All rights reserved. Software Modelling 4. The GUI Model
  • 23. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 23 • Provide the user navigation tree/model Navigation Model • Get quick feedback – ensure everyone is on the ‘same page’ Screen Mock-Ups • Icons, graphics, colour schemes, fonts, font sizes, headings etc. Look and Feel • Chrome, IE, Firefox etc.. Browser Support (for Web based UI) • Can UI be isolated for testing? • Are there off the shelf tools available? Testing Strategy Etc.
  • 24. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 24
  • 25. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 25Cisco Confidential 25Cisco Confidential 25© 2010 Cisco and/or its affiliates. All rights reserved. Design Validation
  • 26. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 26 Stage 1 Symptoms • Good Traceability for user stories • All Non functional user stories considered • Easy to understand & quick ramp up for fellow engineers • Docs/wikis not too wordy - pictures are clearer! • Well defined boundaries of responsibility for objects/modules Stage 2 Symptoms • Meets customers expectations! • Reliable, robust & deterministic • Easy to maintain • Easy to extend • Easy to debug • Easy to test • Good overall quality – low bug count!
  • 27. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 27 Unclear Doesn’t meet the customers expectations or requirements! Design lacks clarity Dissatisfied Customers Boundaries of responsibility not well defined Poorly Thought out ! Not obvious how to transition to implementation Difficult to Debug/Test Time is money! Difficult to maintain Buggy Solution Costs escalate Absorbs resources - a Bottomless pit!
  • 28. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 28 • Test every line of code if possible. Test, Test and more Test! • Have you captured all the requirements? • Does it look like it will work? (i.e. gut feeling) • Is it easy to understand? i.e. can you easily and quickly get feedback from peers? • Is there a natural progression from this design to implementation? • Can I take a ‘divide and conquer approach!’ ? • Is Iterative development/ continuous integration possible ? • Can I get quick and continuous feedback during the dev. Process ? • Are there logical test & integration points? / Is it testable? Early Checks
  • 29. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 29 • The name of the class/object, module or component • Does the name make sense? Class • Define the key responsibilities for this object, module, component • Are they functionally grouped/ related? • Are there too few? Too many? Responsibilities • Who talks to this object, module or component? • Who does this object, module or component talk to? Collaborators
  • 30. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 30 2) Design1) US def / Planning 3) Implementation 4) Test /Verification Next iteration New Feature Quality Software = Quality User Stories + Quality Planning + Quality Design + Quality Implementation + Quality Test/Verification Shippable Quality Software!
  • 31. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 31Cisco Confidential 31Cisco Confidential 31© 2010 Cisco and/or its affiliates. All rights reserved. Conclusion Summing it up!
  • 32. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 32 Our goal is clear. Produce software that meets the requirements, is delivered on time (on budget) and of the highest quality. If you can’t draw it you don’t fully understand it. Build in your test strategy from the start. Test all your code. It is our duty to ensure that our software is maintainable. Be crystal clear on your intent. Comment your code well. Comments are free! Be proud of what you write; make your code pretty and easy to read. If you are sitting at your computer and thinking how you are going to do things you probably missed a step (or two or three  ) Quick feedback loops are one of the key ingredients to success. Use the tools available to you. All software has a cost! Quality at every step in the process = Software Quality
  • 33. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 33Cisco Confidential 33Cisco Confidential 33© 2010 Cisco and/or its affiliates. All rights reserved. Thank you for listening!

Notes de l'éditeur

  1. Communication
  2. I like pictures and one of my hobbies is photography. Now I’d like to explain why pictures are an essential tool for engineers. Point 1: They reckon that the earth is about 4.5 billion years old. We have been using language for approximately 50 thousands years. On the evolutionary scale that’s not very long at all. We have apparently descended from fish. Fish are around for 330 million yrs. Fish have eyes and a brain to interpret the images that they see. We have an incredible brain that interprets images that we see which has been fine tuned through millions of years of evolution. So we have been using language for 0.015% as long as we have been processing images. (666 generations : 4.4 Million generations) Consider the every day scenario where you are out playing football with your brother. Your brother is 30meters away and throws the ball to you. You use your stereoscopic vision which gives you depth perception to determine your brother distance from you. You then calculate the trajectory of the ball and the speed of the ball to enable you to move into position to catch that ball. At the perfect moment you bring up your hands and you catch the ball. This all happens in 2-3 seconds Our brains are adapted to process images. They are not very well adapted to process text. During the 3 seconds it take for the ball the shoot from your brother to you how much text or speech do you think you could process? A paragraph; a sentence maybe? Point 2: It is known that one key difference between the elite sporting performers and the rest is that they have impeccable timing and reflexes. Formula 1 drivers, boxers, soccer players, martial artists all have this in common. Their brains visual feedback loop is so adapted that they practically see things in slow motion. Point 3: Language can easily be misinterpreted. Plane crash investigation experts know, for example, that the causes of certain plane crashes is due to miscommunication between the pilots and ground control. The found that a number of planes that crashed in US airspace had south Korean pilots. When the investigated further they found that in all of these cases the pilot had radioed to ground control to say he was running out of fuel. Ground control confirmed that they could not land and to keep their holding pattern. The south Korean pilots were not assertive enough. This had devastating consequences. They put it down to cultural differences. South Korean pilots were too submissive. North American ground control were very assertive/ almost aggressive. Even though they speak the same language their intent is misinterpreted. Point 4: People have a limited vocabulary and many of us speak different languages. Images/pictures are our universal language. This is why I firmly believe that software engineers must use pictures to communicate complex problems and solutions.
  3. The point is if clever software is too clever and too complex for people to maintain, debug or extend then its not a good thing. Clarity is key. Sometimes that translates into keeping it simple! The software you write belongs to the company. It has a cost associated with it (maintenance, quality etc.). Do companies understand how much your software costs them? Do you understand how much your software costs your company?
  4. This can fit in the static model or the dynamic. Static Qualities – My process consists of these threads/thread pools and these queues. Dynamic Qualities – Overlay interaction or msg/packet flow to show how threads interact!
  5. The dynamic model captures/defines how your software (objects/components/modules) interacts and behaves over time. It captures the dynamic behavior of the software. (e.g. When event A occurs actions 1 and 3 are carried out)
  6. The dynamic model captures/defines how your software (objects/components/modules) interacts and behaves over time. It captures the dynamic behavior of the software. (e.g. When event A occurs actions 1 and 3 are carried out)
  7. The dynamic model captures/defines how your software (objects/components/modules) interacts and behaves over time. It captures the dynamic behavior of the software. (e.g. When event A occurs actions 1 and 3 are carried out)
  8. Doesn’t meet all requirements! or misinterpreted requirements. Difficult to understand or unclear. Boundaries of responsibility are not well defined. Some modules doing too much. Responsibilities not functionally grouped. Not obvious how to transition to implementation. Difficult to maintain Difficult to ramp people Difficult to extend (simple modifications/additions difficult) Difficult and time consuming to debug Difficult to test. Not obvious. Test points not considered. End result is poor. Buggy Solution. Absorbs resources. A Bottomless pit!
  9. Any ‘weakness’ in the system will impact overall quality. Quick and accurate feedback loops are essential at every stage in the process. A central theme in maintaining quality throughout the chain is to have very strong communication! (i.e. Use tools that provide visual feedback (pictures) where possible) Many feedback points: Design/test review IDE gives you syntax highlighting feedback, debug ability etc. Building the code we get feedback (compiler warnings/errors) Static analysis feedback Unit testing/ sub-system testing, emulation (test results, coding errors, code coverage etc.) Tools like valgrind, jprofiler, jtest can give quick accurate feedback. The quicker and more accurate the feedback loop the better. This leads to better productivity and better quality. e.g. Writing the code, building it and installing it in order to test it is a slow feedback loop with limited feedback!