par Alex Ostreiko Il y a 2 années
423
Plus de détails
Adaptation
Inspection
Transparency
organize autonomously
flock of ducks
objective
goal
Méthode agile
The Product is the implementation of the product description in the Statement of Work section, built by the Development Team in close collaboration with the Client.
The Development Team consists of the members of the Project Team that are employed by Syspark.
The Project Team consists of all individuals who perform recurring activities on the project.
The project Stakeholders are all individuals that will use the completed Product.
The project Client is the organization that commissioned, and will accept the completed Product. The Client can be represented by anyone who speaks on behalf of that group.
scope
estimates
The Development Team has the final say as to what tools they will use to complete the activities
React.js+Flux+Backbone.js+Polymer.js+ag-Grid
Flux and Backbone
Angular vs Backbone vs Ember
React
ag-grid
Polymer.js
WebComponents
Ember.js
Backbone+
Ag-grid
Dojo
grid
Meteor
course
Meteor + React tutorial
Criteria for choosing a framework
Long term utility & transferability of skills
Learning Curve
Job Market Competition
Regional Popularity
Momentum & Trends
sub-reddit stats
e.g. /r/reactjs/about/traffic
Google Trends
SCM
git
GitFlow
CI
Jenkins PHP
Teamcity
PHPCI
Travis CI
Staging
Vagrant
scripted w/puppet
vagrant box add debian https://path/to/image.img
Development
Frameworks
reasons to choose Cake
experiential knowledge
feedback from context
nuances and tricks
top 7 from Winspire
top 13 from Mashable
Aura
Phalcon
PHPixie
Nette
CodeIgniter
Symfony 2
Yii 2
Laravel
Lithium
presentations
CakePHP
previously written code snippets
various nuances
most experience
IDE
PHPStorm
Git integration
Eclipse
egit
vim
Code
Standards
PSR-2
PSR-1
Code Standards Fixer
from Sensiolabs
"creators of Symfony"
php php-cs-fixer.phar fix /path/to/dir --fixers=linefeed,short_tag,indentation
php php-cs-fixer.phar fix /path/to/project --level=symfony
php php-cs-fixer.phar fix /path/to/project --level=psr2
sniffs & corrects
Code Sniffer
Code Beautifier
phpcbf
phpcbf --standard=CakePHP $file
Analysis
phpmd
PHP Mess Detector
PhpMetrics
static analyzer tool
software metrics reports
phpdcd
PHP Dead Code Detector
phpcpd
scan project for duplicated content
PHP Copy/Paste Detector
pdepend
software metrics
PHP_Depend
PHPLOC
LOC = lines of code
quickly measure size of a project
QA
ENB
Faster BEM/BEViS assembler
JS to build pages from JSON
create pages by configuration
parse JSON files
BEM entity
Modifiers
Elements
Blocks
enb-bem-techs
set of ENB technologies
Block-Element-Modificator
QA-Tools
BEM
based on Behat Mink
PageObjects
BDD
format
scenarios
then I should see: bar foo
when I run "ls"
and there are files "bar" & "foo"
Given that I am in directory "test"
Title: list 2 files in the directory that contains them
And/But [another outcome]
Then [outcome]
When [event]
And [more context]
Given [context]
Scenario: [title]
features
I want to list directory contents on screen
As a UNIX user
in order to see the directory structure
ls
the feature
the role
the benefit
name the feature
Behat
behat --init
Behat Mink
acceptance testing
control browser a la Selenium
inspired by Cucumber
features & scenarios
each feature is defined by scenarios
scenarios are listed at the bottom of the feature file
scenarios explain how feature should act under certain conditions
scenarios are the Acceptance Criteria
features/*.feature
BDD is TDD done right
Article with good examples in French
orig English
vfsStream
mock real fs
QA/QC tools
PHPUnit
Build Automation
Deployer
recipes
PHP
Chef
PHP resources
Capistrano
DSL
common uses
deploy a version from SCM
rollback
switch symlink
one or more servers
craft flexible scripts
PHP deployment with Capistrano
Phing
based on Apache Ant
XML build files
Dependency Management
pickle
extensions from pecl.php.net
based on Composer
Melody
Bower
Composer for JS
use with composer
bower install --save jquery
npm install -g bower
Composer
PHP the right way
A Release Candidate. Full redundancy with live system.
Admin Section running alongside WIMPS on live data. Training complete
Front-end CMS training & documentation complete
UX metrics, analytics, marketing & SEO tools
Integrate A/B tools
Themes
Retargetting
Produce a stable, usable version. Allow for partial deployment.
Full data exchanges between datacenters simulated. Gradual transition of services.
Admin Section tested by future users. Implementing feedback.
Front-end technical features & design specs complete. Implementing UX & UI feedback.
Produce a functional prototype.
A functional Admin Section. UI for data management. Member account control. Working CMS.
Integrate Business Logic & UI Libs. Achieve member account control & CMS
Establish code organization patterns to manage a large menu based application. Identify dependent widget libraries.
Routing
Forms
Rich Text Editor
Grids
Complete the main member interactive areas of the website
Discount Programs
Refer A Friend
Payment
Account Management
Program Membership
Acquire & Consume Discounts
Communications
Other Methods of Communication
Email Campaigns
Transactional Emails
Registration
Establish Scope, Lock-in Resources, Internal Prototype
Basic CMS
Create/View/Update Textual Content (Articles)
Basic Member Management
Separate & Secure Admin Area
View/Edit Accounts
Signup
Security
Validation
Deploy Rapid Development Environment. Establish Procedures & Protocols
Implement the branching model for Revision Control, establish code check-in procedures
Automatic syntax & code convention checking upon code check-in
Preliminary Database Structure Design
Map relationships sufficient to create prototype necessary to continue development
Analyze Javascript Frameworks
Construct scaffolding to start a large JS app
Analyze PHP frameworks
Select framework, create a prototype
Develop & commit to a mockup. Integrate the the look with the codebase
Branding
Acquire new branding details from 3rd party
Template
Integrate template with codebase
Analyze Requirements, select template that matches design
Quality
Project
Transition
Nonfunctional
Functional
Solution
Stakeholder
Business
Requirements Traceability Matrix
Traceability Matrix
avoid excessive detail
Having committed to a set of requirements, a team stops looking for ways to increase business value
Committing to a detailed set of requirements makes course adjustments more costly, and leads to missed opportunities.
A great number of requirements can only be known through assessing existing code
Iterative process
Requirements are gathered and discovered continuously throughout the project
Provide insight, and improve accuracy of projections for the Stakeholders.
Adjust deadlines or budget
Discover risks
Opportunities
Threats
Produce sufficient guidance for the Development Team to do work during the current Iteration.
external factors may necessitate a change in direction
rapidly respond to change
maintain connection with the business reality
the insights provided at the weekly Review meeting may impact the requirements for the next cycle
Schedule Model Development
Accuracy levels
v2
A continuous risk management practice will be implemented. Known and potential risks will be continuously entered into the Backlog and Sprint Log, and will be treated as regular defects. They will detail Risk Causes, Risk Triggers, Risk Impact, and a Risk Response Plan for each of the identified risks.
A continuous risk management practice will be implemented. Known and potential risks will be continuously entered into the Risk Register document which will detail Risk Causes, Risk Triggers, Risk Impact, and a Risk Response Plan for each of the identified risks.
Schedule Activities Associated w/Risk
mitigate
Antipattern checklist
Antipattern risk management
Defects are a form of User Stories
same attributes
Ready
Done
Difficulty
different attributes
Urgency
Severity
Risks are a form of defects
opportunities
if we are not taking advantage of an opportunity, it's a defect
threats
consider
Control Risks
Risk Contingencies
Risk Responsibilities
Risk Appetite
Risk Tolerance
Risk Threshold
1 week behind deadline
5% of some value
Outsourcing
off-the-shelf
Training & Orientation
External
Labour Issues
Should any member of the Development Team become unavailable for an extended period of time, the project may not be completed on previously forecast dates.
Organizational
In this context Organizational Risk refers to risks that arise due to poor communication, improper implementation of business rules and development processes.
Overconfidence
A common trait in expert professionals is to skip paperwork and work according to an improvised schedule
slide into code-and-fix chaos
Organizational Commitment
Lack of acceptance of the tools and protocols can introduce communication problems, defects, and deteriorated performance
fail to properly document work
take shortcuts
skip meetings
Overwork
If not managed, feature creep may affect staff stress levels resulting in deteriorated performance
Unrealistic Objectives
The Client may have the expectation to replicate the legacy system with newer technologies. Besides the developments in technology, since the legacy system was built, the consumer attitudes and behaviour have changed, and so did the nature of online commerce. Due to the maturing and proliferation of APIs and other services, the current online business model is a lot more modular with a strong trend towards maximum decomposition of monoliths.
Project Management
Scope Creep
Poor communication and unclear project goals can cause large features to be added forcing unsafe schedule compression, and technical debt.
Schedule Planning & Cost Estimates
The necessity to dismantle parts of the legacy system, and to reproduce their functionality in the Product introduces a degree of uncertainty.
Technical
Quality of Technology
Any complex implementation will have defects such as programming bugs and undesired side-effects. Insufficient code quality control resulting from inadequate code reviews or lack of unit and functional testing will increase rework and other costs.
Performance Risks
The current implementation of the website is tied to the legacy technology that acts as a performance barrier for the whole organization. To prevent overloading the legacy system, special considerations have to be made to operate within the tolerance limits of the legacy system.
Complex Technology
For historical reasons the Client stores data, and processes payments and memberships using a separately configured set of legacy technologies. That setup is not consistent with the industry’s best practices. Maintenance of that legacy system, and the requirement to integrate it with the website constitutes an overhead, and reduces the Development Team’s ability to produce accurate estimates.
In accordance with Agile risk management principles, the Project Team commits to making risk management an intrinsic part of project lifecycle by encouraging transparency, inspection, and adaptation in all aspects of the project where risk is present.
Backstore
Payment Processing
Shopping Cart
CMS functionality
Integrate design with PHP code
Lock in design
Further, a secure back-end that can be used to perform these administrative functions:
Terminé
Back Store
Monitor and control the storefront.
Email Manager
Monitor statistics on transactional email activities.
Content Management (CMS)
An interface allowing the client to create, update or delete articles as well as control other items related to appearance or behaviour of the website.
The completed product will be a website which consists of a public front-end and a secure back-end. The front-end will have the following features:
Responsive Design
The website will employ modern browser technologies to take full advantage and maximize the use of features offered by mobile devices when viewed on mobile phones and tablets.
Storefront
Ability to select packages, and a secure checkout page where customers may enter their payment details.
Contact Form
Separate page
Member Registration
Consider possibility to have the registration form on marketing campaign landing pages, as an app in Facebook, and so on.
A separate page that contains a form with fields for the profile information. Allow possibility for a two-stage registration and use of third parties for authentication (Facebook, Google, Twitter).
Consider
Software development processes
Emergent Design
Big Design Upfront
website + admin + payment processing + mailing list, etc.
It is important for the individuals doing the work to have some knowledge of the business case in order to understand the client’s needs and expectations.
we will acquire a DB of 1e5 customers, and we'll start emailing them in August
we plan to increase traffic 10x in the next 6 months
supplement Social Media efforts; most interaction takes place on Facebook
become the main hub for information, sales, memberships
Social Media
A number of organizations have moved their principal points of contact with public onto social media websites such as Facebook. The nonprofit org does not currently have a Facebook page, but it has a website. Although social media presence is important for the nonprofit, at this point, a website upgrade is a more valuable project than full migration to Facebook.
The Client is constrained to have the project fully completed by October 20XX. Any later delivery will result in lost sales and publicity for the Client.
A Canadian non-profit needs to have its website upgraded. If this project is not undertaken, the client will lose revenue from lost sales and membership.
Why was the project initiated?
Demand
the Client may reevaluate Business Need in view of the project initiation findings
e.g.
add/remove/change features because of high or low complexity
complexity often becomes more visible when we start researching
change deadline if we can deliver a working product with basic critical features 3 months earlier, and then continue adding and improving features
What will happen to the client if project is not undertaken?
Communication Channels
external
Regular meetings with the client allow the Project Team to prioritize work items that will bring the most business value to the client. Frequently scheduled inspection/adaptation sessions with the client assure that the Development Team can respond to external changes with agility. For this project it is recommended that a Review meeting with the client or a client’s representative be held every week when the Development Team will demonstrate, and the Stakeholders will inspect and accept the deliverables that were scheduled to be built during the week. The Stakeholders will apply the Acceptance Criteria that are agreed upon at the Retrospect meeting.
To remain responsive to external factors, and to incorporate feedback from Client quickly, Project Team is committed to maintaining frequent communication with Client in capacities outlined as best practices for Agile projects.
internal
meetings
Initial
Project Team recognizes value in Agile approaches, and will implement high-bandwidth communication between team members by aligning with meeting structure and frequency according to the best practices of Agile management.
Detailed
Retrospect. The Development Team will meet at the end of every week to review and adjust the Acceptance Criteria, and to assess the team efficiency during the previous week. This meeting is timeboxed at 3 hours.
Daily Stand-up. The Development Team will hold daily Stand-up meetings that will be timeboxed at 15 minutes.
Planning. The Development Team will meet in the beginning of each week
Efficient self-organizing teams require high-bandwidth communications in order to maintain optimal levels of agility and responsiveness, and to take full advantage of each others’ specific skills. Team meetings are collaboration tools, they constitute key opportunities to cultivate and practice transparency, inspection and adaptation. Therefore, the Development Team will ensure proper communication by holding at minimum the three regular internal meetings described below:
phone
chat
Infrastructure
equipment
development computers
two monitors
facilities
Syspark offices
Syspark makes its office available for the Development Team to perform work on the deliverables, and to hold meetings. The Development Team will determine the most efficient location and configuration to perform their work. The team should be able to explain how its choice improves efficiency.
HR
Staff skills