SlideShare a Scribd company logo
Eng. Khaled Al Habache
Do you remember the old waterfall model? The  waterfall model  is a  sequential  software development process, in which progress is seen as flowing steadily downwards (like a  waterfall ) through the phases of Conception, Initiation,  Analysis ,  Design  (validation), Construction,  Testing  and  maintenance .
 
Wide criticism: It is impossible, for any non-trivial project, to get one phase of a software product's lifecycle perfected before moving on to the next phases and learning from them.  Clients may not be aware of exactly what requirements they want before they see a working prototype and can comment upon it; they may change their requirements constantly, and program designers and implementers may have little control over this.
 
Agile software development  refers to a group of  software development methodologies  based on iterative development, where requirements and solutions evolve through collaboration between self-organizing  cross-functional teams .
 
Agile methods break tasks into small increments with minimal planning, and do not directly involve long-term planning. Iterations are short time frames that typically last from one to four weeks. Each iteration involves a team working through a full software development cycle including planning, requirements analysis, design, coding,  unit testing , and  acceptance testing . The goal of an iteration is to have an available release (with minimal bugs) at the end of each iteration.
Minimize overall risk by adapting to changes quickly. The ultimate goal is to  REDUCE COST .
Maintain the Theory of the Code : Great teams have a shared understanding of how the software system represents the world.  Therefore they know where to modify the code when a requirement change occurs. They know exactly where to go hunting for a bug that has been found. They communicate well with each other about the world and the software.
Build Less: It has been shown that we build many more features than are actually used.  In fact only about 20% of functionality we build is used often or always. More than 60% of all functionality built in software is rarely or never used!
 
Pay Less for Bug Fixes: Typically, anywhere between 60%-90% of software cost goes into the maintenance phase.  Most of our money goes into keeping the software alive and useful for our clients after the initial build.
Pay Less for Changes: The only thing constant in today’s software market is change. If we can embrace change, plan for it, and reduce its cost when it eventually happens we can make significant savings.
Agile development => Set of chosen practices => Reduce cost => 1- Maintain code theory. 2- Build less. 3- Pay less for bugs. 4- Pay less for changes
 
