(Repris et simplifié de mon post d’origine => English version here: http://memoprojects.blogspot.fr/2012/04/lesson-learned-alm-with-sql-azure-and.html)
Ce post rappelle brièvement comment migrer simplement votre base de données dans SQL Azure, et fournit un retour d’expérience sur les derniers outils Microsoft. Le but étant d’avoir une ALM-SQL bien plus optimisée que ce que nous connaissons actuellement.
Le nombre d'outils (en alpha, beta, en Prod… Microsoft ou non, … CodePlex, …) sont considérables pour gérer Windows Azure.
Pour ajouter d’avantage de complexité, un seul et même outil (par exemple SQL Server Management Studio) permet potentiellement d'effectuer la même action mais en utilisant beaucoup de chemins différents. Ainsi, les combinatoires sont considérables. Cependant, toutes les combinaisons ne fonctionnent pas de la façon attendue, ou bien sont parfois sous-documentées pour le moment. Il faut parfois avoir recours à un KB comprendre pourquoi cela ne fonctionne pas comme imaginé.
Après avoir migré votre base de données SQL Server d’après les 4 premières étapes de mon post précédent (les autres étapes illustrent comme vérifier l'intégrité de votre migration), vous aurez besoin de créer un projet DACPAC. Cependant, cette fois-ci ce sera avec les 2 nouveaux outils Microsoft suivants:
* SQL Server Data Tools [gratuit], utilisé pour étendre Visual Studio 2010 http://msdn.microsoft.com/en-us/data/gg427686 (respectez les prérequis, qui peuvent prendre jusqu'à 1 heure d'install). Vous pourriez également envisager d'utiliser Visual Studio 11 Beta ... mais seulement sur la partie SQL Azure / DACPAC projets (en effet, pour le déploiement Windows Azure c’est une autre histoire avec VS11 Beta).
Cette extension permet de travailler avec des fichiers *.sql d’une façon plus efficace, comme nous le verrons plus tard.

* SQL Server 2012 Management Studio [pour le moment, afin de l’obtenir, installez SQL Server 2012 et décocher tout, sauf Management Studio. Je n’est pas essayé la version Express qui est en Stand-Alone]. Je vous recommanderais de ne pas utiliser SQL Server Management 2008 (sauf si vous souhaitez être confronté à quelques frustrations). En effet, avec la dernière version de Data-Tier Application projects, SQL Server Management 2008 présente quelques limitations mineures / (bugs? C'est une “feature”?
) Et certains fonctionnement de bases ont été déplacés / «améliorés» dans SQL Server Management Studio 2012.
Pour créer un nouveau type de “Data-tier Application project”, qui se nomme à présent “SQL Server Database project”, suivez l'étape 5 à 7 de mon précédent post.
Vous pouvez également laisser « VS2010 with SQL Server Data Tools" migrer un projet existant:

Dans les propriétés du DB project, vous devez cibler la plateforme "SQL Azure", et renseigner les propriétés de l’application, notamment le numéro de version approprié (ce numéro est utilisé par l '«intelligence» de DACPAC de SQL Server 2008 R2 ou 2012. Il n’est plus question de deployer de simple fichier texte *.sql).

On peut noter qu'en utilisant ce nouveau type de project DB, vous pouvez diminuer le nombre de fichiers *. Sql considérablement. Par exemple, il est possible de passer de 800 à 100 fichiers, en fonction de la complexité de votre base de données. Cela est lié au fait que le nouveau projet est organisée différemment:
* Terminé les sous-sous-sous-sous-dossiers ! et les nombreux fichiers *.sql (un pour chaque index unique, contrainte, etc ...) Voici l’exemple d'un ancien projet DB (ASP.Net membership provider):

* A présent, dans la nouvelle version, tout est bien regroupé dans une vue qui ressemble plus à du "SQL-server". Dans la partie supérieure ci-dessous (1), vous trouverez un Designer SQL pour les tables avec leurs contraintes et propriétés associés. Sur partie inférieure (2), vous trouverez la version en texte brut comme à l'ancienne version ... sauf que vos contraintes, les index, ... font désormais partie de la même fichier.
Moins de fichiers signifie également moins de fichiers à obtenir / check-in et à suivre en termes de contrôle de code source.

NB: Remarquer de nouvelles options de "Build" sur les propriétés du fichier *. SQL (3).
Avec ce type de projet, en ciblant "SQL Azure" (qui représente le scénario le plus “contraignant”), vous pouvez publier soit sur SQL Server, soit sur SQL Azure en utilisant les mêmes T-SQL (vous pouvez ajouter quelques conditions IF si vous avez vraiment besoin d’instructions spécifiques SQL Azure).
En ce qui concerne le Publishing, vous pouvez définir un fichier de configuration par environnement (par exemple cliquez (1) pour charger des profils divers, tels que “server de validation”, localhost, SQL Azure Staging, SQL Azure PROD, ...) .
Pour obtenir la fenêtre “publishing Database” (notez que cela est appelé "publishing” et non plus “deploy"), cliquez-droit sur votre projet VS DB > "Publishing...”, puis attendez 2 à 10 secondes avant la pop-up modale:

Assurez-vous que vous avez coché les 2 options (2) afin de bénéficier du DACPAC. Enfin, cliquez sur “Publish…” (3). Du coup, en ne les cochant pas, une issue de secours sans DACPAC reste possible (en configurant les nombreuses options “Advanced…”)
Au cours du “Publishing”, vous verrez une nouvelle fenêtre de sortie “Data Tools Operations” qui est plutôt bien pensée et pratique.

Maintenant, si vous voulez déployer dans SQL Azure, il suffit de charger le fichier de configuration correspondant, et en 1 clic, tout est déployé sur SQL Azure !
Enfin, vous pouvez utiliser une ligne de commande pour qu'une build TFS-Build puisse automatiquement publier cela pour vous (toutefois, je ne recommanderais pas si vous “Buildez” en continu 10 ou 20 fois par jour … a moins d’avoir une grosse carte bleue associée à votre compte Windows AZURE).
Voici un exemple de temps de déploiement pour une base de données possédant moins de 100 Mo de données à “peupler” par script (sans Bulk Copy):
- Sur la base de données locale: 5 sec
- Sur SQL Azure (ADSL): 4 min
- Sur SQL Azure (Clef Internet USB): 15 min
Une dernière fonctionnalité fraîchement apparue que je souhaitais présenter pour faciliter votre ALM, c’est le "snapshot":
Par exemple, avant tout déploiement en Prod, vous gardez LA version qui sera livrée et archivez-là archivé par exemple dans une branche TFS. Il vous sera possible de l’exploiter ultérieurement (schema compare, …). En effet, un Snapshot va stocker votre projet sous forme de fichier DACPAC en quelques secondes (rappel: un fichier DACPAC est un fichier Zip de vous DB schema stockées sous forme de fichiers XML).
Les nouvelles possibilités permettent un gain de productivité considérable et cross-platformes !
Bien que j'ai utilisé ces outils sur les projets plus volumineux que l’ASP.Net Membership provider (!), je serais vraiment intéressé par toute personne ayant d'autres feedbacks à ce sujet.
{Mon post d'origine "Migrating your SQL Server 2008 Database to SQL Azure": http://memoprojects.blogspot.com/2012/02/azure-migrating-your-sql-server-2008.html}
They are many ways you could do to migrate your SQL Server 2008 database
(SSIS bulk copy, Data Sync, dedicated tools, …). Here is one of them,
that was quite painless, and free of charge (at opposed of using
commercial tools).
Because the Windows Azure world is moving really fast, this method might be already out of date as you are reading !
Pre-requisites:
How-to?
- Let us assume you have VS 2010 and SQL Server 2008 R2, and you have an existing DB that you are happy with,
- Install and use “SQL Azure Migration Wizard” tool
to connect to your existing database. It will generate you as T-SQL
Script will errors that would occur in SQL Azure (you could find all the
infringement rules alongside this CodePlex project),

- Modify your T-SQL accordingly to fix highlighted errors and generate a new database. Let call it DB_SQL_AZURE_COMPLIANT,
- Migration DONE !! (either
let the tool correct for you or do it your self). This tool could even
push your database (without its data) directly into SQL Azure.
The steps after are to enable you to work in a secure manner and ensure your project is still compatible with SQL Azure, and provide a link to show how to also push your data (using BACPAC),
- With VS 2010, create (or use an existing) a SQL Server Data-tier Application
- Reverse Engineer you SQL database into Visual Studio Database DAC project using "Import Data-tier Application...", and connect to your new DB_SQL_AZURE_COMPLIANT database

- You will have a VS 2010 DB project that is able to generate DACPAC v2.0 deployment
file (basically, it is a ZIP file that contains schema of you database,
without any data. As opposed to BACPAC that is a extension of DACPAC,
where a BACPAC also contains you data as JSON format). More info on
DACPAC format: http://msdn.microsoft.com/en-us/library/ff719373.aspx
- Now you have a DB project that is most likely be able to be deployed into SQL Azure (you can be certain only once you have migrated everything). You could verify that by running again the “SQL Azure Migration Wizard” tool and deploy into SQL Azure. You now should have no errors.
- To double check it is really compliant, we are going to use our VM,
- Mount your VM and configure your network card (so you could access it vis MSTSC)
- Make a Snap shot of your VM (in case you want to rollback)
- Copy/Paste you DAC project (created with VS2010) into the VM and open it with VS11, and confirm the you want your project to be migrated into a VS11 DB project,
- Because you’ve done a great job correcting the T-SQL Errors, and you
have great Stored procedures, views, … and no errors, you could
activate ALL rules CodeAnalysis (below) with confidence !!
Also, ensure you have a Data-tier Application (.dacpac file) checkbox is selected, and that the “Target platform” is “SQL Azure”.

- Install Silverlight 5 add on the VM. This is because the existing one on the VM is old and will not support new SQL Azure web portal
(generally, unless you know what you do, do not install SL5 on your DEV
machine if you are working on SL4, else you would spend hours
uninstalling. Indeed, it will break your SL4 dev environment) - Connect to your Windows Azure web portal, and go to “Database” (this is in Silverlight 4)

- Click “Manage” this will open the Web portal to manage SQL Azure

- The opens a new Web portal to manage SQL Azure (in Silverlight 5)
- Now you could play with your newly database migrated into SQL Azure (type in plain T-SQL and run it). This web portal contains MANY MANY MANY great functionalities that you should discover ONLY progressively (because it looks nice, but a bit messy !!)
- The final step is to populate your database with data (simply
use a T-SQL script as a quick hack). Indeed, again DACPAC only deals
with schema and for data, this is done using BACPAC: http://www.4tecture.ch/blog/sql-azure-import-export-service-is-now-in-production
But this is another story, based on other Windows Azure platform components and further CodePlex projects !
By the way, with a large database, I never managed to make the Microsoft “
SQL Azure Compatibility Assessment” tool working.
http://www.microsoft.com/en-us/sqlazurelabs/labs/sqlassessment.aspx.It
seams really promising, but it always tells me that my DACPAC is of an
incorrect format, and that I should use a SQL Server Data Tools (CTP4)
to generate it.
But how come ?? unless my version of SQL Server Data Tools installed in
my VS11 is out of date ! In which case, I must again run after the
latest tool and latest news concerning Windows Azure.
Mon post d’origine: http://memoprojects.blogspot.com/2011/11/tfs11-vs11-ndepend-to-reverse-engineer.html
1. Introduction
In order to practice our skills with the latest version of TFS 11 and VS 11, I decided to reverse engineer rapidly the standard Microsoft Fabrikam Fiber project.
Because I am a big fan of NDepend (often used as quality and technical audit tool), I will use this tool to understand more about Fabrikam Fiber project.
Usually, I use NDepend along a Software Factory as a quality gate on the top of FxCop and StyleCop (Vincent Labatut has got a CodePlex project to integrate easily NDepend to TFS 2010's Build definition).
2. Presentation of Fabrikam Fiber
In the context of TFS 11 and VS 11 usage, Fabrikam Fiber is a Microsoft Web Project that to be a pseudo real case projec. As such it allows us to understand new concepts and practice ALM 11 tutorials. The source code is split accross 3 branches in TFS 11 : Main / Dev / Release1
3. How is it organized ?
It's where NDepend comes into play. It will help us not only reverse engineer quickly the solution, but it will also present Microsoft's Best Practices coding conventions.
To enable NDepend analysing your VS11 Solution just edit the version inside the *.SLN:

3.1 Overview of the solution
You'll be able to zoom in / out with NDepend, as well as move or edit the Dependency Graph below:

3.2 Investigating on specific elements
Moving the mouse over the main web project FabrikamFiber.Web,

tells us with a color coded conventions how many DLLs this projects are connected to. In the same time, it also presents a property window with loads of information (on the right). Moving the mouse to another assembly will dynamically change those info. The test project (below) is using NUnit framework with mocking. Which means, we will be able to play with the new VS 11 to use many type of tests (and not only MSTests).
 |  |
Let’s have a look at the NUnit tests. To do so, I can use another view called “Dependency Matrix”, where I can see that there’s 2 members coupled between nunit.framework and the test project:
 | Then, I can drill down to have more details, and get another Dependency Diagram that explains me the various relationships. And finally drill down to the source code. |
4. Code Quality of the source code
Out of the 82 Code Metrix provided by default, I am presenting you one of them below. It concerns performance issue of type “Boxing/unboxing methods that should be avoided” (you could create as many metrics as you want to suit your needs, using CQL language). It shows potentially 27 Performance issues.

- Pan (1) : The CQL query along with some advices
- Pan (2) : Where this query is classified into the SQL Query Explorer (you could create your own entry)
- Pan (3) : The number of quality infringements that satisfies the query
- Pan (4) : The 27 quality infringements are graphically filled in blue. The entire fractal representing your entire solution (decomposed graphically into Assemblies, namespace, … and methods). On mouse over the blue rectangles, you have more details.
- Pan (5) : The 27 quality infringements listed
- Pan (6) : Details property
5. HTML report
Here is an overview of the HTML report. Similarly to the “heavy” client, those reports are filled with plenty of help you understand various quality concepts.

I don’t know why, but the HTML report is the only way to visualize an interesting diagram “Abscractness versus Instability”.

This graph places all your assemblies into coloured zones and along 2 axis. From my experience, anything that does not fal into the green circled area should be considered as a pain to maintain. If an assembly falls into a red zone, you should fire the developer straight away !
Which mean this code’s implementation seams good from this diagram. Then we should double check with other indicators.
Since it is unfortunately a static PNG image, in large projects all assemblies are superimposed in the circled zone. Hence it becomes hard / impossible to read. As a result, I just use this graph as a trend indicator. Assembly in Orange or Red zone should be seldom, therefore you’ll be able to read its name.
Now I got a better idea of what this project is about, I can deep dive into the source code, and coming back and forth to NDepend, then drill down to the code again.
[Pour cette intro de SQL Azure, j`ai repris mon Post en anglais: http://memoprojects.blogspot.com/2011/10/sql-azure-overview-of-tools-for-using.html]

This post is about presenting rapidly tools for creating and managing SQL Azure.

I am delighted to see how much effort Microsoft put into Silverlight LOB tools {i.e. Silverlight is not dead}.
has invested a lot of effort into those tools. put into their tools for managing their Windows AZURE platform.
STEP 1. First of all let`s login to the Windows AZURE platform Web portal: https://windows.azure.com/

The entire interface is a Silverlight LOB application to manage a large amount of information and management operations {notice that HTML has not been forgotten and identified in Green above when resizable Rich Text is required. See note at the end}.
STEP 2. Go to Database Tab and instantiate a new SQL AZURE server, and choose one of the 6 Datacenter the MS `offers` you:
If you are concerned with data regulation when storing your database somewhere in the Cloud, here is a list of the countries and cities` location.

STEP 3. Create a database with Admin accounts. In this example, I just create a small database {1 GB max}.

STEP 4. Administering tool. To administer your database, use another SaaS tool provided by Microsoft: SQL Azure Management Portal.
Knowing that dhaigdshn8 is the name of my server, the address to administer it is located here: https://dhaigdshn8.database.windows.net
It is again a Silverlight LOB application:

Once logged in, you have here is the home page:

Create any databases that is required

STEP 5. Administer your database {Create tables, views, stored procedures, run commands…}. Notice the nice “Office ribbon”

STEP 6. Use your database.
Once setup, just use tools such as
. SQL Server Management Studio
. or Visual Studio {here under VS 2011}

STEP 7. That`s all, just enjoy your cloud database create in few seconds. How long would it take if you would have asked you IT service to create such database in production environment ? 
=================
NOTE 1: For information, you could apply to be part of Beta Programs on AZURE as shown:

NOTE 2: We can notice that MS used the Blob storage to store html pages {just change fr by en for English version}.
https://azureportalprod.blob.core.windows.net/dashboard-fr/commontasks.html

[English version on my other Blog:
www.thavo.com
].
Décidément, en cherchant des informations sur AZURE, je tombe par hasard sur un autre outil gratuit {dans sa version de base} pour faire des tests de montée en charge Web: CloudNetCare
Par contre, si on veut tester des applications Silverlight, je suppose qu`il faudra le combiner à d`autres outils comme Selenium-Silverlight {voir plus bas} et customizer les Scripts.
Super simple et rapide à configurer, il a une double particularité:
· Il se base sur AZURE pour augmenter sa capacité à injecter de la charge,
· Il crée non pas des requêtes HTTP pour simuler la charge {Virtual Users}, mais grâce à la possibilité de `scale-out` d`AZURE, il instancie de nombreux et véritables navigateurs web.
 | Comme c`est assez fatidieux de copier/coller ses URLs, et qu`en plus cela ne permet pas de simuler par exemples des clics sur des liens, une variante intéressante consiste à se baser sur des scripts Selenium pour faire des enregistrements de type GUI via Firefox. Notez qu`il y a de nombreuses aides et videos {escamotables} pour nous accompagner tout le long. |
Ensuite enfin, c`est une approche très `cloud` : paramétrez vos tests et choisissez par exemple le datacenter qui va être sollicité:
puis la topologie des tests:
`Pour un test de plus de 100 utilisateurs…` Comme le but d`une telle application est de bombarder votre/vos frontau{x} Web de requêtes afin de déterminer le seuil de rupture, l`application CloudNetCare comporte une protection:
Et non, il ne vous sera donc pas possible de monopoliser 6000 serveurs sur le Cloud et faire tomber les frontaux de vente-privee.com et ainsi figurer à la une de tous les journaux {à moins d`avoir un complice sur place………},
Enfin, il vous est possible de partager les résultats, soit par export CSV, soit en créant un lien Web. Voici un faux lien vers mon rapport de test : http://www.cloudnetcare.com/WF_ShareResult.aspx?id=7fc52303d17f465e8dc7195502c3238c&Language=FR {si vous retrouvez mon GUID vous êtes trop fort !!}
Concept véritablement intéressant, et grand merci CloudNetCare de nous laisser à disposition une version totalement gratuite.
Le seul problème du “public cloud”, c`est que pour tester mes applications Intranet, c`est plus délicat !!...
Enfin, on ne peut pas tout avoir... gratuitement et aussi simplement. En tout cas, je l`intègre volontier dans ma liste d`éléments pour une ALM encore plus simple et agile.
Alors, Bonne Agilité et peut être bon Scrum.
{Mon post d'origine ET mis à jour sur http://memoprojects.blogspot.com/2011/10/alleluia-load-test-tool-for-silverlight.html}
Après de nombreuses recherches, après avoir lu / écouté plusieurs personnes se plaindre des tests de charge pour des applications Silverlight, regardé des démos "Happy world", essayé des outils commerciaux {Voir PS en bas où j'ai énuméré quelques-unes de mes tentatives. UPDATE, j`ai remis en bas un de mes post qui m`a été censuré, mais j`en avais conservé une copie LOL. Je comprend pourquoi on a aussi peu d`infos },
j'ai finalement .... abandonné ce soir!
Mais une dernière recherche sur des sujets gravitant autour de Fiddler2 {d`après mes tests, je sentais que c`était une bonne piste}, je suis tombé sur stresstimulus. Alors désolé pour ceux/celles d'entre vous qui connaissaient déjà cet add-on gratuit pour Fiddler2 beta, et aussi peut-être ses limites {auquel cas, je suis preneur}.
Pour les puristes, je ne veux pas de tester Silverlight en tant que tel, car Silverlight s`exécute côté client et qu`on a déjà des outils à ce niveau. Plutôt, je voulais valider qu'une fois déployée en production, cette application RIA ne mettra pas nos serveurs `Down`. Donc, je veux simuler la charge côté serveur. Cette charge étant générée par les différents appels à aux services Web WCF.
Pour ma 1e tentative, j'ai choisi une `Line Of Business` assez complexe
{Avertissement pour ceux qui reconnaît cette application /!\ Je l'ai juste fait en douceur afin de ne pas tout casser}.

En 5 minutes, miracle j`obtiens des résultats détaillés ! Miracle, car ce fut tellement simple et ... en plus gratuit ! {Nous pourrions passer à la version Pro si ça fonctionne sur notre application réelle}.


Résultats
Performance Graphs: Number of simultaneous users, request per seconds, Average response time, Bytes received per seconds, Errors per seconds.
A summary page:
| Test Summary Test Case Summary File Name: Thavonekham-Tests.ssconfig Primary Pages: 2 URLs : 39 | |
Test Parameters Think time between base pages: As recorded Iteration timing: Think time between iterations - 2s Load pattern: Constant load Users: 5 Browser Type: IE8 Network Type: Dial-Up 56k Complete test after: 5 iterations Warm-up time: 0 seconds Test Run Information Date: Oct-1 2011 Start Time: 21:46:34.19 End Time: 21:48:00.11 Warm-up (s): 0 Aggregate Session time (s): 851.53 Test run duration (s): 85.92 | Overall Result Status: Completed Max User Load: 5 Total bytes sent: 138,960 Total bytes received: 41,191,492 Bytes sent/sec: 1,617.292 Bytes received/sec: 479,409.064 Errors Http Errors: 0 Total Timeouts: 0 Page Timeouts: 0 Missed Goals: 0 Test Iterations Iterations Started: 5 Iterations Completed: 5 Avg. iteration time (s): 78.76 Requests (HTTP transactions) Total requests: 195 Requests/sec: 2.27 Avg. response time (s): 4.37
|
Page detailed {in terms of *.aspx for instance}:

Request details {including resources such as xaml, png, xap, svc, …}

Et enfin
Iteration Details

Et cela sollicite bien mon PC {ce 2e test ci-dessous a duré 30 secondes}

Limitation: Les rapports générés ne détaillent pas le nom des WebMethods des services WCF appelés, sauf dans l`exemple que j`ai donné ci-dessus, car l`appel WebMethods passait par Query String.
Conclusion Ca marche aussi sur notre projet réel, mais il ne faut pas encore crier victoire. Car, même si j'adore Silverlight comme application pour faire du RIA, j'applique d'autant plus le proverbe "un tiens vaut mieux que deux tu l’auras ". Surtout qu'avec Silverlight on a l'impression d'être les parents pauvres du .Net ! {suivez mon regard pour les TU et le CodeCoverage, l`ALM Silverlight, …}
Si vous trouvez de meilleurs outils, là aussi je suis preneur.
PS: Pour la petite histoire sur une partie des différentes solutions que j'ai essayé "{
et commencez à comprendre ma douleur}. Un de mes post qui m`a été censure sur
http://forums.silverlight.net/p/77384/596846.aspx/1?p=True&t=634530835331190250
Re: Load Testing vis Silverlight Client? 1 hour, 16 minutes ago | LINK Hi, I also struggled finding a proper load testing tool for Silverlight 4 {I know plenty of smart people would claim that there is no need to test RIA, but I want to test the WCF that my SL is using} : Plenty of "Hello World" nice and sunny video, ... but the reality is so different. 1> Despite the fact I was using VS 2010 ultimate, it seams not to work "out of the box" for SL ! {despite its price} 2> I successfully used Fiddler2 {free of charge} to record aspx calls, and most importantly the binary WCF calls { svc}. Fiddler2 offers the surprising ability to "SAVE AS VISUAL STUDIO WEB TEST" [Visual Studio WebTest http://www.fiddler2.com/fiddler/help/WebTest.asp]. The only problem I had is that VS 2010 did not understand the binary messages that was recorded ! Damned !! I guess I unfortunately have to add an plain text endpoint. That was my most promising experience in Load testing with SL. 3> Otherwise you can find at least 2 CodePlex projects {http://wcfloadtest.codeplex.com/ and http://teamtestplugins.codeplex.com/}. that seams to be OK, but they are not really maintained. My first go with those tools did not succeed all the way through. only partially. 4> It seams HP Loadrunner 11 supports Silverlight 3 and 4 with WCF bin mode {but not advanced bindings, which is fine with me}. I will try that in the following months {just the time for me to sort out the license and first install}. 5> Selenium Silverlight http://code.google.com/p/silverlight-selenium/updates/list and www.neotys.com If you are more lucky with EASY tools {i.e. I know my VS 2010 would work with plenty of cheats and "CodePlexes" }, please HEEELLLLPPPPP !! UPDATE > alleluia I just tried a Free {but with limited Virutal Users} add on to the great Fiddler2 beta. It is stresstimulus > Follow the link here http://memoprojects.blogspot.com/2011/10/alleluia-load-test-tool-for-silverlight.html. Vincent THAVONEKHAM. SL4LoadTest@thavo.com www.thavo.com |
Jeff Sutherland et Ken Schwaber (les créateurs de Scrum appliqué à l’informatique) nous ont livrés ce weekend une nouvelle version de ce “framework” : Scrum Guide 2011.
La version 2011 est assez épurée car particulière. En effet, tout comme un jeux d’échec, ils ont souhaité distinguer 2 choses à présent :
- Les règles relativement simples d’un côté,
- Les stratégies pour gagner, les trucs et astuces, outillages, …
Le premier cas, “les règles”, est présenté comme un guide de règles du jeu, que je précise est livré gratuitement (contrairement à certaines autres méthodologies / Framework où cela est payant et protégé !). Il comporte des règles sont à respecter scrupuleusement (issues de plus de 20 ans d’expériences partagées par des experts connus, ayant travaillé ou collecté des données sur la raison des échecs de projets stratégiques). D’autres règles peuvent comporter des tolérances lorsque cela est précisé.
Le second cas, “la stratégie”, fait déjà l’objet de nombreux ouvrages dédiés, des Blogs , des présentations d’experts, …
Rien d’exceptionnelle dans cette mise à jour, mais néanmoins incontournable afin de connaitre les “règles du jeu” et rapide à lire (17 pages, titres, pied de pages, etc… compris !).
En plus du schéma classique de Mike Cohn :

et afin de célébrer cette nouvelle version 2011, je souhaitais réaliser une représentation de Scrum en 1 page :

Afin d’avoir une version à la fois simple, mais complète, je vais travailler sous forme d’itération. La dernière mise à jour se trouve sur : www.thavo.com “Scrum in one Slide”
Mots clés Technorati :
Scrum in one slide
Ce serait le rêve de générer par magie ses tests unitaires à partir des specs avant même d’avoir écrit son_code ?
- A la fois on serait en TDD, qui est déjà un rêve pour une majorité d’entre nous. Vous avez déjà entendu d’un Directeur/Chef de projet “Oui, c’est super les TU… mais on n’a pas le budget, le temps, il y a plus prioritaire, etc…”
- A la fois nos TU pourraient être “écrits” par le “Business Analyst” ou Chef de projet, si c’était le cas.
BDD existe déjà depuis un bout de temps, mais je voulais parler d’un outil particulier que nous allons découvrir ci-dessous.
PS: Dans ce cas BDD pas comme “Base De Données”, mais comme Behaviour Development Driven).
Comment cela peut fonctionner dans une ALM TFS en mode Agile ??
1. Le Chef de projet ou Business Analyst écrit les specs dans TFS en tant que User Story. Voici un exemple : 
2. Toujours le Chef de projet ou Business Analyst écrit les scénarii de validation de tests d’acceptance afin de valider la User Story précédente.
Pour cela, écrit dans un fichier texte *.feature (compatible avec le standard Cucumber-Gherkin syntax) sous Visual Studio 2010 pour disposer de l’IntelliSense !!.
PS1: il y aurait moyen de créer cela en tant que WorkItem puis générer ce fichier texte.
PS2: Pour faire le lien avec Scrum, on peut comparer cela à la “Definition Of Done”, qui doit être composé d’éléments mesurables, donc vérifiable (pas du genre… lorsque l’on clic sur le bouton “OK”, l’écran doit s’afficher rapidement).

3. Ensuite, toute la magie intervient dès que l’on fait Ctrl-S pour “enregistrer” ce fichier. Cela génère près de 100 lignes de code de tests unitaires C# (de type MsTest, mais cela pourrait être aussi xUnit, NUnit, MbUnit). ”La magie” s’appelle SpecFlow !! |  |
4. Enfin, on peut compiler le tout et lancer les Tests Unitaires. Ne pas paniquer, si cela ne passe pas, puisque cela respecte bien le principe de TDD se basant sur le “RGR” (Red Green Refactor). “Red”… enfin, techniquement, ci-dessous c’est Orange, car Inconclusive.

5. Comme c’est en “Red”, le développeur doit coder le code Business (ou bien le connecter ou bien injecter des objets existants) afin de le faire passer au Green. Pour cela, il suffit de copier / coller le code en bleu ci-dessous généré par TeamSpec (il y a probablement un autre moyen).
On colle cela dans un autre fichier; bon, pour faire passer au Green, j’ai mis partout des Assert True à titre d’exemple.
Lorsque tout est Green, on connecte le tout à la TeamBuild TFS afin d’être certain qu’il n’y a pas de régression à chaque Check-in (si Gated Check in), ou bien tous les soirs.
Ensuite, on “Refactor” la partie Business, voir ses TU afin de faire plus propre. Puis, le CDP réitère en rajoutant des nouvelles “Definition Of Done”, donc cas recasse et nous voila reparti pour le cycle Red Green Refactor.
Pour aller plus loin dans les tests : Utiliser SpecFlow avec Coded-UI de VS2010 :
https://github.com/techtalk/SpecFlow/wiki/Using-SpecFlow-with-CodedUI-API
PS: Suite à l’installation de SpecFlow, ne comptez pas sur l’aide PDF fournie pour vous donner un coup de main, mais votre moteur de recherche préféré
==> Il faut rajouter au csproj de test une référence vers l’assembly SpecFlow et un fichier App.Config contenant les informations suivantes :
Note : C'est MsTest, mais vous pouvez choisir les autres types, puis les "Custom Tool" vont opérer leur magie habituelle de génération de code!
{The End}
Mots clés Technorati :
TFS2010,
ALM,
VS2010,
outils Mis à part tout ce qui concerne la gestion de projet (type de méthodo : Sccrum, CMMI, ISO, PMBOK, PRINCE2, …, la constitution d’une bonne équipe, etc…), les outillages qui gravitent autour de TFS 2010 sont véritablement considérables.
Afin de réaliser une industrialisation logicielle complète, avec un maximum de “Best Practices” ALM, il faut faire un travail de fourmi pour trouver et rassembler toutes les informations (même la MSDN comportait juste des chapitres vides utilisés en tant que “Placeholder”).
Il y a de quoi être perdu dans tout cela, sauf si on utilise que TFS à la VSS pour faire du Checkin/out.
Ce Post vous propose ce synthétiser tout ce travail réalisé au fil des années d’ALM-lover afin de s’y retrouver, mais surtout :
- de s’y plonger rapidement, pour les nouveaux arrivants (et les décourager dès le départ)
- de réinstaller rapidement une ALM “from scratch” et l’exploiter, pour ceux qui connaissent déjà,
Une liste assez complète (mais jamais exhaustive) de ce qu’il faut / faudrait installer, lire, considérer est à votre disposition. Elle a été mise à jour à l’instant sur :
http://memoprojects.blogspot.com/2010/12/alm-tfs-2010-vs-2010-where-to-start.html
Afin de vous épargner 6 pages de docs détaillées dans le lien précédent, voici uniquement les 2 premiers points:
|
0. Prerequisites
You obviously need VS2010 + TFS2010 : either get a
. TFS 2010 Ultimate trial [Free],
. or get entire MS ALM (TFS 2010 +VS 2010 Ultimate with proper Service Pack and Powertools installed) {for Virtual PC, for Hyper-V, ... that expires every so often. Google for "Microsoft® Visual Studio® 2010 and Team Foundation Server® 2010 RTM virtual machine"} [Free],
. or have an MSDN account or proper license.
1. Outils obligatoires . Microsoft TFS Power Tools (> March 2011) [Free], . VS Productivity Tools add on [Free ], . TFS Sidekicks 2010 [Free - from Attrice Corporation], . Team Foundation Server Administration Tool [Free - from CodePlex] (to administer easily accounts accross TFS, Reporting Services and WSS), . FxCop/Code Analysis [Free - Comes with VS], . StyleCop/Source Analysis (>v4.4) [Free], . NDepend (if you think the 351 rules of FxCop and StyleCop are enough, trust me you're wrong !!! Get NDepend on the top of those two previous tools), . MSI generator (VS Installer could be enough, else use WIX [Free]= Windows Installer XML), . SoapUI to test your WCF Web Services [Free] or WCFTestClient [Free - Comes with VS] . TFS Admin tools (http://tfsadmin.codeplex.com/) [Free] , for eg. to add a user in both TFS, Sharepoint and Reporting Services in one click ! 2. Outils très recommandés . GhostDoc [Free - from Submain], . Doxygen [Free], . Inmeta Visual Studio Build Explorer will present your numerous Build definitions as a treeview [Free], . VS Power Tools : Work Item Search, Work Item Visualizer [Free], . WIX Edit [Free]+ Votive [Free] [to manage and generate automatically with TFS and for free your MSIs] . HP QTP (Quick Test Pro) [If you have a lot of money !], - or "cheaper" TELERIK WebUI Test Studio, - or Coded UI given in VS 2010 Ultimate. . A GREAT tool to test Web Services (including WCF Binary used by Silverlight) : HP ALM-Service Test 11 (not free !!! $$$$$) |
Afin d’avoir des informations :
. sur les mises à jours obligatoires,
. quels Webcasts regarder,
. liste de documents à lire, etc…
mais surtout une liste maintenue le plus à jour possible, RDV sur le lien indiqué précédemment.
Les années passent, et on a enfin de plus en plus d’infos sur comment customiser d’avantage son ALM TFS (au delà des trucs “classiques” comme la Gated Checkin et sa Build Process Template par défaut). Mais, je suis toujours surpris des “trous” et manquements de TFS par rapport à certains besoins super simple / basique.
Si vous voulez partager vos outils sur TFS 2010 / VS 2010 et ALM en général, n’hésitez pas. Enfin, une pensée pour Sharepoint tout de même : pour la partie ALM-Sharepoint, je laisse volontiers la main à PhilS ; la partie ALM-Base de données cf Miiitch ; les tests auto, etc… (enfin, je ne peux pas citer tout le monde !).
(mon post original sur thavo.com)
Vous souhaitez automatiser les Builds et le déploiement de votre projet Silverlight avec TFS 2010 ?? Alors vous allez vite être confronté à des problématiques de configuration du fichier ServiceReferences.ClientConfig.
En effet, ce dernier zippé au fin fond de votre *.xap doit référencer les différents URLs de vos WCF Binary, selon les environnements (Staging, Validation, Préprod, etc…). Alors comment bien gérer tout cela ?
Quelques possibilités :
- Ne pas utiliser ces fichiers, mais plutôt centraliser ces informations côté server, dans un fichier de configuration. Cela est très pratique si vous êtes éditeur de logiciel. Un seul et même Xap pour tous les clients. Mais cela nécessite de réaliser ou de modifier votre code Silverlight existant (avec risque de régression),
- Vous créer votre propre outil pour configurer cela et dézipper la bestiole http://sharpdevelop.net/OpenSource/SharpZipLib/Default.aspx (en profiter pour faire une page d’admin qui affiche toutes les références dans une page ASPX),
- Modifier manuellement chaque Xap (par exemple 7-Zip, WinZip, …) puis reZipper le tout, ni vu ni connu,
- Utiliser InstallShield / WIX ou autre, afin de modifier le Xap lors de l’installation,
- ou bien, ce que nous allons détailler ci-dessous : se baser sur les propriétés du csProj et s’inspirer de ce qui est fait pour le Web.Config, à savoir un fichier supplémentaire par nouvel environnement.
On va alors avoir dans Visual Studio 2010 :

Pour cela, il suffit de modifier le csProj :
Include="ServiceReferences.ClientConfig">
Designer
Include="ServiceReferences.Staging.ClientConfig">
ServiceReferences.ClientConfig
Ensuite, vous aurez remarqué les commentaires dans ce même fichier:
-->
Et bien, nous allons faire un équivalent (plus d’info sur la librairie Microsoft.Common.targets ici ou ici).
Dans le Target de votre csproj, faire un conditional execution d’un XCOPY. Soit Condition="'$(IsDesktopBuild)'=='true'" mais cela n’est plus supporté par MS, soit avec $(BuildingInsideVisualStudio)
<<font color="#c0504d">Exec Condition="$(BuildingInsideVisualStudio)=='true'"
Command="XCOPY ServiceReferences.Dev.ClientConfig ServiceReferences.ClientConfig /R /Y"
IgnoreExitCode="true" />
<<font color="#c0504d">Exec Condition="$(BuildingInsideVisualStudio)!='true'"
Command="XCOPY ServiceReferences.Staging.ClientConfig ServiceReferences.ClientConfig /R /Y"
IgnoreExitCode="true" />
<<font color="#c0504d">Exec Condition="$(BuildingInsideVisualStudio)!='true'"
Command="DIR *.* > BuildingInsideVisualStudio_NotTrue.txt"
IgnoreExitCode="true" />
<<font color="#c0504d">Exec Condition="$(BuildingInsideVisualStudio)=='true'"
Command="DIR *.* > BuildingInsideVisualStudio_True.txt"
IgnoreExitCode="true" />
Voila, c’est aussi simple que cela !
Ensuite, pour améliorer cela, il faudrait créer un mécanisme de XSLT comme pour le Web.Config, comme cela on ne maintient qu’un fichier principal, et juste la transformation à appliquer par environnement.
Les 10 derniers blogs postés
-
Kinect 1.5 is out ! par
Cyril Sansus le 05-21-2012, 17:47
-
Les actualités de la semaine sur c2i.fr (14 mai - 20 mai) par
Richard Clark le 05-21-2012, 08:50
-
Reactive Extensions : Consommer des services avec Rx Partie 3, les pièges à éviter par
Léonard Labat le 05-20-2012, 23:45
-
SharePoint Blog Site, problème d’archives par
Le Blog (Vert) d'Arnaud JUND le 05-20-2012, 13:09
-
Soirée ALT.NET Mai - 3 présentations par
#Rui le 05-18-2012, 11:59
-
[ #SharePoint 2010][ #SQLServer 2012] AlwaysOn pour SharePoint (2/4) : Configuration (2e partie)… par
Le blog de Patrick [MVP SharePoint] le 05-18-2012, 11:31
-
Team Foundation Server 11: tous les trésors cachés du site d’équipe par
Philess le 05-16-2012, 19:01
-
[PowerShell 3] Télécharger et installer la documentation en ligne par
Blog de SPBrouillet (Pierrick BROUILLET) le 05-16-2012, 17:36
-
[#SharePoint 2010][#SQLServer 2012] AlwaysOn pour SharePoint (1/4) : Configuration (1ère partie)… par
Le blog de Patrick [MVP SharePoint] le 05-16-2012, 12:10
-
Job Day @MIC Brussels - .Net Developers on Mobile applications par
Le Blog (Vert) d'Arnaud JUND le 05-15-2012, 20:26