39
Software Development with Agile Methodologies ELMOZAMIL ELAMIR [email protected] @ELMOZAMIL HTTPS://WWW.LINKEDIN.COM/IN/ELMOZAMIL-ELAMIR-AB553150 1/10/2016 WWW.MZTECH.INFO JAN. 2016 1

Software development with agile methodologies

Embed Size (px)

Citation preview

Page 1: Software development with agile methodologies

Software Development with Agile Methodologies

E L M O Z A M I L E L A M I R

C O N T A C T @ M Z T E C H . I N F O

@ E L M O Z A M I L

H T T P S : / / W W W . L I N K E D I N . C O M / I N / E L M O Z A M I L - E L A M I R - A B 5 5 3 1 5 0

1/10/2016 WWW.MZTECH.INFO JAN. 2016 1

Page 2: Software development with agile methodologies

AboutSoftware engineer with experience for more than 5 years.

MSc holder in software engineering.

MCP, MCTS, MCITP, MCSA, MCSE, MCSD, ITIL certified and more. Blogger, contributor in different online forums.

Author of Cloud Software Development Life Cycle (Cloud SDLC) book. Co-author of Concurrency control in distributed database.

Interested in software engineering and database.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 2

Page 3: Software development with agile methodologies

OutlineIntroduction

Rapid Business Change

Coping with Change

Software & Software Engineering

Software Engineering Methodologies

Agile Development

Plan-Driven Vs Value-Driven

Agile Software Development in Business

Database Agility

Mobile Game Development

Agile Developer Skills

Tools

What’s Next

Case Study

1/10/2016 WWW.MZTECH.INFO JAN. 2016 3

Page 4: Software development with agile methodologies

IntroductionSoftware Development has become one of the world’s most important technologies.

Developers produce intangible ideas not a physical product so our methods all had a primary focus on managing software requirement.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 4

Page 5: Software development with agile methodologies

Rapid Business ChangeIn a modern economy, market conditions change rapidly.

Governmental policies and procedures