Simple design meets the requirements for the current iteration and no more. Simple design reduces cost because you build less code to meet the requirements and you maintain less code afterwards.  Simple designs are easier to build, understand, and maintain. Simple design<=> Build less
The practice of Refactoring code changes the structure of the code while maintaining its behavior. Costs are reduced because continuous refactoring keeps the design from degrading over time, ensuring that the code is easy to understand, maintain, and change. Refactoring <=> Pay less for change
Automated developer tests are a set of tests that are written and maintained by developers to reduce the cost of finding and fixing defects—thereby improving code quality—and to enable the change of the design as requirements are addressed incrementally. Automated developer tests reduce the cost of software development by creating a safety-net of tests that catch bugs early and enabling the incremental change of design. Have a look at TDD or BDD. Developer Tests <=> Pay less for bugs fixing
Ruby was conceived on February 24, 1993 by  Yukihiro Matsumoto (Matz) who wished to create a new language that balanced functional programming with imperative programming. According to Matsumoto he &quot;wanted a scripting language that was more powerful than Perl, and more object-oriented than Python. That's why I decided to design my own language&quot;.
Selecting even numbers from a range: (1..25).select {|x| x % 2 == 0 }  #=>  [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]
Cumulative sum: [1,2,3,4] => [1,3,6,10] sum = 0 [1,2,3,4].map{|x| sum += x}   #=> [1,3,6,10]
Ruby  is a  dynamic ,  reflective , general purpose  object-oriented programming language  that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was initially developed and designed by  Yukihiro &quot;Matz&quot; Matsumoto . It is based on  Perl ,  Smalltalk ,  Eiffel ,  Ada , and  Lisp . Ruby supports multiple  programming paradigms , including  functional ,  object oriented ,  imperative  and  reflective . It also has a  dynamic type  system and automatic  memory management ; it is therefore similar in varying respects to  Python ,  Perl ,  Lisp ,  Dylan , and  CLU .
Dynamic programming language  is a term used broadly in computer science to describe a class of  high-level programming languages  that execute at runtime many common behaviors that could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system, all during program execution.
Eval : Evaluating code on runtime. eval “x=1; x+=5” #=> 6 instance_eval, class_eval Higher order functions : Passing functions as arguments. In Ruby we pass blocks (anonymous functions)  (1..25).select {|x| x % 2 == 0 }  Reflection : Modifying program structure and behavior; treating code like data.
Monkey patching: Example: Sum array values class Array   def sum   self.inject{|sum,current| sum+current }   end end [1,5,7,8].sum #=> 21
In computer science,  reflection  is the process by which a computer program can observe and modify its own structure and behavior. Ruby has a very wide set of methods for introspection and reflection.
class Foo   def hi   puts “hi”   end    def bye   puts “bye”   end end # Introspection API Foo.new .methods(false)  #=> [“hi”,”bye”]
class Foo end f = Foo.new f.methods(false) #=>[] f.define_method(:hi) { puts “hello world!&quot; }  f.methods(false) #=>[“hi”] f.hi #=> hello world!
Ruby’s attr_accessor is an example of Ruby’s reflection use: class Foo attr_accessor :name # getter # def name ; @name ; end # setter # def name=(sn); @name = sn; end end
Everything is object even null values! nil.class #=> NilClass This is called Unified Object Model UOM. Cool, you don’t have to think of primitive and reference values, everything is an object and has its methods. Treating everything as an object will extend the language dynamicity to unlimited scopes. You can treat methods as objects as well.
Everything is evaluated as an expression in Ruby. Example:  You can do this: if  num == &quot;one&quot;  then  val = 1 elsif  num == &quot;two&quot;  then  val = 2 else   then  val = 3  end But this is better: val =  if  num == &quot;one&quot;  then  1  elsif  num == &quot;two&quot;  then  2 else  3  end
Methods are higher order functions; you can pass code blocks to methods, this makes you focus on the ‘what’ part instead of the ‘how’ one of your problem. Example: selecting even numbers from a range: Traditional imperative way:   res = []   input = 1..25   for  x in input    res <<  x if x % 2 == 0   end Functional way:    res = (1..25).select{|x| x % 2 == 0} How about odd numbers?    res = (1..25).select{|x| x % 2 > 0}
Functional programming emphasize immutability(pure methods) thus  no side effects!   s = &quot;hello&quot; #=> &quot;hello“   s2 = s.upcase #=> &quot;HELLO“    puts s.upcase! #=> &quot;HELLO“    puts s , s2 #=> &quot;HELLO“, “hello”
Ruby community embraces Test Driven Development, and recently the more recent type of it called Behavior Driven Development BDD. TDD or BDD => Automated test suit => reduce the cost of finding and fixing defects => improving code quality => Productivity    reduce cost
Remember: Agile development => reduce cost. Ruby code is at least 50% more concise than code written in other languages like Java, which means write less and get the same => productivity. Having less code means less bugs to fix and less code to maintain(refactor) => productivity. Ruby code is so readable, Ruby follows the principle of least surprise(POLS).  Readable code means self documenting => productivity.  TDD – BDD => improving code quality => Productivity
A Domain-specific language(DSL) is a computer language that’s targeted to a particular kind of problem, rather than a general purpose language that’s aimed at any kind of software problem. Regular expressions and CSS are 2 examples of DSLs. Any software language needs a parser and an interpreter(or compiler or a mix), but in DSLs, we have 2 types: external ones which need parsers and interpreters, and internal ones which rely on the hosting language power to give the feel of a particular language, and thus they don’t require their own parsers and they use the language’s interpreter.
 
 
ActiveRecord ORM: Traditional: user = User.find(:conditions=>[“name=? and age = ? ”, “khelll”, 18]) Cool: user = User.find_by_name_and_age(“khelll”,26)
Ruby is used in almost all fields. The most common use is RubyOnRails or RoR. RoR is a inspiring web framework that was implemented in almost all living languages. RoR is used by yellowpages.com and twitter.com. Ruby is used by system admins as it’s easier to write than shell scripts. Ruby is used in telecomunication systems.
TIOBE .com
indeed.com
CRuby, the official Ruby implementation. JRuby, Java based implementation that runs on JVM, it integrates Java to be used with Ruby. IronRuby, .Net implementation.
Deep thanks!

