![]()
Table of Contents
PHP Team Development
Credits
About the Author
About the Reviewers
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Errata
Piracy
Questions
1. Software is Complex
Need for teams
Software engineering principles to help
Use a process
Divide and conquer
Guarantee reuse
Guarantee integration
Prevent regression
Vertical versus horizontal division
Continuous integration
Patterns as solutions
Process for success
Tools
Source code control
Continuous builds
Issue tracking
Communication
Summary
2. MVC and Software Teams
Software design patterns
MVC pattern
Intent
Motivation
Solution
Model
View
Controller
How MVC can help
MVC helps with change
Implementing MVC with a team
Aspects of the presentation layer (view)
The overall team distribution
Integration challenges
Summary
3. Dealing with Complexity
Frameworks to simplify complexity
How can frameworks help?
Expectations from frameworks
Simplicity
Size of the framework
Performance
Security
Separate HTML from PHP
AJAX support
No restrictions
Object-oriented versus functional
Code quality of the project
Enforce best practices
Configuration needs
Internationalization
Documentation
Community
Commercial support
License
Vendor locking
Availability with hosting
Some more points to ponder
Team success with frameworks
Technical feasibility study of the framework
PHP Frameworks
Limb
phpDrone
ZNF
ATK
Akelos
CakePHP
CodeIgniter
Zend Framework
PHP Work
Symfony
KISSābeyond frameworks
Beyond frameworks
People are complex
Avoid NIH
Innovation
Embrace change
Simplicity is a mindset
Summary
4. The Process Matters
Process and product
Ignoring the process
Process must be respected
From no process to some process
Process helps not hinder
Simple process for PHP projects
User requirements
Modeling what the users want
Data modeling
Business modeling
User activity analysis
Designs and implementing the data layer
Designs and implementing the business layer
Design and implementation of the user interface
Summary
5. Agile Works Best
Introducing agile philosophy
Agile values
Agile principles
Individuals and interactions
Working software over comprehensive documentation
Customer collaboration
Responding to change
Customizing agile to our needs
Common fears for developers
Producing the wrong product
Product of inferior quality
Getting late to complete the project
Too much work in too little time
Traits of agile team members
Competence
Common focus
Collaboration
Decision-making ability
Fuzzy-problem solving ability
Mutual trust and respect
What is agility
Characteristics of an agile process
Principles of agility
Extreme Programming (XP)
XP planning
XP design
XP coding
XP testing
Advantages of agile development process
Team agility
Agile process models
Adaptive Software Development
Dynamic Systems Development Method
Dynamic Systems Development Method's life cycle
Scrum
Backlog
Sprints
Scrum meetings
Demos
Feature Driven Development
Agile Modeling
Agile for the PHP team
Pair programming
Sustainable working style
Information-driven workspace
Fixing the process
Sitting together
Ubiquitous language
Stand-up meetings
Demonstrate the iteration outcome
Summary
6. Ways of Collaboration
Team work is challenging
Team members make assumptions
Making integration possible
Source control
Bug control
Configuration management
Tools for communication and collaboration
Tracking tools
Summary
7. Continuous Improvement
Dealing with change in PHP applications
Ensuring process effectiveness
Ensure you are improving
Evolving PHP applications
People development
Teams and success
Managing the team
Leadership
Quality focus
Constant monitoring
The team is human
Summary
Index
![]()
Copyright Ā© 2009 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: September 2009
Production Reference: 1240809
Published by Packt Publishing Ltd.
32 Lincoln Road
Olton
Birmingham, B27 6PA, UK.
ISBN 978-1-847195-06-7
www.packtpub.com
![]()
Author
Samisa Abeysinghe
Reviewers
Deepak Vohra
Garvin Hicking
Acquisition Editor
Sarah Cullington
Development Editor
Dilip Venkatesh
Technical Editors
Mehul Shetty
Akash Johari
Copy Editor
Leonard D'Silva
Indexer
Monica Ajmera
Editorial Team Leader
Akshara Aware
Project Team Leader
Lata Basantani
Project Coordinator
Rajashree Hamine
Proofreader
Joel T. Johnson
Production Coordinator
Adline Swetha Jesuthas
Cover Work
Adline Swetha Jesuthas
Drawing Coordinator
Nilesh R. Mohite
![]()
Samisa Abeysinghe has nearly ten years of industrial experience with various software projects. He has been an Apache committer for many years and has worked for software product companies as well as software services companies.
Samisa was the project leader for WSO2 Web services Framework for PHP projects for a couple of years and has an in-depth understanding on the enterprise use of PHP. He has been involved in helping many project teams use WSO2 WSF/PHP for enterprise projects.
As director of engineering at WSO2, Samisa now looks after multiple teams working on various projects on a daily basis and gets involved with defining and fine-tuning processes and practices to ensure a project's success.
Samisa is also the author of the book RESTful PHP Web Services.
![]()
Deepak Vohra is a consultant and a principal member of the NuBean.com software company. He is a Sun Certified Java Programmer and Web Component Developer, and has worked in the fields of XML, Java programming and J2EE for over five years. He is the co-author of the Apress book Pro XML Development with Java Technology and was the technical reviewer for the O'Reilly book WebLogic: The Definitive Guide. He was also the technical reviewer for the Course Technology PTR book Ruby Programming for the Absolute Beginner, and the technical editor for the Manning Publications book Prototype and Scriptaculous in Action. Deepak is also the author of the Packt Publishing books JDBC 4.0 and Oracle JDeveloper for J2EE Development, and Processing XML Documents with Oracle JDeveloper 11g.
Garvin Hicking is a passionate web-developer, who is engaged in open source projects like Serendipity (Lead Developer) and phpMyAdmin. He works at the Internet agency Faktor E GmbH in Bonn (Germany). Being up-to-date, he has been involved in writing or reviewing several books about PHP, the most recent one being the official documentation of the PHP-Blog application Serendipity. Aside from his professional work, he and his girlfriend enjoy taking professional photographs.
![]()
This book is about ensuring project success for PHP teams. It explores technical as well as non technical aspects that matter when achieving project success. On the technical front, designing to divide complexity to conquer complex problems, keeping things simple in the design, choosing the right process, and monitoring and improving the process are important aspects. On the non technical front, making sure that they collaborate effectively, the team should be open to changes. The team should be open to user feedback. Having the right mindset about quality and other aspects related to project success are discussed.
Chapter 1, Software is Complex, explains the complexities that we face while working with today's software projects. PHP projects, some years ago, used to be small projects involving one or two people. However, today, we need teams of people for PHP projects. This chapter explores the need for teams for PHP projects. It also discusses how software engineering principles help with PHP projects. There is an increasing need to use a process for PHP projects. The complexity of having a team is figuring out how to divide the project's problem among team members and solve it. This chapter discusses how to divide and conquer projects. We will discuss how patterns help the PHP project to cope with complexity. Finally, we will explore how to use tools to manage the development and collaboration within the PHP team.
Chapter 2, MVC and Software Teams, discusses the MVC pattern in depth and how MVC can help in a PHP project. It also explores how to use the MVC pattern as the guiding principle to break down the complexity of a project, and how to implement MVC with a team. It also discusses the integration challenges that are faced in putting together all the pieces of MVC that are developed by different team members.
Chapter 3, Dealing with Complexity, discusses in depth how we can make use of sof...