|

Développer un SI moderne nécessite de relever un défi majeur: prendre en compte aussi bien l'existant que les évolutions technologiques ainsi que celles du métier de l'entreprise.
De nombreux critères sont à prendre en considération :
- maintenabilité, réutilisation, coût de possession
- performances, montée et tenue en charge
- fiabilité, tolérance aux pannes, sécurité
- transactionnel, persistance, asynchronisme
- supervision, administration
L'ELABORATION D'UNE ARCHITECTURE
L'élaboration d'une architecture consiste à étudier en fonction des besoins de l'entreprise les importances relatives à accorder à ces différents critères, pour produire des artefacts de différentes natures :
- La plate-forme
- La plate-forme va être constituée d'une infrastructure matérielle et logicielle. Son élaboration nécessite de procéder à des choix technologiques : serveur d'application, serveur Web, MOM, framework de persistance, bases de données,...). Elle intègrera également des préconisations relatives aux différentes machines à utiliser ainsi que leur répartition géographique.
- Les composants techniques
- Des composants techniques seront développés, adaptés ou ou intégrés. Ils servent à faciliter la coopération des différents sous-systèmes ainsi que le la mission des développeurs. Assortis de règles de programmation, ils constitueront des frameworks techniques (cadres applicatifs)
- Les normes de développement
- Les normes de développement guideront le développeur au quotidien, en définissant de manière stricte: la manière de structurer le code en classes et packages, la manière de rédiger les commentaires et la documentation, ou encore la manière d'écrire les tests unitaires.
- Les règles de conception (Design Patterns)
- Les règles de conception (Design Patterns) sont des réponses éprouvées à des problèmes d'évolutivité, maintenance et développement. La sélection de telles règles doit être envisagée au plus tôt avant de commencer un projet, et se poursuit au fil du développement lors de l'appartion de nouveaux problèmes.
La mise au point et la validation d'une architecture nécessitent souvent l'élaboration de prototypes.
Le choix d'une architecture simple, robuste et évolutive garantira la pérénnité de vos investissements en développement, consacrez-lui un intérêt tout particulier !
LES CHOIX TECHNOLOGIQUES
La définition d'une architecture passe par une sélection des technologies respectant le mieux les contraintes spécifiques au projet. Ces choix technologiques portent essentiellement sur:
- la plate-forme d'exécution: .Net, J2EE, J2ME, ...
- le(s) langages: C#, Java, PHP, C++, ...
- la (les) base(s) de donnée(s): Oracle, MS SQL Server, MySQL, PostgreSQL, ...
- le(s) serveur(s) d'application(s): WebSphere, WebLogic, JBoss, JOnas, JRun, Geronimo, ...
- le(s) serveur (s) web: Apache, Tomcat, IIS, ...
Pour le développement, des frameworks apportent pour chacune des facettes de l'activité de développement des infrastructures logicielles solides :
- persistance des données: Hibernate, EJB 3.0, JDO, iBatis, TopLink, ...
- développement web: JSF, Struts, Velocity, Tapestry, ...
- tests unitaires: JUnit, dbUnit, nUnit,...
L'utilisation de frameworks adaptés est cruciale: ils permettent des gains de temps remarquables et une fiabilité accrue par la réutilisation de solutions éprouvées.
Enfin, le choix des outils de modélisation et de développement aura toute son importance dans le confort de développement.
Les critères de choix technologiques sont nombreux :
- la nature du système à développer:
- application Web (site internet, intranet ou extranet, e-commerce)
- application d'entreprise
- progiciel
- application distribuée
- application embarquée ou temps réel
- prototype de R&D
- logiciel grand public
- les performances attendues (vitesse d'exécution, réactivité, nombre d'utilisateurs,...)
- l'ergonomie souhaitée (bureautique, graphique, reconnaissance voix/écriture, ...)
- la localisation des utilisateurs par rapport au système: utilisateurs nomades ou fixes, délocalisés, ...
- les délais de développement
- les compétences des équipes
- l'existant
-
-
-
L'audit de projets peut s'avérer nécessaire dans de nombreux cas de figure :
- blocage technique
- dépassement de délais
- problèmes de performances
- problèmes de fiabilité
L'audit peut porter sur différents aspects :
- techniques
- fonctionnels
- méthodologiques
Là aussi, des consultants présentant un large spectre de connaissances et compétences est indispensable :
- connaissances techniques et méthodologiques
- qualités relationnelles et pédagogiques
Le résultat d'un audit
Un audit peut aboutir à la remise de livrables fort variés :
- normes de développement
- nouvelle architecture
- restructuration de code
- prototype
- batterie de tests
- cursus de formation
- ...
Le blocage peut survenir à tout moment dans vos projets, et se manifester de différentes manières :
- difficulté technique
- croissance anarchique de la taille du code
- problèmes de performance (rapidité, montée en charge)
- problèmes de fiabilité
- ...
Les raisons de tels blocages peuvent également être fort multiples :
- technologie mal maîtrisée ou ignorée
- problèmes d'architecture ou de conception
- mauvais choix technologiques
- évolution de l'équipe ou conflits
- ...
Votre stratégie de résolution de problèmes fera la différence dans le respect de vos délais et vos coûts, ainsi que dans la motivation de votre équipe.

Les performances des sites internet transactionnels doivent être sont un enjeu majeur: trop lent, gérant mal les transactions ou supportant mal les pics de charge, le manque à gagner pourra vite devenir considérable.
Nous intervenons pour vous aider à optimiser les performances de vos sites, en termes de temps de réponse aussi bien qu'en termes de montée en charge (accroissement du nombre d'utilisateurs simultanés).

La restructuration de code est une activité à part entière, qui intervient dans deux contextes différents :
- à l'issue d'un audit mettant en évidence des lacunes de structure du code
- au fil du développement
Alors qu'une restructuration suite à audit se réalise dans un contexte de crise qu'il faut appréhender de manière aussi douce que possible, la restructuration de code au fil du développement est une discpline de démarche qualité intégrée dans les démarches modernes telles que XP (eXtreme Programming) : chaque jour, le développeur consacre une partie de son temps à restructurer le code produit la veille.
La restructuration non destructive de code nécessite la mise en place de batteries de tests de non-régression.
La maîtrise de règles de conception (Design Patterns) est impérative.
Votre parc applicatif existant contient sans doute des logiciels éprouvés, ou le marché dispose de solutions utilisables pour répondre à vos besoins: les intégrer vous permet de limiter les coûts de développement et de capitaliser sur la qualité de logiciels éprouvés.
Le domaine de l'intégration requiert des technologies complexes :
- les Middleware Orientés Messages (MOM) et les suites d'EAI (Enterprise Application Architecture) offerts par IBM (WebSphere MQ), Microsoft (BizTalk), TIBCO, WebMethods, ...
- les implementations de Java Messaging Service (JMS) fournies dans la plupart des serveurs d'applications J2EE
- les files de messages de Microsoft (MSMQ) accessibles depuis plusieurs APIs, parmi lesquelles les librairies System.Messaging de Microsoft .Net.
- les standards émergeants pour les Web Services Asynchrones (par exemple, WS-ReliableMessaging) et les APIs associées telles que JAXM (Java API for XML Messaging), ou les extensions Microsoft aux Web Services.
L'activité d'intégration requiert donc des compétences pointues :
- connaissance des technologies et du marché
- connaissance de règles de conception (Design Patterns)
|