Slide 1

Slide 1 text

Yazılım Geliştirme ama gerçek dünyada

Slide 2

Slide 2 text

Gündemimiz •Development Methodologies •Agile Software Development •Project Management •DevOps (Developer Operations) •Extreme Programming •Important Extreme Programming Techniques

Slide 3

Slide 3 text

Waterfall •Winston W. Royce (1970) •Sequential •Originated from Manufacturing and Construction •Didn’t Work as Winston suggested http://en.wikipedia.org/wiki/Waterfall_model

Slide 4

Slide 4 text

Waterfall

Slide 5

Slide 5 text

Waterfall http://3.bp.blogspot.com/_ks0a9nZwy_4/S81GVxOsNaI/AAAAAAAAA00/daRVEi5IK_U/s1600/Waterfall_SDLC.jpg

Slide 6

Slide 6 text

Result http://fc09.deviantart.net/fs71/i/2012/190/9/4/francella_meme___oh_god_just_kill_me_right_now_by_foreverzerodragon-d56mytj.jpg

Slide 7

Slide 7 text

RUP http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process •IBM Rapid Unified Process •Invented by Rational Software •Multiple Phases with Iterations •Didn’t Work as planned •I actually haven’t seen anything created by IBM that worked

Slide 8

Slide 8 text

RUP http://upload.wikimedia.org/wikipedia/commons/0/05/Development-iterative.gif

Slide 9

Slide 9 text

RUP http://3.bp.blogspot.com/-EMH91oMv15U/T98YsaTM8hI/AAAAAAAACwc/hiIkrrfdCcM/s1600/5733303422_9b03ce1258_z.jpg

Slide 10

Slide 10 text

Agile Software Development •Is it any different? Really? •Who is behind it? •It’s not TDD, nor Continuous Integration, nor XP

Slide 11

Slide 11 text

Agile Software Development http://www.people10.com/sites/default/files/imce/People10-Agile-Delivery-Approach-new.png

Slide 12

Slide 12 text

Agile Manifesto •Individuals and interactions over processes and tools •Working software over comprehensive documentation •Customer collaboration over contract negotiation •Responding to change over following a plan http://agilemanifesto.org/

Slide 13

Slide 13 text

Principles •Our highest priority is to satisfy the customer through early and continuous delivery of valuable software •Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage •Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale http://agilemanifesto.org/principles.html

Slide 14

Slide 14 text

Principles http://www.commonplaces.com/sites/commonplaces.com/files/agile_method-01.png Mini Waterfalls

Slide 15

Slide 15 text

Principles •Business people and developers must work together daily throughout the project •Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done •The most efficient and effective method of conveying information to and within a development team is face- to-face conversation http://agilemanifesto.org/principles.html

Slide 16

Slide 16 text

Principles •Working software is the primary measure of progress •Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely •Continuous attention to technical excellence and good design enhances agility •Simplicity--the art of maximizing the amount of work not done--is essential http://agilemanifesto.org/principles.html

Slide 17

Slide 17 text

Principles •The best architectures, requirements, and designs emerge from self-organizing teams •At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly http://agilemanifesto.org/principles.html

Slide 18

Slide 18 text

PM Implementations •Infamous Scrum •Kanban •Lean •Others (Scrum-ban, etc)

Slide 19

Slide 19 text

DevOps •It’s all about Continuous Delivery •Working Software •Collaboration of People •Convergence of Processes •Creation and Exploitation of Tools

Slide 20

Slide 20 text

Extreme Programming •Agile without XP has no meaning •It’s a culture and discipline •Requires passionate developers •Some practices overlaps with Agile principles

Slide 21

Slide 21 text

Extreme Programming •Continuous Build, Continuous Integration, Continuous Deployment, Continuous Delivery •TDD, TFD, BDD, ATDD •Pair Programming, Code Reviews, Peer Reviews •Incremental Design, Evolutionary Architecture •User Stories, Information Dashboards, Iterative Development, Ten-Minute Build, etc..

Slide 22

Slide 22 text

Continuous what? •Continuous Build •Continuous Integration •Continuous Deployment •Continuous Delivery

Slide 23

Slide 23 text

Testing in XP •What are these terms? TDD, TFD, BDD, ATDD.. •Different Tests •Unit and Integration Tests •Functional and Acceptance Tests •Regression and Smoke Tests •Performance and Load Tests

Slide 24

Slide 24 text

Test-Driven Design •Opps, Test-Driven Development? •How do you want to use the code you develop? •Tests are side-effects •Legacy-Code and TDD?

Slide 25

Slide 25 text

Test-Driven Design

Slide 26

Slide 26 text

Pair Programming •You are not that SMART? Trust me! •No seriously, you are not that SMART!!! •Knowledge Sharing and Indispensable team members •Navigator and Driver •Ping-Pong •Remote Pairing?

Slide 27

Slide 27 text

What About Architecture •SOLID Principles •Single Responsibility •Open/Close •Liskov •Interface Segregation •Dependency Injection (Inversion of Controls) http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

Slide 28

Slide 28 text

What About Architecture •DRY •YAGNI •Tell Don’t Ask •And Good Citizen

Slide 29

Slide 29 text

Good Citizen •Keep consistent state all times •No static fields •Never expect or return null •Fail fast •Constructor or method delegations •Prefer immutability http://picocontainer.codehaus.org/patterns.html

Slide 30

Slide 30 text

Zen of Python

Slide 31

Slide 31 text

Q/A