-
Why Php
- Extreme Simplicity
- Easy to learn
- Versatile
- Cheap
-
Step1 - The Team
- Be a software engineer
- Train your skills
- Study OO principles
- Consider Zend certification
-
Step2 - Requirements
- Customer's communication
-
Functional Design
- Requirement Definition
- Interaction Design / Wireframes
- Flow diagrams
-
Step3 - Architecture
- Don't just start stacking the bricks
- Create an architecture first
-
Technical Design
-
Modelling
- Class diagrams
- ER diagram (data model)
- Colaboration diagrams
- Use cases
- etc.
- Tools: UML, whiteboards
-
High Level Architectures
- MVC (Model View Controller
- SOA (Service Oriented Architecture
- Multi-tier development (Frontend, Application, Data)
- CBD (Component Based Development
-
Step4 - Tools
-
Development
- Eclipse (PDT)
- PhpED
- Vim
- Zend Studio
-
IDE's vs Editors
- Debugging
- Profiling
- Navigation / cross references
- Inspection
-
Source Control
- CVS / SVN
- BitKeeper / GIT
- Branching
- Tagging
-
Step5 - Foundation
- Start with a foundation
-
Use a framework
- Provides guidelines (frame)
- Off the shelf components
-
Examples
- Zend Framework
- CakePHP
- ezComponents
- Symfony
- ATK
-
The "Not Invented Here" Syndrome
- The existing frameworks are no good.
- This framework is no good.
- This framework is too big.
- I know there's a good framework.
-
Step6 - Design Patterns
-
A 'window' is a concept
- Best practice way of solving a particular problem
- In IT, we call this a 'design pattern'
-
Popular patterns in PHP:
- MVC, Factory, Singleton, Registry, Decorator
-
Good read:
- php|architect's Guide to PHP Design Patterns - Jason E. Sweat
-
Step7 - Testing
-
Various types of testing
- Developer testing
- Functional testing
- Environment testing
- Performance testing
- Usability testing
-
Soution: Unit Tests
- Automated testing after each change
- Prevent regressions
-
Testing for PHP applications:
- PHPUnit
- SimpleTest
-
Continuous Integration:
- Xinc
-
Test Driven Development
- 1. Define functionality
- 2. Create testcase
- 3. Run test -> test fails
-
4. Implement functionality
- Test succeds? Done
- Test fails? Refactor
- Repeat step 4 until finished
-
Step8 - Optimization
-
Accelerators for PHP:
- eAccelerator
- APC
- Zend Platform
-
PHP Caching solutions:
- Zend_Cache
- Smarty
- Zend Platform
- Memcached
-
Step9 - Deployment
-
Lifecycle:
- Develop
- Test
- Deploy to acceptance test environment
- Deploy to live
- Use SVN
- Code is just a part, don't forget the database
- Create a 'Deployment & Release Profile'
-
System Architecture - LAMP
- Linux
- Apache
- MySQL
- PHP
-
System Architecture
- Hgh Availability, Horizontally Scalable architecture
-
Step 10 - Operations
-
Monitoring
- Logfiles
- Monitor infrastructure (tools such as Nagios)
- Monitor application (tools such as Zend Platform)
- Monitor business (is the money still pouring in?)
-
Debugging
-
Solution
- A 'root cause analysis' tool
-
Change management
- Ticket system
- Stick to your deployment - use the DRP
- DON'T TOUCH THE LIVE ENVIRONMENT.
-
No 'cowboy coding', but structured steps
- Higher quality
- Software will be easier to maintain (and cheaper)
-
Development methodology
- Waterfall
- Agile (DSDM, XP, Scrum)
-
Software Development Life Cycle (SDLC)
- Adapt from existing methods, learn from experts
- Document it properly
- Make it the cornerstone of your development efforts
-
More things to thing about?
- Developmetn
- Implementation
- Documents
- Security