More Related Content

What's hot (20)

OO Design and Design Patterns in C++
OO Design and Design Patterns in C++ OO Design and Design Patterns in C++
OO Design and Design Patterns in C++
Ganesh Samarthyam
 
Prgramming paradigms
Prgramming paradigmsPrgramming paradigms
Prgramming paradigms
Anirudh Chauhan
 
Paradigms
ParadigmsParadigms
Paradigms
Edward Blurock
 
Coding vs programming
Coding vs programmingCoding vs programming
Coding vs programming
Aman Kumar
 
Imperative programming
Imperative programmingImperative programming
Imperative programming
Edward Blurock
 
Programming Languages
Programming LanguagesProgramming Languages
Programming Languages
Edward Blurock
 
Programming Paradigms
Programming ParadigmsProgramming Paradigms
Programming Paradigms
Janeve George
 
Introduction to programming c
Introduction to programming cIntroduction to programming c
Introduction to programming c
Md. Rakibuzzaman Khan Pathan
 
Chapter 5-programming
Chapter 5-programmingChapter 5-programming
Chapter 5-programming
Aten Kecik
 
Programming Paradigm & Languages
Programming Paradigm & LanguagesProgramming Paradigm & Languages
Programming Paradigm & Languages
Gaditek
 
Mcs lec2
Mcs lec2Mcs lec2
Mcs lec2
Faiza Gull
 
Programming in Java: Getting Started
Programming in Java: Getting StartedProgramming in Java: Getting Started
Programming in Java: Getting Started
Martin Chapman
 
C Language
C LanguageC Language
C Language
Syed Zaid Irshad
 
Quality metrics and angular js applications
Quality metrics and angular js applicationsQuality metrics and angular js applications
Quality metrics and angular js applications
nadeembtech
 
Programming Paradigms
Programming ParadigmsProgramming Paradigms
Programming Paradigms
Directi Group
 
Code quality
Code qualityCode quality
Code quality
Provectus
 
Programming paradigm
Programming paradigmProgramming paradigm
Programming paradigm
busyking03
 
SD & D Types of programming language
SD & D Types of programming languageSD & D Types of programming language
SD & D Types of programming language
Forrester High School
 
SD & D Implementation
SD & D ImplementationSD & D Implementation
SD & D Implementation
Forrester High School
 
Mark asoi ppt
Mark asoi pptMark asoi ppt
Mark asoi ppt
mark-asoi
 
OO Design and Design Patterns in C++
OO Design and Design Patterns in C++ OO Design and Design Patterns in C++
OO Design and Design Patterns in C++
Ganesh Samarthyam
 
Coding vs programming
Coding vs programmingCoding vs programming
Coding vs programming
Aman Kumar
 
Imperative programming
Imperative programmingImperative programming
Imperative programming
Edward Blurock
 
Programming Paradigms
Programming ParadigmsProgramming Paradigms
Programming Paradigms
Janeve George
 
Chapter 5-programming
Chapter 5-programmingChapter 5-programming
Chapter 5-programming
Aten Kecik
 
Programming Paradigm & Languages
Programming Paradigm & LanguagesProgramming Paradigm & Languages
Programming Paradigm & Languages
Gaditek
 
Programming in Java: Getting Started
Programming in Java: Getting StartedProgramming in Java: Getting Started
Programming in Java: Getting Started
Martin Chapman
 