BBC News interview (Jan 19th, 2012) with Yale Professor Richard Foster predicts that (by 2020, more than three-quarters of the S&P 500 will be companies that we have not heard of yet”.

Nokia*.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 5

Page 6: Software development with agile methodologies

Coping with ChangeRapid development and delivery

In a fast-moving business environment, by the time the software is available for use, the original reason for its procurement may have changed.

Focus is on quickly bringing product to market.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 6

Page 7: Software development with agile methodologies

SoftwareSoftware evolve over time.

Almost everyone in the industry uses software that build and support by software engineers, either use it directly or indirectly, so we all affected by it.

It is important because it affects nearly every aspect of our lives and has become necessary in our commerce, our culture, and our everyday activities.

Software is instructions (computer programs) that when executed provide desired features, functions, and performance; data structures that enable the programs to adequately manipulate information, and descriptive information in both hard copy and virtual forms that describes the operation and use of the programs[1]

1/10/2016 WWW.MZTECH.INFO JAN. 2016 7

Page 8: Software development with agile methodologies

Software EngineeringSoftware engineering enables us to build complex systems in a timely manner with high qualityand acceptable cost.

Computer software continues to be the single most important technology on the world stage.

Software engineering is (1) the application of a systematic, disciplined, quantifiable approach tothe development, operation, and maintenance of software; that is the application ofengineering to software. (2) The study of approaches as in (1). [IEEE definition]

1/10/2016 WWW.MZTECH.INFO JAN. 2016 8

Page 9: Software development with agile methodologies

SE MethodologiesWaterfall

1/10/2016 WWW.MZTECH.INFO JAN. 2016 9

Requirements

Design

Implementation

Verification

Deployment

Page 10: Software development with agile methodologies

SE Methodologies Cont…

Adaptive (Agile)◦ SCRUM.

◦ XP eXtreme Programming.

◦ FDD: Feature-Driven Development.

◦ Lean.

◦ Crystal Methods.

◦ … and manay.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 10

Page 11: Software development with agile methodologies

Agile DevelopmentNot being too attached to your initial idea of what the project will look like and to be ready forchange and to refactor.

Agile software engineering combines a philosophy and a set of development guidelines.

To be agile you need to put the agile values and principles into practice.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 11

Page 12: Software development with agile methodologies

Manifesto for Agile Software Development

Written in 2001

Consider it as guide not a rule.

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

Kent BeckMike Beedle

Arie van BennekumAlistair Cockburn

Ward CunninghamMartin Fowler

James GrenningJim HighsmithAndrew Hunt

Ron JeffriesJon Kern

Brian MarickRobert C. Martin

Steve MellorKen SchwaberJeff SutherlandDave Thomas

1/10/2016 WWW.MZTECH.INFO JAN. 2016 12

Page 13: Software development with agile methodologies

1/10/2016 WWW.MZTECH.INFO JAN. 2016 13

Page 14: Software development with agile methodologies

Principles1. Our highest priority is to satisfy the customer through early and contiguous delivery of

valuable software.

2. Welcome changing requirements, even late in development. Agile processes harness changefor the customer’s competitive advantage.

3. Deliver working software frequently, from a couple of weeks to a couple of months, with apreference to the shorter timescale.

4. Business people and developers must work together daily throughout the project.

5. Build projects around motivated individuals. Give them the environment and support theyneed, and trust them to get the job done.

6. The most efficient and effective method of conveying information to and within adevelopment team is face-to-face conversation.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 14

Page 15: Software development with agile methodologies

Principles7. Working software is the primary measure of progress.

8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

9. Continuous attention to technical excellence and good design enhances agility.

10. Simplicity – the art of maximizing the amount of work not done – is essential.

11. The best architectures, requirements, and designs emerge from self-organizing teams.

12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 15

Page 16: Software development with agile methodologies

1/10/2016 WWW.MZTECH.INFO JAN. 2016 16

Page 17: Software development with agile methodologies

Plan-Driven Vs Value-DrivenPlan-Driven (Traditional) Value-Driven (Agile)

Requirements won’t change Welcome changes

There will be no obstacles There will be obstacles

The business can wait for several months. Quick releases

1/10/2016 WWW.MZTECH.INFO JAN. 2016 17

Page 18: Software development with agile methodologies

1/10/2016 WWW.MZTECH.INFO JAN. 2016 18

Page 19: Software development with agile methodologies

Example

1/10/2016 WWW.MZTECH.INFO JAN. 2016 19

Page 20: Software development with agile methodologies

Agile DevelopmentRequirements

◦ A top level feature list is maintained.

◦ Usecases forms the basis for the development.

Design◦ Design is small iterations, but have a complete overview of system.

◦ Refactor the design

Coding◦ Clean Code.

◦ Source Control.

◦ Code Reviews.

◦ Refactoring.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 21

Page 21: Software development with agile methodologies

Agile DevelopmentUnit Tests

◦ Every core function has a Unit test written.

◦ Every module has a test suite that has number of test cases.

◦ The entire system put together also has a system test suite.

◦ Test suite is run daily and feedback is given to respective users.

◦ Testing is not a separate its part of development.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 22

Page 22: Software development with agile methodologies

ScrumCan be described as framework of feedback loops.

Has five values:◦ Focus: Focus only on a few things at a time.

◦ Courage: Feel supported and have more resources.

◦ Openness: Work together, express how we are doing.

◦ Commitment: Committed to success.

◦ Respect: Respect each other, and support each other.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 23

Page 23: Software development with agile methodologies

eXtreme ProgrammingFocused on customer interaction and involvement.

Has five values:◦ Simplicity: We will do what is needed and asked for, but no more.

◦ Communication: Everyone is part of the team and we communicate face to face daily.

◦ Feedback: We will take every iteration commitment seriously by delivering working software.

◦ Courage: We will tell the truth about progress and estimates.

◦ Respect: Everyone gives and feels the respect they deserve as a valued team member.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 24

Page 24: Software development with agile methodologies

eXterme programmingFollows twelve practices:

◦ Planning Game.

◦ Small Releases.

◦ Customer Acceptance Tests.

◦ Simple Design.

◦ Pair Programming.

◦ Test-Driven Development.

◦ Refactoring.

◦ Continuous Integration.

◦ Collective Code Ownership.

◦ Coding Standards.

◦ Metaphor.

◦ Sustainable Pace.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 25

Page 25: Software development with agile methodologies

Agile Software Development in BusinessFor some types of software, such as safety-critical control system, where a complete analysis of the system is essential, a plan-driven approach is the right one.

Apply agile when it is the best solution, don’t force it.

People hesitate from any change.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 26

Page 26: Software development with agile methodologies

AdvantagesAgile Optimizes ROI through Incremental Value Delivery

Customer satisfaction by rapid, continuous delivery.

Face-to-Face communication.

Close, daily cooperation between business people and developers.

Even late changes in requirement are welcomed.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 27

Page 27: Software development with agile methodologies

disadvantagesIt is difficult to assess the effort required at the beginning of the software development life cycle.

There is lack of emphasis on necessary designing and documentation.

The project can easily get taken off track if the customer representative is not clear.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 28

Page 28: Software development with agile methodologies

When should you use Agile?Client be able to change the requirement.

Clear picture of final product isn’t clear.

When you have skilled developers who are adaptable and able to think independently.

When product is intended for rapidly changing industry.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 29

Page 29: Software development with agile methodologies

Database AgilityModel Agility: ease and speed of changing data models.

Operational agility: ease and speed of changing operational aspects.

Programming agility: ease and speed of application development.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 30

Page 30: Software development with agile methodologies

1/10/2016 WWW.MZTECH.INFO JAN. 2016 31

Page 31: Software development with agile methodologies

Mobile Game DevelopmentMobile app growing very fast.

Analyst firm Gartners in 2012 predict that by 2015, mobile app projects for smartphones and tablets will outnumber those for PCs by 4:1 ratio.

As mobile technology and platform are changing very quickly we need to be more agile.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 32

Page 32: Software development with agile methodologies

Agile Developer SkillsFor agile team:

◦ Competence.

◦ Common focus.

◦ Collaboration.

◦ Decision-making ability

◦ Fuzzy problem-solving ability.

◦ Mutual trust and respect.

◦ Self-organization.

You are one of the team

1/10/2016 WWW.MZTECH.INFO JAN. 2016 33

Page 33: Software development with agile methodologies

ToolsMicrosoft TFS (Scrum Template).

Axosoft OnTime Scrum.

LeanKit

Rally Platform for Agile Lifecycle Management

1/10/2016 WWW.MZTECH.INFO JAN. 2016 34

Page 34: Software development with agile methodologies

TipsLearn from other’s experiences, but for each project practices may differ.

Each project is a unique.

Agile is not rule so make it agile.

It is not necessary to do Scrum meetings everyday and in the morning.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 35

Page 35: Software development with agile methodologies

What’s nextTraditional Methodologies.

Agile Methodologies.

?????????

1/10/2016 WWW.MZTECH.INFO JAN. 2016 36

Page 36: Software development with agile methodologies

Case Study – Ecommerce website1. Static content.

2. Registration.

3. View Product.

4. Add to Cart.

5. Payment Methods.

6. Return.

7. Packages.

8. Customize Product.

9. Rating.

10. Loyalty program.

11. Customer preferences.

12. Analysis.

13. Order Tracking.

14. Advertising.

1/10/2016 WWW.MZTECH.INFO JAN. 2016 37

Page 37: Software development with agile methodologies

Disscussion

1/10/2016 WWW.MZTECH.INFO JAN. 2016 38

Page 38: Software development with agile methodologies

Referenceshttp://web1.muirfield-h.schools.nsw.edu.au/mahara/view/view.php?id=7619

http://www.bbc.co.uk/news/business-16611040

http://www.forbes.com/sites/microsoftdynamics/2013/03/06/innovate-to-stay-relevant/

http://agilemanifesto.org/

http://www.verivo.com/mobility-watch/are-agile-development-mobile-apps-the-perfect-match/

http://www.gartner.com/

http://sea.ucar.edu/best-practices/rup

1/10/2016 WWW.MZTECH.INFO JAN. 2016 39

Page 39: Software development with agile methodologies

Referenceshttp://www.infoworld.com/

http://nosql.mypopescu.com/post/6125006650/nosql-databases-goals-achieving-agility

https://www.simple-talk.com/sql/t-sql-programming/agile-database-development/

https://dzone.com/agile-methodology-training-tools-news

http://www.halfarsedagilemanifesto.org/

http://www.extremeprogramming.org/

https://www.scrumalliance.org/

1/10/2016 WWW.MZTECH.INFO JAN. 2016 40