Www.ili.ca [email protected]. [email protected] Dov'è Halifax? Lungomare di Halifax.
Case study: un approccio modulare in un progetto legacy
-
Upload
mariano-fiorentino -
Category
Technology
-
view
576 -
download
0
description
Transcript of Case study: un approccio modulare in un progetto legacy
Un approccio modulare in un progetto legacy
Mariano Fiorentino
Chi sono
Co-fondatore PUG Torino
Architetto software per Engineering IT
Responsabile tecnico su progetti Fiat/Chrysler
Progetto e.Link
Nasce nel 2003 per dare uno strumento informatico ai concessionari per vendere vetture da catalogo.
Viene sviluppato con php4/mysql secondo gli “standard tecnologici dell'epoca”
Standard php 4 del 2003
import('Marca');
import('Concessionario');
$marcaObj = new Marca();
$concessionario = new Concessionario();
?><html><link rel="Stylesheet" href="fiat_link.css"><body><?if ( $id_marca == "" ) {
$id_marca = $SS_CODBRAND;// una global... $tablaResultados = array(); if ( $mode == "concesionario" ) {
Com'era e.Link
e.Link in Europa
e.Link oggi
Negli anni il software ha subito un'evoluzione
vertiginosa, viene arricchito di moduli di ogni genere.
6 milioni di righe di codice
Attualmente un gruppo di 50+ persone
Oltre 150 programmatori nel tempo
3000+ classi
100+ integrazioni con sistemi esterni
100'000 utenti
e.Link nel mondo
Un portale per i dealers
Strategie di evoluzione
In un software di queste dimensioni è necessario:
ridurre al minimo il codice prodotto con le nuove evolutive
usare componenti standard, cercare di non reinventare la ruota
Zend Framework in e.Link
Zend_Http
Zend_Mail
Zend_Locale
Zend_Log
Zend_Currency
Zend_Pdf
Zend_Amf
Zend_GData
Zend_Config
Zend_Translate
Zend_Cache
Zend_Json
Before Frameworks...
/**
* @version $Id: class_php_date.php,v 1.53 2012/07/03
class PhpDate {
function toChar($format = "") {
if (!$format) $format = "YYYY-MM-DD HH:MI:SS"; $format = str_replace("YYYY", "Y", $format); $format = str_replace("MM", "m", $format);
if ($this->plain) {
if ($format == "Y-m-d")
return $this->anno."-".$this->mese...
if ($format == "d-m-Y")...
Before Frameworks...
53 commit in 9 anni prima di arrivare ad una versione definitiva.
Necessità di studiarsi in casa ed implementare tutti gli standard dei paesi su cui si rilascia il software.
Soluzione inevitabilmente progettata per il problema in oggetto, molto probabilmente non esportabile.
~2000 problemi relativi alle date in 10 anni.
Gestione delle date attuale
$date = new Zend_Date( time(), Zend_Date::TIMESTAMP, new Zend_Locale($locale_id));
echo $date->get(Zend_Date::DATE_MEDIUM);
La localizzazione...
Problema ancora più critico delle date perchè di più ampia portata, non si tratta solo eventualmente di formattare numeri, ma bisogna gestire:
– contenuti locali e valori culturali
– simboli
– contesto sociale
Le nostre aziende fanno software e non antropologia.
Potersi dedicare al software...
$locale = new Zend_Locale('ar_MA');
$localNames = $locale->getTranslationList();
// Locale per il Marocco
<localeDisplayNames>
<localeDisplayPattern> <localePattern>{0} ({1})</localePattern> <localeSeparator>،</localeSeparator> </localeDisplayPattern>
<languages> <language type="aa">األفارية</language> <language type="ab">األبخازية</language>
Integrazioni con Google
$client = new Zend_Http_Client();
$client->setUri('http://maps.google.com/maps/geo');
$client->setConfig($pars);
$client->setParameterGet(array(
'output' => '', //default json
'key' => $this->googleAPIKey,
'q' => $this->address.));
$response = $client->request();
Tutte le volte che ha senso
// load required classes
require_once 'Zend/Loader.php';
Zend_Loader::loadClass ('Zend_Translate');Zend_Loader::loadClass ('Zend_Locale');Zend_Loader::loadClass ('Zend_Registry');Zend_Loader::loadClass ('Zend_Log_Writer_Stream');Zend_Loader::loadClass ('Zend_Log');Zend_Loader::loadClass ('Zend_Config_Ini');
// Link MVC
class ActionController {
Un po' di statistiche
#CR #Bugs Bugs/CR
2005 176 2630 15
2006 308 4009 13
2007 285 3222 11
2008 537 2648 5
2009 341 2022 6
2010 330 1990 6
2011 372 2188 6
2012 515 1813 4
Introduzione dei Framework Zend/Extjs
Ma perchè proprio Zend Framework?
Uno dei due framework php più usati al mondo
Un ampia comunità di sviluppatori
Supporto da parte di un azienda
Domande?