Quality metrics and angular js applications
Quality metrics and angular js applicationsQuality metrics and angular js applications
Quality metrics and angular js applications
nadeembtech
 
Programming Paradigms
Programming ParadigmsProgramming Paradigms
Programming Paradigms
Directi Group
 
Code quality
Code qualityCode quality
Code quality
Provectus
 
Programming paradigm
Programming paradigmProgramming paradigm
Programming paradigm
busyking03
 
SD & D Types of programming language
SD & D Types of programming languageSD & D Types of programming language
SD & D Types of programming language
Forrester High School
 
Mark asoi ppt
Mark asoi pptMark asoi ppt
Mark asoi ppt
mark-asoi
 

Similar to Agile development with Ruby (20)

L5555555555555555555555 Agile Scrum Framework.pdf
L5555555555555555555555 Agile Scrum Framework.pdfL5555555555555555555555 Agile Scrum Framework.pdf
L5555555555555555555555 Agile Scrum Framework.pdf
rahulprasad894389
 
SWE-401 - 9. Software Implementation
SWE-401 - 9. Software ImplementationSWE-401 - 9. Software Implementation
SWE-401 - 9. Software Implementation
ghayour abbas
 
9. Software Implementation
9. Software Implementation9. Software Implementation
9. Software Implementation
ghayour abbas
 
PCCF UNIT 1.pptx
PCCF UNIT 1.pptxPCCF UNIT 1.pptx
PCCF UNIT 1.pptx
DivyaKS12
 
Programming
ProgrammingProgramming
Programming
vanesa4ab
 
Software development slides
Software development slidesSoftware development slides
Software development slides
iarthur
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
rupeshchanchal
 
Programming C ppt for learning foundations
Programming C ppt for learning foundationsProgramming C ppt for learning foundations
Programming C ppt for learning foundations
ssuser65733f
 
Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails Introduction
Gustavo Andres Brey
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
jackcrews
 
Put to the Test
Put to the TestPut to the Test
Put to the Test
Kevlin Henney
 
Test Drive Dirven Driver HAHAahhaha.pptx
Test Drive Dirven Driver HAHAahhaha.pptxTest Drive Dirven Driver HAHAahhaha.pptx
Test Drive Dirven Driver HAHAahhaha.pptx
findwaytocom
 
agile refactoring and integration techniques.pdf
agile refactoring and integration techniques.pdfagile refactoring and integration techniques.pdf
agile refactoring and integration techniques.pdf
shreyassoni7
 
Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
Ryan Polk
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answers
HopeTutors1
 
Periodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and PracticesPeriodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and Practices
Jérôme Kehrli
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
Utkarsh Khare
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
FarjanaAhmed3
 
Software Metrics Course chapter 5 at Bahir Dar University
Software Metrics Course chapter 5 at Bahir Dar UniversitySoftware Metrics Course chapter 5 at Bahir Dar University
Software Metrics Course chapter 5 at Bahir Dar University
ethiobahirdarhotel
 
Introduction to programming language (basic)
Introduction to programming language (basic)Introduction to programming language (basic)
Introduction to programming language (basic)
nharsh2308
 
L5555555555555555555555 Agile Scrum Framework.pdf
L5555555555555555555555 Agile Scrum Framework.pdfL5555555555555555555555 Agile Scrum Framework.pdf
L5555555555555555555555 Agile Scrum Framework.pdf
rahulprasad894389
 
SWE-401 - 9. Software Implementation
SWE-401 - 9. Software ImplementationSWE-401 - 9. Software Implementation
SWE-401 - 9. Software Implementation
ghayour abbas
 
9. Software Implementation
9. Software Implementation9. Software Implementation
9. Software Implementation
ghayour abbas
 
PCCF UNIT 1.pptx
PCCF UNIT 1.pptxPCCF UNIT 1.pptx
PCCF UNIT 1.pptx
DivyaKS12
 
Software development slides
Software development slidesSoftware development slides
Software development slides
iarthur
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
rupeshchanchal
 
Programming C ppt for learning foundations
Programming C ppt for learning foundationsProgramming C ppt for learning foundations
Programming C ppt for learning foundations
ssuser65733f
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
jackcrews
 
Test Drive Dirven Driver HAHAahhaha.pptx
Test Drive Dirven Driver HAHAahhaha.pptxTest Drive Dirven Driver HAHAahhaha.pptx
Test Drive Dirven Driver HAHAahhaha.pptx
findwaytocom
 
agile refactoring and integration techniques.pdf
agile refactoring and integration techniques.pdfagile refactoring and integration techniques.pdf
agile refactoring and integration techniques.pdf
shreyassoni7
 
Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
Ryan Polk
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answers
HopeTutors1
 
Periodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and PracticesPeriodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and Practices
Jérôme Kehrli
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
Utkarsh Khare
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
FarjanaAhmed3
 
Software Metrics Course chapter 5 at Bahir Dar University
Software Metrics Course chapter 5 at Bahir Dar UniversitySoftware Metrics Course chapter 5 at Bahir Dar University
Software Metrics Course chapter 5 at Bahir Dar University
ethiobahirdarhotel
 
Introduction to programming language (basic)
Introduction to programming language (basic)Introduction to programming language (basic)
Introduction to programming language (basic)
nharsh2308
 
Ad

Recently uploaded (20)

Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Infrassist Technologies Pvt. Ltd.
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry ReportThe State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdfCrypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and ImplementationAI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
Christine Shepherd
 
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven InfrastructureNo-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
Safe Software
 
Domino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use CasesDomino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use Cases
panagenda
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI ProfessionalOracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
Enabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FMEEnabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FME
Safe Software
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdfArtificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy SurveyTrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc
 
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Impelsys Inc.
 
Cisco ISE Performance, Scalability and Best Practices.pdf
Cisco ISE Performance, Scalability and Best Practices.pdfCisco ISE Performance, Scalability and Best Practices.pdf
Cisco ISE Performance, Scalability and Best Practices.pdf
superdpz
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdfEdge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free DownloadViral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Puppy jhon
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
Trends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary MeekerTrends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary Meeker
Clive Dickens
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Infrassist Technologies Pvt. Ltd.
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry ReportThe State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdfCrypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and ImplementationAI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
Christine Shepherd
 
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven InfrastructureNo-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
Safe Software
 
Domino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use CasesDomino IQ – What to Expect, First Steps and Use Cases
Domino IQ – What to Expect, First Steps and Use Cases
panagenda
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI ProfessionalOracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
Enabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FMEEnabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FME
Safe Software
 
Your startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean accountYour startup on AWS - How to architect and maintain a Lean and Mean account
Your startup on AWS - How to architect and maintain a Lean and Mean account
angelo60207
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdfArtificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy SurveyTrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc
 
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Impelsys Inc.
 
Cisco ISE Performance, Scalability and Best Practices.pdf
Cisco ISE Performance, Scalability and Best Practices.pdfCisco ISE Performance, Scalability and Best Practices.pdf
Cisco ISE Performance, Scalability and Best Practices.pdf
superdpz
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdfEdge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free DownloadViral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Puppy jhon
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
Trends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary MeekerTrends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary Meeker
Clive Dickens
 
Ad

Agile development with Ruby

  • 1. Eng. Khaled Al Habache
  • 2. Do you remember the old waterfall model? The waterfall model is a sequential software development process, in which progress is seen as flowing steadily downwards (like a waterfall ) through the phases of Conception, Initiation, Analysis , Design (validation), Construction, Testing and maintenance .
  • 3.  
  • 4. Wide criticism: It is impossible, for any non-trivial project, to get one phase of a software product's lifecycle perfected before moving on to the next phases and learning from them. Clients may not be aware of exactly what requirements they want before they see a working prototype and can comment upon it; they may change their requirements constantly, and program designers and implementers may have little control over this.
  • 5.  
  • 6. Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams .
  • 7.  
  • 8. Agile methods break tasks into small increments with minimal planning, and do not directly involve long-term planning. Iterations are short time frames that typically last from one to four weeks. Each iteration involves a team working through a full software development cycle including planning, requirements analysis, design, coding, unit testing , and acceptance testing . The goal of an iteration is to have an available release (with minimal bugs) at the end of each iteration.
  • 9. Minimize overall risk by adapting to changes quickly. The ultimate goal is to REDUCE COST .
  • 10. Maintain the Theory of the Code : Great teams have a shared understanding of how the software system represents the world. Therefore they know where to modify the code when a requirement change occurs. They know exactly where to go hunting for a bug that has been found. They communicate well with each other about the world and the software.
  • 11. Build Less: It has been shown that we build many more features than are actually used. In fact only about 20% of functionality we build is used often or always. More than 60% of all functionality built in software is rarely or never used!
  • 12.  
  • 13. Pay Less for Bug Fixes: Typically, anywhere between 60%-90% of software cost goes into the maintenance phase. Most of our money goes into keeping the software alive and useful for our clients after the initial build.
  • 14. Pay Less for Changes: The only thing constant in today’s software market is change. If we can embrace change, plan for it, and reduce its cost when it eventually happens we can make significant savings.
  • 15. Agile development => Set of chosen practices => Reduce cost => 1- Maintain code theory. 2- Build less. 3- Pay less for bugs. 4- Pay less for changes
  • 16.  
  • 17. Simple design meets the requirements for the current iteration and no more. Simple design reduces cost because you build less code to meet the requirements and you maintain less code afterwards. Simple designs are easier to build, understand, and maintain. Simple design<=> Build less
  • 18. The practice of Refactoring code changes the structure of the code while maintaining its behavior. Costs are reduced because continuous refactoring keeps the design from degrading over time, ensuring that the code is easy to understand, maintain, and change. Refactoring <=> Pay less for change
  • 19. Automated developer tests are a set of tests that are written and maintained by developers to reduce the cost of finding and fixing defects—thereby improving code quality—and to enable the change of the design as requirements are addressed incrementally. Automated developer tests reduce the cost of software development by creating a safety-net of tests that catch bugs early and enabling the incremental change of design. Have a look at TDD or BDD. Developer Tests <=> Pay less for bugs fixing
  • 20. Ruby was conceived on February 24, 1993 by Yukihiro Matsumoto (Matz) who wished to create a new language that balanced functional programming with imperative programming. According to Matsumoto he &quot;wanted a scripting language that was more powerful than Perl, and more object-oriented than Python. That's why I decided to design my own language&quot;.
  • 21. Selecting even numbers from a range: (1..25).select {|x| x % 2 == 0 } #=> [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]
  • 22. Cumulative sum: [1,2,3,4] => [1,3,6,10] sum = 0 [1,2,3,4].map{|x| sum += x} #=> [1,3,6,10]
  • 23. Ruby is a dynamic , reflective , general purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was initially developed and designed by Yukihiro &quot;Matz&quot; Matsumoto . It is based on Perl , Smalltalk , Eiffel , Ada , and Lisp . Ruby supports multiple programming paradigms , including functional , object oriented , imperative and reflective . It also has a dynamic type system and automatic memory management ; it is therefore similar in varying respects to Python , Perl , Lisp , Dylan , and CLU .
  • 24. Dynamic programming language is a term used broadly in computer science to describe a class of high-level programming languages that execute at runtime many common behaviors that could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system, all during program execution.
  • 25. Eval : Evaluating code on runtime. eval “x=1; x+=5” #=> 6 instance_eval, class_eval Higher order functions : Passing functions as arguments. In Ruby we pass blocks (anonymous functions) (1..25).select {|x| x % 2 == 0 } Reflection : Modifying program structure and behavior; treating code like data.
  • 26. Monkey patching: Example: Sum array values class Array def sum self.inject{|sum,current| sum+current } end end [1,5,7,8].sum #=> 21
  • 27. In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior. Ruby has a very wide set of methods for introspection and reflection.
  • 28. class Foo def hi puts “hi” end def bye puts “bye” end end # Introspection API Foo.new .methods(false) #=> [“hi”,”bye”]
  • 29. class Foo end f = Foo.new f.methods(false) #=>[] f.define_method(:hi) { puts “hello world!&quot; } f.methods(false) #=>[“hi”] f.hi #=> hello world!
  • 30. Ruby’s attr_accessor is an example of Ruby’s reflection use: class Foo attr_accessor :name # getter # def name ; @name ; end # setter # def name=(sn); @name = sn; end end
  • 31. Everything is object even null values! nil.class #=> NilClass This is called Unified Object Model UOM. Cool, you don’t have to think of primitive and reference values, everything is an object and has its methods. Treating everything as an object will extend the language dynamicity to unlimited scopes. You can treat methods as objects as well.
  • 32. Everything is evaluated as an expression in Ruby. Example: You can do this: if num == &quot;one&quot; then val = 1 elsif num == &quot;two&quot; then val = 2 else then val = 3 end But this is better: val = if num == &quot;one&quot; then 1 elsif num == &quot;two&quot; then 2 else 3 end
  • 33. Methods are higher order functions; you can pass code blocks to methods, this makes you focus on the ‘what’ part instead of the ‘how’ one of your problem. Example: selecting even numbers from a range: Traditional imperative way: res = [] input = 1..25 for x in input res << x if x % 2 == 0 end Functional way: res = (1..25).select{|x| x % 2 == 0} How about odd numbers? res = (1..25).select{|x| x % 2 > 0}
  • 34. Functional programming emphasize immutability(pure methods) thus no side effects! s = &quot;hello&quot; #=> &quot;hello“ s2 = s.upcase #=> &quot;HELLO“ puts s.upcase! #=> &quot;HELLO“ puts s , s2 #=> &quot;HELLO“, “hello”
  • 35. Ruby community embraces Test Driven Development, and recently the more recent type of it called Behavior Driven Development BDD. TDD or BDD => Automated test suit => reduce the cost of finding and fixing defects => improving code quality => Productivity  reduce cost
  • 36. Remember: Agile development => reduce cost. Ruby code is at least 50% more concise than code written in other languages like Java, which means write less and get the same => productivity. Having less code means less bugs to fix and less code to maintain(refactor) => productivity. Ruby code is so readable, Ruby follows the principle of least surprise(POLS). Readable code means self documenting => productivity. TDD – BDD => improving code quality => Productivity
  • 37. A Domain-specific language(DSL) is a computer language that’s targeted to a particular kind of problem, rather than a general purpose language that’s aimed at any kind of software problem. Regular expressions and CSS are 2 examples of DSLs. Any software language needs a parser and an interpreter(or compiler or a mix), but in DSLs, we have 2 types: external ones which need parsers and interpreters, and internal ones which rely on the hosting language power to give the feel of a particular language, and thus they don’t require their own parsers and they use the language’s interpreter.
  • 38.  
  • 39.  
  • 40. ActiveRecord ORM: Traditional: user = User.find(:conditions=>[“name=? and age = ? ”, “khelll”, 18]) Cool: user = User.find_by_name_and_age(“khelll”,26)
  • 41. Ruby is used in almost all fields. The most common use is RubyOnRails or RoR. RoR is a inspiring web framework that was implemented in almost all living languages. RoR is used by yellowpages.com and twitter.com. Ruby is used by system admins as it’s easier to write than shell scripts. Ruby is used in telecomunication systems.
  • 44. CRuby, the official Ruby implementation. JRuby, Java based implementation that runs on JVM, it integrates Java to be used with Ruby. IronRuby, .Net implementation.