public double[] ComputeRiskAndMaturity(string str, string choices)
double[] riskAndMaturity = new double[2];
double maturityCount = -1;
case "J’autorise Diag n'Grow à collecter et traiter mes données personnelles conformément aux dispositions applicables des CGU en vigueur.":
capitalValue = "Informations générales";
case "Nom de votre entreprise":
capitalValue = "Informations générales";
case "Numéro SIREN de votre entreprise":
capitalValue = "Informations générales";
case "Date de création de l'entreprise (immatriculation) ?":
capitalValue = "Informations générales";
DateTimeOffset dto = DateTimeOffset.Parse(choices);
GlobalUtilities.age = DateTimeOffset.Now.Year - dto.Year;
case "Quel est le statut juridique de votre entreprise ?":
capitalValue = "Informations générales";
case "Votre adresse mail :":
capitalValue = "Informations générales";
case "Votre rôle dans l'entreprise":
capitalValue = "Informations générales";
case "Pour quelle raison effectuez-vous ce diagnostic de votre start up ? (plusieurs réponses possibles)":
capitalValue = "Informations générales";
case "Vous identifiez-vous comme une entreprise de : (plusieurs réponses possibles)":
capitalValue = "Informations générales";
case "Votre activité est :":
capitalValue = "Informations générales";
GlobalUtilities.isBtoC = choices.Contains("BtoC") ? true : false;
case "Quelle est la zone géographique de votre marché (à horizon 3 ans) ?(plusieurs réponses possibles)":
capitalValue = "Informations générales";
maturityCount += choices.Contains("France") ? 1 : 0;
maturityCount += choices.Contains("Europe") ? 1 : 0;
maturityCount += choices.Contains("Francophonie") ? 1 : 0;
maturityCount += choices.Contains("Autre zone géographique") ? 1 : 0;
GlobalUtilities.frenchMarket = choices.Contains("France") && maturityCount < 2 ? true : false;
case "Sur quoi repose votre activité aujourd'hui (en % de votre CA réel ou prévisionnel) ?":
capitalValue = "Informations générales";
case "De quelles natures sont les barrières à l'entrée pour votre activité ? (plusieurs réponses possibles)":
capitalValue = "CR - Concurrence";
if (!choices.Contains("Pas de barrière à l'entrée"))
GlobalUtilities.barriereALentree = true;
this.AddRiskPoints("CR", "Concurrence", 5);
case "A combien estimez-vous le nombre de vos concurrents directs ?":
capitalValue = "CR - Concurrence";
riskCount = choices.Contains("10") && !GlobalUtilities.barriereALentree ? 5 : -1;
riskCount = choices.Contains("Plus de 10") || choices.Contains("Je ne sais pas") ? 5 : riskCount;
this.AddRiskPoints("CR", "Concurrence", riskCount);
case "Comment vous distinguez-vous de vos concurrents ? (plusieurs réponses possibles)":
capitalValue = "CR - Concurrence";
bool isMarkOrLogo = false;
maturityCount += choices.Contains("Une technologie innovante") ? 1 : 0;
maturityCount += choices.Contains("Un logiciel original") ? 1 : 0;
maturityCount += choices.Contains("Un algorithme original") ? 1 : 0;
maturityCount += choices.Contains("Un savoir-faire spécifique") ? 1 : 0;
maturityCount += choices.Contains("Une expertise forte") ? 1 : 0;
maturityCount += choices.Contains("Des packagings originaux") ? 1 : 0;
if (choices.Contains("Une marque"))
if (choices.Contains("Un logo"))
maturityCount += choices.Contains("Des données") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
riskCount = (maturityCount == 0) || (isMarkOrLogo && maturityCount < 3) ? 5 : -1;
maturityCount = (maturityCount * 5) / 10;
if (choices.Contains("Des packagings originaux") || choices.Contains("Un logo"))
this.AddMaturityPoints("CM", "Identité visuelle", 5);
this.AddMaturityPoints("CR", "Concurrence", maturityCount);
this.AddRiskPoints("CR", "Concurrence", riskCount);
case "Considérez-vous que votre entreprise est une \"entreprise à impact\" ?":
capitalValue = "CHO - Valeurs";
case "Votre entreprise défend-elle des valeurs particulières ?":
capitalValue = "CHO - Valeurs";
maturityCount = choices.Contains("Oui") ? 5 : 0;
this.AddMaturityPoints("CHO", "Valeurs", maturityCount);
capitalValue = "CHO - Valeurs";
maturityCount = !string.IsNullOrEmpty(choices) ? 5 : -1;
this.AddMaturityPoints("CHO", "Valeurs", maturityCount);
case "Avez-vous construit une communauté avec laquelle vous échangez autour de vos produits et des valeurs qu'ils défendent ?":
capitalValue = "CHO - Valeurs";
maturityCount = choices.Contains("Oui") ? 5 : 0;
this.AddMaturityPoints("CHO", "Valeurs", maturityCount);
case "Disposez-vous d'une labellisation spécifique ? Laquelle ?":
capitalValue = "CHO - Valeurs";
maturityCount = choices.Contains("Oui") ? 5 : 0;
this.AddMaturityPoints("CHO", "Valeurs", maturityCount);
case "Estimez-vous que la manière dont vous gérez votre entreprise est cohérente avec les valeurs que vous affichez ?":
capitalValue = "CHO - Valeurs";
maturityCount = choices.Contains("Oui, totalement") ? 5 : 0;
maturityCount = choices.Contains("Oui, en partie") ? 2.5 : maturityCount;
riskCount = choices.Contains("Oui, en partie") ? 2.5 : 0;
riskCount = choices.Contains("Pas encore") ? 5 : riskCount;
this.AddMaturityPoints("CHO", "Valeurs", maturityCount);
this.AddRiskPoints("CHO", "Valeurs", riskCount);
case "Composition de votre équipe : (plusieurs réponses possibles)":
capitalValue = "CHO - Collaborateurs";
string[] tmp = choices.Split("-");
GlobalUtilities.founders = string.IsNullOrEmpty(tmp[1]) ? 0 : Int32.Parse(tmp[1]);
GlobalUtilities.employees = string.IsNullOrEmpty(tmp[3]) ? 0 : Int32.Parse(tmp[3]);
GlobalUtilities.contractors = string.IsNullOrEmpty(tmp[5]) ? 0 : Int32.Parse(tmp[5]);
GlobalUtilities.trainees = string.IsNullOrEmpty(tmp[7]) ? 0 : Int32.Parse(tmp[7]);
riskCount = GlobalUtilities.founders + GlobalUtilities.employees < GlobalUtilities.contractors + GlobalUtilities.trainees ? 5 : -1;
this.AddRiskPoints("CHO", "Collaborateurs", riskCount);
case "Quelle est la proportion de femmes dans votre équipe ? (en %)":
capitalValue = "CHO - Collaborateurs";
maturityCount += (Int16.Parse(choices) >= 30 && Int16.Parse(choices) <= 70) ? 5 : 0;
this.AddMaturityPoints("CHO", "Collaborateurs", maturityCount);
case "Les compétences suivantes sont-elles représentées dans votre équipe ? (plusieurs réponses possibles)":
capitalValue = "CHO - Collaborateurs";
maturityCount += choices.Contains("Gestion") ? 0.5 : 0;
maturityCount += choices.Contains("Business Development") ? 0.5 : 0;
maturityCount += choices.Contains("Ingénierie informatique") ? 0.5 : 0;
maturityCount += choices.Contains("Management de l'innovation") ? 0.5 : 0;
maturityCount += choices.Contains("Ingénierie électronique") ? 0.5 : 0;
maturityCount += choices.Contains("Marketing - Communication") ? 0.5 : 0;
maturityCount += choices.Contains("Management de projet") ? 0.5 : 0;
maturityCount += choices.Contains("Finance") ? 0.5 : 0;
maturityCount += choices.Contains("Juridique") ? 0.5 : 0;
maturityCount += choices.Contains("Ressources humaines") ? 0.5 : 0;
maturityCount += choices.Contains("Design et expérience utilisateur") ? 0.5 : 0;
maturityCount += choices.Contains("Autre") ? 0.5 : 0;
maturityCount = (maturityCount * 5) / 6;
riskCount = maturityCount < 1.5 ? 5 : -1;
this.AddMaturityPoints("CHO", "Collaborateurs", maturityCount);
this.AddRiskPoints("CHO", "Collaborateurs", riskCount);
case "Rencontrez-vous des difficultés de recrutement sur des compétences clé ?":
capitalValue = "CHO - Collaborateurs";
riskCount = choices.Contains("Oui") ? 5 : -1;
this.AddRiskPoints("CHO", "Collaborateurs", riskCount);
case "Si oui, sur quelles compétences ?(plusieurs réponses possibles)":
capitalValue = "CHO - Collaborateurs";
case "Les rôles de chacun sont-ils clairement définis ?":
capitalValue = "CHO - Organisation";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
this.AddMaturityPoints("CHO", "Organisation", maturityCount);
this.AddRiskPoints("CHO", "Organisation", riskCount);
case "Comment les informations circulent-elles au sein de l'entreprise ? (plusieurs réponses possibles)":
capitalValue = "CHO - Organisation";
maturityCount += choices.Contains("Réunions régulières") ? 1 : 0;
maturityCount += choices.Contains("Mails") ? 1 : 0;
maturityCount += choices.Contains("Outil de discussion instantanée") ? 1 : 0;
maturityCount += choices.Contains("Discussions informelles") ? 1 : 0;
maturityCount += choices.Contains("Management visuel (Scrum, kanban, etc.)") ? 1 : 0;
maturityCount += choices.Contains("Outil d'attribution de tâches (ex Trello)") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
maturityCount = (maturityCount * 5) / 7;
riskCount = maturityCount <= 2 ? 5 : -1;
this.AddMaturityPoints("CHO", "Organisation", maturityCount);
this.AddRiskPoints("CHO", "Organisation", riskCount);
case "Avez-vous mis en place des mesures de gestion de la confidentialité ? (plusieurs réponses possibles)":
capitalValue = "CT - Protection";
maturityCount += choices.Contains("Une charte de confidentialité") ? 1 : 0;
maturityCount += choices.Contains("Des accords de confidentialité") ? 1 : 0;
maturityCount += choices.Contains("Des clauses de confidentialité dans les contrats") ? 1 : 0;
maturityCount += choices.Contains("Un classement de la confidentialité des informations") ? 1 : 0;
maturityCount = (maturityCount * 5) / 4;
riskCount = choices.Contains("Aucune") ? 5 : -1;
riskCount = maturityCount < 3 ? 5 : riskCount;
this.AddMaturityPoints("CT", "Protection", maturityCount);
this.AddRiskPoints("CT", "Protection", riskCount);
case "Avez-vous défini des indicateurs de suivi des ressources humaines de votre entreprise ?":
capitalValue = "CHO - Pilotage";
maturityCount += choices.Contains("Un suivi de la masse salariale") ? 1 : 0;
maturityCount += choices.Contains("Un suivi des frais de sous-traitance") ? 1 : 0;
maturityCount += choices.Contains("Un suivi de l’absentéisme") ? 1 : 0;
maturityCount += choices.Contains("Un suivi du turn-over") ? 1 : 0;
maturityCount += choices.Contains("Un suivi des besoins en formation") ? 1 : 0;
maturityCount += choices.Contains("Des indicateurs sur les écarts salariaux hommes/femmesn") ? 1 : 0;
maturityCount += choices.Contains("Un suivi du temps passé par tâches ou projets") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
maturityCount = (maturityCount * 5) / 8;
riskCount = choices.Contains("Aucun") ? 5 : -1;
riskCount = maturityCount < 3 ? 5 : riskCount;
this.AddMaturityPoints("CHO", "Pilotage", maturityCount);
this.AddRiskPoints("CHO", "Pilotage", riskCount);
case "Avez-vous mis en place des dispositifs d'accueil et d'intégration des nouveaux arrivants ?":
capitalValue = "CHO - Collaborateurs";
maturityCount = choices.Contains("Oui") ? 5 : 0;
this.AddMaturityPoints("CHO", "Collaborateurs", maturityCount);
case "Avez-vous mis en place un Plan de Continuité d'Activité et/ou de Reprise d'Activité ?":
capitalValue = "CHO - Pilotage";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
this.AddMaturityPoints("CHO", "Pilotage", maturityCount);
this.AddRiskPoints("CHO", "Pilotage", riskCount);
case "Vos locaux sont-ils situés dans un lieu dédié à l'accueil de start up (incubateur, ruche, etc.) ?":
capitalValue = "CHO - Collaborateurs";
maturityCount = choices.Contains("Oui") ? 5 : -1;
this.AddMaturityPoints("CHO", "Collaborateurs", maturityCount);
case "Vos locaux sont-ils facilement accessibles (transports en commun ou individuels) ?":
capitalValue = "CHO - Collaborateurs";
riskCount = choices.Contains("Non") ? 5 : -1;
this.AddRiskPoints("CHO", "Collaborateurs", riskCount);
case "Avez-vous signé un pacte d'associés ?":
capitalValue = "CHO - Gouvernance";
riskCount = GlobalUtilities.founders > 1 && choices.Contains("Non") ? 5 : -1;
this.AddRiskPoints("CHO", "Gouvernance", riskCount);
case "Avez-vous des actionnaires autres que les fondateurs ?":
capitalValue = "CHO - Gouvernance";
GlobalUtilities.actionnaires = choices.Contains("Oui") ? true : false;
capitalValue = "CHO - Gouvernance";
maturityCount += choices.Contains("Les actionnaires sont impliqués dans la vie de votre entreprise") ? 1 : 0;
maturityCount += choices.Contains("Les actionnaires sont alignés avec la stratégie de l'entreprise") ? 1 : 0;
maturityCount += choices.Contains("Les actionnaires sont reconnus dans votre écosystème") ? 1 : 0;
maturityCount += choices.Contains("Les actionnaires partagent volontiers leurs réseaux ") ? 1 : 0;
riskCount = maturityCount > 0 && !choices.Contains("Les actionnaires sont alignés avec la stratégie de l'entreprise") ? 5 : -1;
riskCount = maturityCount == 0 ? 5 : riskCount;
maturityCount = (maturityCount * 5) / 4;
this.AddMaturityPoints("CHO", "Gouvernance", maturityCount);
this.AddRiskPoints("CHO", "Gouvernance", riskCount);
case "Avez-vous mis en place des organes de gouvernance (conseil d'administration, comité stratégique, etc.) ?":
capitalValue = "CHO - Gouvernance";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = GlobalUtilities.actionnaires && choices.Contains("Non") ? 5 : -1;
this.AddMaturityPoints("CHO", "Gouvernance", maturityCount);
this.AddRiskPoints("CHO", "Gouvernance", riskCount);
case "Etes-vous d'accord avec l'affirmation suivante :\"La communication de l'entreprise est pilotée avec vigilance et est toujours en accord avec ses valeurs\"":
capitalValue = "CM - Notoriété";
maturityCount = choices.Contains("Oui") ? 5 : -1;
maturityCount = choices.Contains("En partie") ? 2.5 : maturityCount;
riskCount = choices.Contains("Non") ? 5 : -1;
riskCount = choices.Contains("En partie") ? 2.5 : riskCount;
this.AddMaturityPoints("CM", "Notoriété", maturityCount);
this.AddRiskPoints("CM", "Notoriété", riskCount);
this.AddMaturityPoints("CHO", "Valeurs", maturityCount);
this.AddRiskPoints("CHO", "Valeurs", riskCount);
case "Parmi les affirmations suivantes, veuillez sélectionner celles qui correspondant à votre entreprise : (Plusieurs choix possibles)":
capitalValue = "CM - Notoriété";
maturityCount += choices.Contains("La marque ne peut pas être confondue avec une autre") ? 1 : 0;
maturityCount += choices.Contains("Les clients sont fiers d'utiliser nos produits") ? 1 : 0;
maturityCount += choices.Contains("La marque constitue une garantie pour les produits que vends l'entreprise") ? 1 : 0;
riskCount += choices.Contains("Les clients ne montrent pas qu'ils utilisent nos produits") ? 1 : 0;
riskCount += choices.Contains("L'entreprise ou la marque ont rencontré ou rencontrent des difficultés de réputation ou d'image") ? 1 : 0;
riskCount += choices.Contains("Ces dfficultés ont été médiatisées (presse, réseaux sociaux, etc.)") ? 1 : 0;
maturityCount = (maturityCount * 5) / 3;
riskCount = (riskCount * 5) / 3;
this.AddMaturityPoints("CM", "Notoriété", maturityCount);
this.AddRiskPoints("CM", "Notoriété", riskCount);
case "Comment qualifiez-vous la notoriété de votre marque principale sur son marché ?":
capitalValue = "CM - Notoriété";
case "Le nom de votre entreprise est-il identique à celui de l'un de vos produit ?":
capitalValue = "CM - Marque";
case "Merci de préciser les différents noms que vous utilisez ?":
capitalValue = "CM - Marque";
case "Avez-vous déposé une ou plusieurs marques ?":
capitalValue = "CM - Marque";
GlobalUtilities.protectedBrand = choices.Contains("Oui") ? true : false;
riskCount = choices.Contains("Non") ? 5 : 0;
this.AddRiskPoints("CM", "Marque", riskCount);
capitalValue = "CM - Marque";
maturityCount += choices.Contains("Vous avez protégé le nom de l'entreprise") ? 1 : 0;
maturityCount += choices.Contains("Vous avez protégé le ou les noms des produits") ? 1 : 0;
maturityCount = (maturityCount * 5) / 2;
maturityCount = GlobalUtilities.protectedBrand && maturityCount > 0 ? maturityCount : -1;
this.AddMaturityPoints("CM", "Marque", maturityCount);
case "Votre marque principale a été déposée":
capitalValue = "CM - Marque";
riskCount = choices.Contains("A votre nom") ? 5 : -1;
this.AddRiskPoints("CM", "Marque", riskCount);
case "Votre marque principale est protégée : (plusieurs réponses possibles)":
capitalValue = "CM - Marque";
riskCount += choices.Contains("France") ? 1 : 0;
riskCount += choices.Contains("Europe") ? 1 : 0;
riskCount += choices.Contains("Sur d'autres territoires") ? 1 : 0;
riskCount = riskCount < 2 && choices.Contains("France") && GlobalUtilities.frenchMarket ? 5 : -1;
this.AddRiskPoints("CM", "Marque", riskCount);
case "Quelles sont les caractéristiques de votre marque principale ? (plusieurs réponses possibles)":
capitalValue = "CM - Marque";
maturityCount += choices.Contains("Les produits et services protégés par votre marque (classes) correspondent parfaitement à vos activités") ? 1 : 0;
maturityCount += choices.Contains("Vous effectuez régulièrement") ? 1 : 0;
maturityCount = (maturityCount * 5) / 2;
riskCount += choices.Contains("Votre marque décrit votre activité") ? 1 : 0;
riskCount += choices.Contains("Votre marque (telle quelle ou avec une forte ressemblance)") ? 1 : 0;
riskCount += choices.Contains("Seul le nom de votre marque est protégé (marque verbale)") ? 1 : 0;
riskCount += choices.Contains("Le nom et le logo sont protégés par une seule marque (marque semi-figurative)") ? 1 : 0;
riskCount += choices.Contains("Seul le logo est protégé (marque figurative)") ? 1 : 0;
riskCount += choices.Contains("Les produits et services protégés par votre marque (classes) sont plus larges que vos activités") ? 1 : 0;
riskCount += choices.Contains("Les produits et services protégés par votre marque (classes) ne correspondent pas à toutes vos activités") ? 1 : 0;
riskCount = (riskCount * 5) / 7;
this.AddMaturityPoints("CM", "Marque", maturityCount);
this.AddRiskPoints("CM", "Marque", riskCount);
case "Votre logo, si vous n'en êtes pas le créateur, a-t-il fait l'objet d'un contrat de cession des droits d’auteur ?":
capitalValue = "CM - Identité visuelle";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
this.AddMaturityPoints("CM", "Identité visuelle", maturityCount);
this.AddRiskPoints("CM", "Identité visuelle", riskCount);
case "Afin de vous protéger, avez-vous acheté plusieurs noms de domaine proche de celui ou ceux que vous exploitez ?":
capitalValue = "CM - Noms de domaines";
maturityCount = choices.Contains("Oui") ? 5 : -1;
this.AddMaturityPoints("CM", "Noms de domaines", maturityCount);
case "Avez-vous mis en place un processus de gestion de vos noms de domaine (renouvellement, veille, etc.) ?":
capitalValue = "CM - Noms de domaines";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
this.AddMaturityPoints("CM", "Noms de domaines", maturityCount);
this.AddRiskPoints("CM", "Noms de domaines", riskCount);
case "Sur quels réseaux sociaux votre entreprise est-elle présente ? (plusieurs réponses possibles)":
capitalValue = "CM - Notoriété";
maturityCount += choices.Contains("Linkedin") ? 1 : 0;
maturityCount += choices.Contains("Facebook") ? 1 : 0;
maturityCount += choices.Contains("Twitter") ? 1 : 0;
maturityCount += choices.Contains("Instagram") ? 1 : 0;
maturityCount += choices.Contains("Snapchat") ? 1 : 0;
maturityCount += choices.Contains("Pinterest") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
maturityCount = maturityCount == 1 ? 2.5 : maturityCount;
maturityCount = maturityCount > 1 ? 5 : maturityCount;
riskCount = GlobalUtilities.isBtoC && !choices.Contains("Facebook") && !choices.Contains("Instagram") ? 5 : -1;
this.AddMaturityPoints("CM", "Notoriété", maturityCount);
this.AddRiskPoints("CM", "Notoriété", riskCount);
case "Avez-vous déjà rencontré des litiges (courrier, opposition, etc.) concernant votre marque, votre logo, votre nom de domaine ou un de vos comptes sur les réseaux sociaux ?":
capitalValue = "CM - Marque - Nom de domaine ";
case "De quel type de litige s'agissait-il ? (plusieurs réponses possibles)":
capitalValue = "CM - Marque - Nom de domaine - Identité visuelle - Notoriété";
if (choices.Contains("Une lettre d'un titulaire de marque ou de son avocat après la publication de votre demande de marque ou une procédure d'opposition à une marque"))
GlobalUtilities.brandDispute = true;
if (choices.Contains("Un litige lié à votre identité visuelle (logo, site web, etc.)"))
GlobalUtilities.logoDispute = true;
if (choices.Contains("Un litige lié à votre nom de domaine"))
GlobalUtilities.domainDispute = true;
if (choices.Contains("Un litige lié aux réseaux sociaux"))
GlobalUtilities.sociaMedialDispute = true;
case "Un de ces litiges est-il toujours en cours ?":
capitalValue = "CM - Marque";
riskCount = choices.Contains("Oui") && GlobalUtilities.brandDispute ? 5 : -1;
if (GlobalUtilities.brandDispute)
this.AddRiskPoints("CM", "Marque", riskCount);
riskCount = choices.Contains("Oui") && GlobalUtilities.logoDispute ? 5 : -1;
if (GlobalUtilities.logoDispute)
this.AddRiskPoints("CM", "Identité visuelle", riskCount);
riskCount = choices.Contains("Oui") && GlobalUtilities.domainDispute ? 5 : -1;
if (GlobalUtilities.domainDispute)
this.AddRiskPoints("CM", "Noms de domaines", riskCount);
riskCount = choices.Contains("Oui") && GlobalUtilities.sociaMedialDispute ? 5 : -1;
if (GlobalUtilities.sociaMedialDispute)
this.AddRiskPoints("CM", "Notoriété", riskCount);
case "Générez-vous du chiffre d'affaire ?":
capitalValue = "CR - Business model ";
case "Votre business model est-il scalable ? (La scalabilité est la capacité d'une entreprise à produire plus en réalisant des économies d'échelle pour un produit ou un service de performance équivalente)":
capitalValue = "CR - Business model";
maturityCount = choices.Contains("Totalement") ? 5 : 0;
maturityCount = choices.Contains("Partiellement") ? 2.55 : maturityCount;
riskCount = choices.Contains("Partiellement") ? 2.5 : riskCount;
riskCount = choices.Contains("Pas du tout") ? 5 : 0;
this.AddRiskPoints("CR", "Business model", maturityCount);
this.AddRiskPoints("CR", "Business model", riskCount);
case "Votre business model repose-t-il sur ?":
capitalValue = "CR - Business model ";
case "Avez-vous défini des indicateurs de suivi de la performance de votre entreprise ?(plusieurs réponses possibles)":
capitalValue = "CHO - Pilotage";
maturityCount += choices.Contains("Des indicateurs de suivi des objectifs à court terme") ? 1 : 0;
maturityCount += choices.Contains("Des indicateurs de suivi des objectifs à long terme") ? 1 : 0;
maturityCount += choices.Contains("Un suivi de la marge brute") ? 1 : 0;
maturityCount += choices.Contains("Un suivi du seuil de rentabilité") ? 1 : 0;
maturityCount += choices.Contains("Des indicateurs de suivi des stocks") ? 1 : 0;
maturityCount += choices.Contains("Un suivi des cycles d'exploitation") ? 1 : 0;
maturityCount += choices.Contains("Un suivi du \"Burn Rate\"") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
maturityCount = (maturityCount * 5) / 8;
riskCount = choices.Contains("Aucun") ? 5 : 0;
riskCount = !choices.Contains("Des indicateurs de suivi des objectifs à long terme") && !choices.Contains("Des indicateurs de suivi des objectifs à court terme") ? 5 : riskCount;
riskCount = maturityCount < 4 ? 5 : riskCount;
this.AddRiskPoints("CHO", "Pilotage", maturityCount);
this.AddRiskPoints("CHO", "Pilotage", riskCount);
case "Pouvez-vous indiquer ce qui est selon vous le facteur clé de réussite de votre entreprise (une expertise, un savoir-faire, une compétence, une innovation, etc. que vous maîtrisez et qui est la plus importante à vos yeux pour la réussite de votre entreprise) ?":
capitalValue = "CHO - Pilotage";
case "Sur quoi est basée votre stratégie commerciale ? (plusieurs possibles)":
capitalValue = "CHO - Pilotage";
riskCount = choices.Contains("Pas de stratégie commerciale définie") ? 5 : -1;
this.AddRiskPoints("CHO", "Pilotage", riskCount);
case "Parmi les enjeux suivant, lequel vous paraît le plus stratégique pour le fonctionnement de votre entreprise ?":
capitalValue = "CHO - Pilotage";
case "Sur quels types d'innovation votre entreprise base-t-elle son développement ?":
capitalValue = "CT - Innovation";
GlobalUtilities.isTechProduct = choices.Contains("produit") ? true : false;
GlobalUtilities.isTechProduct = choices.Contains("technologique") ? true : GlobalUtilities.isTechProduct;
case "Vos innovations sont-elles plutôt de : ":
capitalValue = "CT - Innovation";
riskCount = GlobalUtilities.isTechProduct && choices.Contains("Je ne sais pas") ? 5 : -1;
this.AddRiskPoints("CT", "Innovation", riskCount);
case "Vous avez défini une stratégie d'innovation et de recherche et développement (R&D) ?":
capitalValue = "CT - Innovation";
maturityCount = choices.Contains("Oui") ? 5 : -1;
riskCount = choices.Contains("Non") && GlobalUtilities.isTechProduct ? 5 : -1;
this.AddMaturityPoints("CT", "Innovation", maturityCount);
this.AddRiskPoints("CT", "Innovation", riskCount);
case "Que développez-vous ? (une seule réponse possible)":
capitalValue = "CT - Innovation";
case "Les tendances sociétales sont-elles favorables à vos produits ?":
capitalValue = "CR - Clients";
riskCount = choices.Contains("Non") || choices.Contains("Je ne sais pas") ? 5 : -1;
this.AddRiskPoints("CR", "Clients", riskCount);
case "Quels pourcentages de vos produits sont :":
capitalValue = "CR - Infos générales ";
case "Sur quoi vous basez-vous pour lancer un nouveau projet d'innovation et de R&D ? (Plusieurs réponses possibles)":
capitalValue = "CT - Innovation";
maturityCount += choices.Contains("Etude de marché/veille concurrentielle") ? 1 : 0;
maturityCount += choices.Contains("Demande client") ? 1 : 0;
riskCount = maturityCount == 0 && choices.Contains("Intuition") ? 5 : -1;
maturityCount = (maturityCount * 5) / 2;
this.AddMaturityPoints("CT", "Innovation", maturityCount);
this.AddRiskPoints("CT", "Innovation", riskCount);
case "Un budget innovation/R&D a-t-il été défini ?":
capitalValue = "CT - Innovation";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") && GlobalUtilities.age >= 2 ? 5 : -1;
riskCount = choices.Contains("Non") && GlobalUtilities.isTechProduct ? 5 : riskCount;
this.AddMaturityPoints("CT", "Innovation", maturityCount);
this.AddRiskPoints("CT", "Innovation", riskCount);
case "Pour consolider votre capacité à innover, vous appuyez-vous sur des centres de recherche ou des établissements de l'enseignement supérieur ?":
capitalValue = "CT - Innovation";
maturityCount = choices.Contains("Oui") ? 5 : -1;
this.AddMaturityPoints("CT", "Innovation", maturityCount);
case "Travaillez-vous avec des structures de transfert de technologie et de valorisation de la recherche publique ?":
capitalValue = "CT - Innovation";
maturityCount = choices.Contains("Oui") ? 5 : -1;
this.AddMaturityPoints("CT", "Innovation", maturityCount);
case "Si oui, lesquels ?":
capitalValue = "CT - Innovation";
case "Etes-vous accompagné par un incubateur ou un accélérateur ?":
capitalValue = "CT - Infos générales ";
case "Etes-vous membre d'un programme de recherche financé par des fonds européens ?":
capitalValue = "CT - Innovation";
maturityCount = choices.Contains("Oui") ? 5 : -1;
this.AddMaturityPoints("CT", "Innovation", maturityCount);
case "Bénéficiez-vous de mesures fiscales de soutien à l'innovation ?(plusieurs réponses possibles)":
capitalValue = "CT - Innovation";
maturityCount = choices.Contains("Jeune Entreprise Innovante") ? 1 : 0;
maturityCount += choices.Contains("Crédit Impôt Recherche") ? 1 : 0;
maturityCount += choices.Contains("Crédit Impôt Innovation") ? 1 : 0;
maturityCount += choices.Contains("Crédit Impôt Innovation") ? 0.5 : 0;
maturityCount = (maturityCount * 5) / 3.5;
this.AddMaturityPoints("CT", "Innovation", maturityCount);
case "Sur quelles briques technologiques votre activité est-elle basée ? (plusieurs réponses possibles)":
capitalValue = "CT - Technologie";
case "Les technologies software/hardware utilisées sont-elles ? (plusieurs réponses possibles)":
capitalValue = "CT - Technologie";
maturityCount += choices.Contains("Récentes (premières versions inférieures à 2 ans)") ? 1 : 0;
maturityCount += choices.Contains("Répandues") ? 1 : 0;
maturityCount += choices.Contains("A jour (versions récentes)") ? 1 : 0;
maturityCount += choices.Contains("Maintenues") ? 1 : 0;
maturityCount = (maturityCount * 5) / 4;
riskCount = maturityCount == 0 ? 5 : -1;
this.AddMaturityPoints("CT", "Technologie", maturityCount);
this.AddRiskPoints("CT", "Technologie", riskCount);
case "Comment sont développés vos produits ? (plusieurs réponses possibles)":
capitalValue = "CT - Technologie";
maturityCount += choices.Contains("Développement interne ou briques technologiques issues de R&D interne") ? 1 : 0;
maturityCount += choices.Contains("Utilisation de librairies ou de technologies externes (API, solutions cloud, open source ou non)") ? 1 : 0;
maturityCount += choices.Contains("Briques technologiques issues de transferts de technologie") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
riskCount += choices.Contains("Développement sous-traité par un prestataire externe") ? 1 : 0;
riskCount = riskCount > 0 && maturityCount == 0 ? 5 : -1;
this.AddRiskPoints("CT", "Technologie", riskCount);
case "Comment estimez-vous la facilité d'évolution de vos produits ?":
capitalValue = "CT - Technologie";
maturityCount = choices.Contains("Peu compliqué") ? 2.5 : -1;
maturityCount = choices.Contains("Facile") ? 5 : maturityCount;
maturityCount = choices.Contains("Très facile") ? 5 : maturityCount;
riskCount = choices.Contains("Peu compliqué") ? 2.5 : -1;
riskCount = choices.Contains("Impossible") ? 5 : riskCount;
riskCount = choices.Contains("Compliqué") ? 5 : riskCount;
this.AddMaturityPoints("CT", "Technologie", maturityCount);
this.AddRiskPoints("CT", "Technologie", riskCount);
case "L'évolution de vos produits vous semble-t-elle ?":
capitalValue = "CT - Technologie";
maturityCount = choices.Contains("Peu risquée") ? 2.5 : maturityCount;
maturityCount = choices.Contains("Sans risque") ? 5 : maturityCount;
riskCount = choices.Contains("Très risquée") ? 5 : riskCount;
riskCount = choices.Contains("Risquée") ? 5 : riskCount;
this.AddMaturityPoints("CT", "Technologie", maturityCount);
this.AddRiskPoints("CT", "Technologie", riskCount);
case "Intégrez-vous une réflexion \"expérience utilisateur\" (UX) dans la conception de vos produits ?":
capitalValue = "CT - Innovation";
maturityCount = choices.Contains("Toujours") ? 5 : 0;
maturityCount = choices.Contains("Parfois") ? 2.5 : maturityCount;
maturityCount = choices.Contains("Pas encore") ? 1.25 : maturityCount;
riskCount = choices.Contains("Jamais") ? 5 : 0;
this.AddMaturityPoints("CT", "Innovation", maturityCount);
this.AddRiskPoints("CT", "Innovation", riskCount);
case "Quels processus produits sont partiellement ou totalement documentés (formalisés et normés) ? (plusieurs réponses possibles)":
capitalValue = "CT - Documentation";
maturityCount += choices.Contains("Processus de développement informatique") ? 1 : 0;
maturityCount += choices.Contains("Processus qualité") ? 1 : 0;
maturityCount += choices.Contains("Processus support") ? 1 : 0;
maturityCount += choices.Contains("Processus de gestion de projet") ? 1 : 0;
maturityCount += choices.Contains("Processus de R&D et d'innovation") ? 1 : 0;
maturityCount += choices.Contains("Processus de conception et expérience utilisateur") ? 1 : 0;
maturityCount += choices.Contains("Processus d'intégration de briques externes") ? 1 : 0;
maturityCount += choices.Contains("Processus de production") ? 1 : 0;
maturityCount += choices.Contains("Processus de livraison") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
maturityCount = (maturityCount * 5) / 10;
riskCount = choices.Contains("Aucun") ? 5 : 0;
riskCount = maturityCount < 5 ? 2.5 : riskCount;
riskCount = maturityCount < 3 ? 5 : riskCount;
this.AddMaturityPoints("CT", "Documentation", maturityCount);
this.AddRiskPoints("CT", "Documentation", riskCount);
case "Quelle proportion en % de vos processus ci-dessus estimez-vous avoir documenté ?":
capitalValue = "CT - Documentation";
case "Connaissez-vous et respectez-vous les conditions d'utilisation des licences des briques logicielles que vous utilisez ?":
capitalValue = "CT - Protection";
riskCount = choices.Contains("Non") ? 5 : 0;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : riskCount;
this.AddRiskPoints("CT", "Protection", riskCount);
case "De quand date la dernière revue de vérification des licences open source ?":
capitalValue = "CT - Protection";
case "Comment protégez-vous votre propriété intellectuelle ? (plusieurs réponses possibles)":
capitalValue = "CT - Protection";
maturityCount += choices.Contains("Brevets déposés ou envisagés") ? 1 : 0;
maturityCount += choices.Contains("Solution d'horodatage (enveloppe Soleau, MaPreuve, blockchain, autre.)") ? 1 : 0;
maturityCount += choices.Contains("Protection du design (dessin et modèle)") ? 1 : 0;
maturityCount += choices.Contains("Contrats de cession de droits d'auteur (code source, développement web, contenu web, logo, etc.)") ? 1 : 0;
maturityCount += choices.Contains("Accords de confidentialité") ? 1 : 0;
maturityCount += choices.Contains("Contrats de licences de logiciels") ? 1 : 0;
maturityCount += choices.Contains("Clauses de propriété intellectuelles dans vos CGU/CGV") ? 1 : 0;
maturityCount += choices.Contains("Votre nom et la date sur tous les documents destinés à l'externe") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
riskCount = choices.Contains("Pas de mesures spécifiques") ? 5 : -1;
maturityCount = (maturityCount * 5) / 9;
this.AddMaturityPoints("CT", "Protection", maturityCount);
this.AddRiskPoints("CT", "Protection", riskCount);
case "Avez-vous au moins un brevet publié ?":
capitalValue = "CT - Protection";
maturityCount = choices.Contains("Oui") ? 5 : -1;
this.AddMaturityPoints("CT", "Protection", maturityCount);
case "Quels sont les numéros de publication de ces brevets ? (ex de format attendu : FR3091965, EP3684158...)":
capitalValue = "CT - Protection";
case "Effectuez-vous une veille régulière ? (plusieurs réponses possibles)":
capitalValue = "CT - Documentation - Concurrence";
maturityCount += choices.Contains("Oui, une veille technologique") ? 1 : 0;
maturityCount += choices.Contains("Oui, une veille concurrentielle") ? 1 : 0;
maturityCount += choices.Contains("Oui, une veille réglementaire") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
maturityCount = (maturityCount * 5) / 4;
if (choices.Contains("Oui, une veille concurrentielle") || choices.Contains("Oui, une veille technologique"))
this.AddMaturityPoints("CR", "Concurrence", 5);
this.AddMaturityPoints("CT", "Documentation", maturityCount);
this.AddRiskPoints("CT", "Documentation", riskCount);
case "Respectez-vous des normes, standards et/ou certifications qualité ?":
capitalValue = "CT - Documentation - Technologie";
maturityCount = choices.Contains("Oui") ? 5 : -1;
riskCount = choices.Contains("Non") ? 5 : -1;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : riskCount;
this.AddMaturityPoints("CT", "Documentation", maturityCount);
this.AddRiskPoints("CT", "Documentation", riskCount);
this.AddMaturityPoints("CT", "Technologie", maturityCount);
this.AddRiskPoints("CT", "Technologie", riskCount);
capitalValue = "CT - Documentation - Technologie";
case "Quelle méthode de gestion de projet utilisez-vous ? (plusieurs réponses possibles)":
capitalValue = "CSI - Méthodes";
case "Le code source est-il stocké et versionné ?":
capitalValue = "CSI - Qualité";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : riskCount;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
case "Avez-vous un back-up du code source ? (plusieurs réponses possibles)":
capitalValue = "CSI - Qualité";
case "A quelle fréquence effectuez-vous ce back-up ?(plusieurs réponses possibles)":
capitalValue = "CSI - Qualité";
maturityCount += choices.Contains("Tous les jours") ? 1 : 0;
maturityCount += choices.Contains("A chaque nouvelle version du code source") ? 1 : 0;
riskCount = maturityCount < 2 && !string.IsNullOrEmpty(choices) ? 5 : -1;
maturityCount = maturityCount > 1 ? 5 : 0;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
case "Utilisez-vous des environnements différenciés pour le développement, le test et la production ?":
capitalValue = "CSI - Qualité - Méthodes";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : 0;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
this.AddMaturityPoints("CSI", "Méthodes", maturityCount);
this.AddRiskPoints("CSI", "Méthodes", riskCount);
case "Ces environnements différenciés ont-ils tous les mêmes caractéristiques techniques ?":
capitalValue = "CSI - Qualité - Méthodes";
case "Quel type d'architecture technique utilisez-vous ?":
capitalValue = "CSI - Méthodes";
riskCount = choices.Contains("Je ne sais pas") ? 5 : -1;
this.AddRiskPoints("CSI", "Méthodes", riskCount);
case "Votre architecture peut-elle supporter une augmentation brusque de charge ?":
capitalValue = "CSI - Qualité - Méthodes";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : riskCount;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
this.AddMaturityPoints("CSI", "Méthodes", maturityCount);
this.AddRiskPoints("CSI", "Méthodes", riskCount);
case "Par qui sont réalisés les tests de vos produits ? (plusieurs réponses possibles)":
capitalValue = "CSI - Qualité";
maturityCount += choices.Contains("Le chef de projet") ? 1 : 0;
maturityCount += choices.Contains("Une équipe interne dédiée") ? 1 : 0;
maturityCount += choices.Contains("Une équipe externe") ? 1 : 0;
maturityCount += choices.Contains("Le client") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
riskCount = choices.Contains("Pas de tests") ? 5 : 0;
riskCount = choices.Contains("Les développeurs") && maturityCount == 0 ? 5 : riskCount;
maturityCount += choices.Contains("Les développeurs") ? 1 : 0;
maturityCount = (maturityCount * 5) / 6;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
case "Quels types de test sont sont réalisés ?":
capitalValue = "CSI - Qualité";
maturityCount += choices.Contains("Tests d'acceptation utilisateurs (recette client)") ? 1 : 0;
maturityCount += choices.Contains("Tests UX") ? 1 : 0;
maturityCount += choices.Contains("Tests de performance") ? 1 : 0;
maturityCount += choices.Contains("Tests de sécurité (résistance aux attaques, pannes, etc.)") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
riskCount = string.IsNullOrEmpty(choices) ? 5 : -1;
riskCount = choices.Contains("Tests techniques (unitaires, intégration, etc.)") && maturityCount == 0 ? 5 : riskCount;
maturityCount += choices.Contains("Tests techniques (unitaires, intégration, etc.)") ? 1 : 0;
maturityCount = (maturityCount * 5) / 6;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
case "Quand les tests sont-ils effectués ? (plusieurs réponses possibles)":
capitalValue = "CSI - Qualité";
maturityCount += choices.Contains("Autre") ? 1 : 0;
maturityCount += choices.Contains("Au fur et à mesure du développement") ? 1 : 0;
maturityCount += choices.Contains("A chaque livraison") ? 1 : 0;
riskCount += choices.Contains("A la demande du client") ? 1 : 0;
riskCount += choices.Contains("Lors de la découverte d'un bug") ? 1 : 0;
riskCount = choices.Contains("Pas de tests") ? 5 : 0;
riskCount = riskCount > 0 && maturityCount == 0 ? 5 : riskCount;
maturityCount += choices.Contains("A la demande du client") ? 1 : 0;
maturityCount += choices.Contains("Lors de la découverte d'un bug") ? 1 : 0;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
case "Comment les tests sont-ils réalisés ?(plusieurs réponses possibles)":
capitalValue = "CSI - Qualité";
case "Quels documents qualité avez-vous formalisés ?(plusieurs réponses possibles)":
capitalValue = "CSI - Qualité - Documentation";
maturityCount += choices.Contains("Politique qualité globale pour l'entreprise") ? 1 : 0;
maturityCount += choices.Contains("Stratégie par produit") ? 1 : 0;
maturityCount += choices.Contains("Cas de test") ? 1 : 0;
maturityCount += choices.Contains("Périmètres de test") ? 1 : 0;
maturityCount += choices.Contains("Documents de reporting") ? 1 : 0;
maturityCount += choices.Contains("Tests techniques (unitaires, intégration, etc.)") ? 1 : 0;
maturityCount += choices.Contains("Documentation des briques intégrées en production") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
riskCount = choices.Contains("Aucun") ? 5 : -1;
maturityCount = (maturityCount * 5) / 8;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
this.AddMaturityPoints("CT", "Documentation", maturityCount);
this.AddRiskPoints("CT", "Documentation", riskCount);
case "Ces documents sont-ils généralement partagés et validés avec le client ?":
capitalValue = "CSI - Qualité - Documentation";
maturityCount = choices.Contains("Oui") ? 5 : -1;
riskCount = choices.Contains("Non") ? 5 : -1;
this.AddMaturityPoints("CSI", "Qualité", riskCount);
this.AddMaturityPoints("CT", "Documentation", riskCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
this.AddRiskPoints("CT", "Documentation", riskCount);
case "Les cas de test sont-ils rédigés dans un outil dédié ?":
capitalValue = "CSI - Qualité";
case "Les cas de test sont-ils priorisés ?":
capitalValue = "CSI - Qualité";
maturityCount = choices.Contains("Oui") ? 5 : 0;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
case "Quels types d'outils utilisez-vous ?(plusieurs réponses possibles)":
capitalValue = "CSI - Méthodes";
maturityCount += choices.Contains("Outils de gestion des tests (Testlink, QualityCenter, etc.)") ? 1 : 0;
maturityCount += choices.Contains("Outils d'automatisation (Selenium, Appium, RobotFramework, etc.)") ? 1 : 0;
maturityCount += choices.Contains("Outils d'intégration et déploiement continu (Azure DevOps, Jenkins, etc.)") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
maturityCount = (maturityCount * 5) / 4;
this.AddMaturityPoints("CSI", "Méthodes", maturityCount);
case "Appliquez-vous des méthodes de développement spécifiques ?(plusieurs réponses possibles)":
capitalValue = "CSI - Méthodes";
maturityCount += choices.Contains("Behaviour Driven Development") ? 1 : 0;
maturityCount += choices.Contains("Test Driven Development") ? 1 : 0;
maturityCount += choices.Contains("Acceptance Test Driven Development") ? 1 : 0;
maturityCount += choices.Contains("Domain Driven Development") ? 1 : 0;
maturityCount += choices.Contains("Sotware Craftmanship") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
maturityCount = maturityCount > 0 ? 5 : 0;
riskCount = choices.Contains("Je ne connais pas ces termes") ? 5 : -1;
this.AddMaturityPoints("CSI", "Méthodes", maturityCount);
this.AddRiskPoints("CSI", "Méthodes", riskCount);
case "Utilisez vous un outil de ticketing (Redmine, Jira, etc.) ?":
capitalValue = "CSI - Méthodes";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
this.AddMaturityPoints("CSI", "Méthodes", maturityCount);
this.AddRiskPoints("CSI", "Méthodes", riskCount);
case "A quelle part du coût du développement estimez-vous le coût du support ? (en %)":
capitalValue = "CSI - Méthodes - Qualité";
riskCount = Int16.Parse(choices) >= 25 ? 5 : -1;
this.AddRiskPoints("CSI", "Méthodes", riskCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
case "Quand les bugs sont-ils détectés ? (en % de bugs détectés par phase)":
capitalValue = "CSI - Qualité";
string[] ch = choices.Split("-");
int beforeDev = !string.IsNullOrEmpty(ch[1]) ? Int16.Parse(ch[1]) : 0;
int inDev = !string.IsNullOrEmpty(ch[3]) ? Int16.Parse(ch[3]) : 0;
int internalAcceptance = !string.IsNullOrEmpty(ch[5]) ? Int16.Parse(ch[5]) : 0;
int externalAcceptance = !string.IsNullOrEmpty(ch[7]) ? Int16.Parse(ch[7]) : 0;
int prod = !string.IsNullOrEmpty(ch[9]) ? Int16.Parse(ch[9]) : 0;
int other = !string.IsNullOrEmpty(ch[11]) ? Int16.Parse(ch[11]) : 0;
maturityCount = beforeDev + inDev + internalAcceptance > externalAcceptance + prod + prod ? 5 : 0;
riskCount = externalAcceptance + prod + other > 20 ? 5 : -1;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
case "Par qui les bugs critiques sont-ils reportés ?(en % de fréquence)":
capitalValue = "CSI - Qualité";
int devs = !string.IsNullOrEmpty(ch[1]) ? Int16.Parse(ch[1]) : 0;
int otherInternals = !string.IsNullOrEmpty(ch[3]) ? Int16.Parse(ch[3]) : 0;
int otherExternals = !string.IsNullOrEmpty(ch[5]) ? Int16.Parse(ch[5]) : 0;
int others = !string.IsNullOrEmpty(ch[7]) ? Int16.Parse(ch[7]) : 0;
riskCount = others + otherExternals > 20 ? 5 : -1;
maturityCount = others + otherExternals <= 20 ? 5 : 0;
this.AddMaturityPoints("CSI", "Qualité", maturityCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
case "En production, à quelle fréquence des bugs critiques sont-ils reportés ?":
capitalValue = "CSI - Qualité";
maturityCount = choices.Contains("Jamais") ? 5 : -1;
maturityCount = choices.Contains("Rarement") ? 2.5 : maturityCount;
maturityCount = choices.Contains("Régulièrement") ? 0 : maturityCount;
riskCount = choices.Contains("Régulièrement") ? 5 : -1;
riskCount = choices.Contains("Rarement") ? 2.5 : riskCount;
this.AddRiskPoints("CSI", "Qualité", riskCount);
this.AddRiskPoints("CSI", "Qualité", riskCount);
case "Disposez-vous d'un backlog technique ou d'une roadmap technique ?":
capitalValue = "CSI - Méthodes";
GlobalUtilities.hasBacklog = choices.Contains("Oui") ? true : false;
riskCount = choices.Contains("Non") ? 5 : -1;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : riskCount;
this.AddRiskPoints("CSI", "Méthodes", riskCount);
case "Si oui, comment est-il stocké ? (plusieurs réponses possibles)":
capitalValue = "CSI - Méthodes";
maturityCount += choices.Contains("Outil en ligne dédié") ? 1 : 0;
maturityCount += choices.Contains("Tableau physique/post it") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
maturityCount = choices.Contains("Fichier Excel/Word") ? 0 : maturityCount;
riskCount = GlobalUtilities.hasBacklog && (string.IsNullOrEmpty(choices) ||
choices.Contains("Fichier Excel/Word") ||
choices.Contains("Je ne sais pas")) ? 5 : -1;
this.AddMaturityPoints("CSI", "Méthodes", maturityCount);
this.AddRiskPoints("CSI", "Méthodes", riskCount);
case "Quels éléments sont en ligne ? (plusieurs réponses possibles)":
capitalValue = "CSI - Infos générales ";
case "Où sont-ils hébergés ? (plusieurs réponses possibles)":
riskCount = choices.Contains("Dans le reste du monde") ? 2.5 : 0;
riskCount = choices.Contains("Je ne sais pas") ? 5 : riskCount;
this.AddRiskPoints("CSI", "Données", riskCount);
case "Quels types de protections avez-vous mis en place ? (plusieurs réponses possibles)":
capitalValue = "CSI - Sécurité";
maturityCount += choices.Contains("Connexion sécurisée (https)") ? 1 : 0;
maturityCount += choices.Contains("Solutions anti-spam") ? 1 : 0;
maturityCount += choices.Contains("Solutions bloquant les attaques par déni de service (DDOS)") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
riskCount = choices.Contains("Aucun") ||
choices.Contains("Je ne sais pas") ||
string.IsNullOrEmpty(choices) ? 5 : -1;
maturityCount = (maturityCount * 5) / 4;
this.AddMaturityPoints("CSI", "Sécurité", maturityCount);
this.AddRiskPoints("CSI", "Sécurité", riskCount);
case "Des audits de sécurité sont-ils effectués ?":
capitalValue = "CSI - Sécurité";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : riskCount;
this.AddMaturityPoints("CSI", "Sécurité", maturityCount);
this.AddRiskPoints("CSI", "Sécurité", riskCount);
case "Si oui, à quelle fréquence ?":
capitalValue = "CSI - Sécurité";
case "Des tests d'attaque (pen test) sont-ils réalisés ?":
capitalValue = "CSI - Sécurité";
maturityCount = choices.Contains("Oui") ? 5 : -1;
riskCount = choices.Contains("Non") ? 5 : -1;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : -1;
this.AddMaturityPoints("CSI", "Sécurité", maturityCount);
this.AddRiskPoints("CSI", "Sécurité", riskCount);
case "L'équipe est sensibilisée aux risques de : (plusieurs réponses possibles)":
capitalValue = "CSI - Sécurité";
maturityCount += choices.Contains("Phishing") ? 1 : 0;
maturityCount += choices.Contains("Ransonware") ? 1 : 0;
maturityCount += choices.Contains("Virus de type Cheval de Troie") ? 1 : 0;
maturityCount += choices.Contains("Divulgation d'informations confidentielles") ? 1 : 0;
maturityCount += choices.Contains("Fuite et perte de données") ? 1 : 0;
maturityCount += choices.Contains("Vol de matériel") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
maturityCount = (maturityCount * 5) / 7;
riskCount = choices.Contains("Aucun") ? 5 : -1;
this.AddMaturityPoints("CSI", "Sécurité", maturityCount);
this.AddRiskPoints("CSI", "Sécurité", riskCount);
case "Utilisez-vous un VPN ?":
capitalValue = "CSI - Infos générales";
case "Autorisez-vous le télétravail ?":
capitalValue = "CSI - Infos générales - Collaborateurs";
case "Avez-vous défini une politique pour les mots de passe ? (plusieurs réponses possibles)":
capitalValue = "CSI - Sécurité";
maturityCount += choices.Contains("Des conseils sur le choix des mots de passe à privilégier") ? 1 : 0;
maturityCount += choices.Contains("Des obligations à respecter pour la structure des mots de passe") ? 1 : 0;
maturityCount += choices.Contains("Des durées de vie limitées des mots de passe") ? 1 : 0;
maturityCount += choices.Contains("Un gestionnaire de mots de passe") ? 1 : 0;
maturityCount += choices.Contains("Autre") ? 1 : 0;
riskCount = choices.Contains("Rien de particulier") ? 5 : -1;
this.AddMaturityPoints("CSI", "Sécurité", maturityCount);
this.AddRiskPoints("CSI", "Sécurité", riskCount);
case "Les collaborateurs (salariés et stagiaires) sont-ils autorisés à travailler sur des ordinateurs qui n'appartiennent pas à l'entreprise ?":
capitalValue = "CSI - Sécurité";
riskCount = choices.Contains("Oui") ? 5 : -1;
this.AddRiskPoints("CSI", "Sécurité", riskCount);
case "Les collaborateurs (salariés et stagiaires) sont-ils autorisés à utiliser des appareils mobiles (téléphones, tablettes, etc.) qui n'appartiennent pas à l'entreprise ?":
capitalValue = "CSI - Sécurité";
riskCount = choices.Contains("Oui") ? 5 : -1;
this.AddRiskPoints("CSI", "Sécurité", riskCount);
case "Une politique de sécurité des matériels est-elle définie et appliquée ?":
capitalValue = "CSI - Sécurité";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : -1;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : -1;
this.AddMaturityPoints("CSI", "Sécurité", maturityCount);
this.AddRiskPoints("CSI", "Sécurité", riskCount);
case "Votre politique de confidentialité des données (RGPD) figure-t-elle dans les mentions légales de votre site ou de vos produits et services ?":
capitalValue = "CSI - Données";
maturityCount = choices.Contains("Oui") ? 5 : -1;
GlobalUtilities.rgpd = choices.Contains("Oui") ? true : false;
riskCount = choices.Contains("Non") ? 5 : -1;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : -1;
this.AddMaturityPoints("CSI", "Données", maturityCount);
this.AddRiskPoints("CSI", "Données", riskCount);
case "Avez-vous identifié un \"DPO\" au sein de l'équipe ?":
capitalValue = "CSI - Données";
maturityCount = choices.Contains("Oui") ? 5 : -1;
riskCount = (choices.Contains("Non") || choices.Contains("Ne se prononce pas")) ? 5 : -1;
GlobalUtilities.DPO = (choices.Contains("Non") || choices.Contains("Ne se prononce pas")) ? false : true;
this.AddMaturityPoints("CSI", "Données", maturityCount);
this.AddRiskPoints("CSI", "Données", riskCount);
case "Quel type de données collectez-vous ?(plusieurs réponses possibles)":
capitalValue = "CSI - Données";
riskCount += choices.Contains("Coordonnées de contact") ? 0.5 : 0;
GlobalUtilities.contactData = choices.Contains("Coordonnées de contact") ? true : false;
riskCount += choices.Contains("Données de navigation") ? 0.5 : 0;
GlobalUtilities.navData = choices.Contains("Données de navigation") ? true : false;
riskCount += choices.Contains("Données de CRM (prospects, historique, commandes, etc.)") ? 0.5 : 0;
GlobalUtilities.crmData = choices.Contains("Données de CRM (prospects, historique, commandes, etc.)") ? true : false;
riskCount += choices.Contains("Données bancaires") ? 1 : 0;
GlobalUtilities.bankData = choices.Contains("Données bancaires") ? true : false;
riskCount += choices.Contains("Données médicales ou paramédicales") ? 1 : 0;
GlobalUtilities.medData = choices.Contains("Données médicales ou paramédicales") ? true : false;
riskCount += choices.Contains("Copies de documents administratifs") ? 1 : 0;
GlobalUtilities.adminData = choices.Contains("Copies de documents administratifs") ? true : false;
riskCount += choices.Contains("Données RH") ? 0.5 : 0;
GlobalUtilities.hrData = choices.Contains("Données RH") ? true : false;
riskCount += choices.Contains("Autre") ? 0.5 : 0;
GlobalUtilities.otherData = choices.Contains("Autre") ? true : false;
riskCount = !GlobalUtilities.DPO || !GlobalUtilities.rgpd ? riskCount * 1.5 : riskCount;
riskCount = !GlobalUtilities.DPO && !GlobalUtilities.rgpd ? riskCount * 2 : riskCount;
riskCount = (riskCount * 5) / 5.5;
this.AddRiskPoints("CSI", "Données", riskCount);
case "Quelles sont les sources des données que vous détenez ?(plusieurs réponses possibles)":
capitalValue = "CSI - Données";
case "Comment utilisez-vous les données collectées ?(plusieurs réponses possibles)":
capitalValue = "CSI - Données";
riskCount = choices.Contains("Analyse") || choices.Contains("Stockage/archivage") || choices.Contains("Autre") ? 1.67 : 0;
riskCount = choices.Contains("Partage avec des sous-traitants en Europe") || choices.Contains("Vente de données en Europe") ? 3.33 : riskCount;
riskCount = choices.Contains("Partage avec des sous-traitants hors Europe") || choices.Contains("Vente de données hors Europe") ? 5 : riskCount;
this.AddRiskPoints("CSI", "Données", riskCount);
case "Disposez-vous d'un registre de traitement des données ?":
capitalValue = "CSI - Données";
maturityCount = choices.Contains("Oui") ? 5 : 0;
bool nsp = choices.Contains("Non") || choices.Contains("Ne se prononce pas") ? true : false;
riskCount += nsp && GlobalUtilities.contactData ? 0.5 : 0;
riskCount += nsp && GlobalUtilities.navData ? 0.5 : 0;
riskCount += nsp && GlobalUtilities.crmData ? 0.5 : 0;
riskCount += nsp && GlobalUtilities.bankData ? 1 : 0;
riskCount += nsp && GlobalUtilities.medData ? 1 : 0;
riskCount += nsp && GlobalUtilities.adminData ? 1 : 0;
riskCount += nsp && GlobalUtilities.hrData ? 0.5 : 0;
riskCount += nsp && GlobalUtilities.otherData ? 0.5 : 0;
riskCount = (riskCount * 5) / 5.5;
this.AddRiskPoints("CSI", "Données", riskCount);
case "Ne conservez-vous que les données qui sont nécessaires à votre activité ?":
capitalValue = "CSI - Données";
maturityCount = choices.Contains("Oui") ? 5 : -1;
nsp = choices.Contains("Non") || choices.Contains("Ne se prononce pas") ? true : false;
riskCount += nsp && GlobalUtilities.contactData ? 0.5 : 0;
riskCount += nsp && GlobalUtilities.navData ? 0.5 : 0;
riskCount += nsp && GlobalUtilities.crmData ? 0.5 : 0;
riskCount += nsp && GlobalUtilities.bankData ? 1 : 0;
riskCount += nsp && GlobalUtilities.medData ? 1 : 0;
riskCount += nsp && GlobalUtilities.adminData ? 1 : 0;
riskCount += nsp && GlobalUtilities.hrData ? 0.5 : 0;
riskCount += nsp && GlobalUtilities.otherData ? 0.5 : 0;
riskCount = (riskCount * 5) / 5.5;
this.AddMaturityPoints("CSI", "Données", maturityCount);
this.AddRiskPoints("CSI", "Données", riskCount);
case "Avez-vous mis en place un processus de suppression des données ?":
capitalValue = "CSI - Données";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : -1;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : riskCount;
this.AddMaturityPoints("CSI", "Données", maturityCount);
this.AddRiskPoints("CSI", "Données", riskCount);
case "Les données sont-elles accessibles par toute l'équipe ?":
capitalValue = "CSI - Données - Sécurité";
maturityCount = choices.Contains("Non") ? 5 : 0;
riskCount = choices.Contains("Oui") ? 5 : -1;
riskCount = choices.Contains("Ne se prononce pas") ? 5 : riskCount;
this.AddMaturityPoints("CSI", "Données", maturityCount);
this.AddRiskPoints("CSI", "Données", riskCount);
this.AddMaturityPoints("CSI", "Sécurité", maturityCount);
this.AddRiskPoints("CSI", "Sécurité", riskCount);
case "Avez-vous défini une stratégie vis à vis de vos partenaires et fournisseurs ?":
capitalValue = "CR - Fournisseurs - Partenariats";
maturityCount = choices.Contains("Non") ? 0 : -1;
maturityCount = choices.Contains("Oui, elle est mise en oeuvre") ? 5 : maturityCount;
maturityCount = choices.Contains("Oui, les partenaires et les fournisseurs sont identifiés mais la stratégie n'est pas encore mise en oeuvre") ?
riskCount = choices.Contains("Non") ? 5 : 0;
this.AddMaturityPoints("CR", "Fournisseurs", maturityCount);
this.AddRiskPoints("CR", "Fournisseurs", riskCount);
this.AddMaturityPoints("CR", "Partenariats", maturityCount);
this.AddRiskPoints("CR", "Partenariats", riskCount);
case "Avec quel type de partenaires ou fournisseurs travaillez-vous ?":
capitalValue = "CR - Fournisseurs - Partenariats";
case "Avez-vous défini un processus de gestion et suivi des fournisseurs ?":
capitalValue = "CR - Fournisseurs";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : 0;
this.AddMaturityPoints("CR", "Fournisseurs", maturityCount);
this.AddRiskPoints("CR", "Fournisseurs", riskCount);
case "Un de vos fournisseurs (au moins) vous a-t-il déjà fait défaut ?":
capitalValue = "CR - Fournisseurs";
riskCount = choices.Contains("Non") || choices.Contains("Pas de fournisseurs") || choices.Contains("Oui, sans impact") ? 0 : -1;
riskCount = choices.Contains("Oui, avec un impact modéré") ? 2.5 : riskCount;
riskCount = choices.Contains("Oui, avec un impact significatif") ? 5 : riskCount;
this.AddRiskPoints("CR", "Fournisseurs", riskCount);
case "Les livraisons de vos fournisseurs ont-elles des défauts ?":
capitalValue = "CR - Fournisseurs";
riskCount = choices.Contains("Rares") || choices.Contains("Jamais") ? 0 : -1;
riskCount = choices.Contains("Fréquents") || choices.Contains("Très fréquents") ? 5 : riskCount;
this.AddRiskPoints("CR", "Fournisseurs", riskCount);
case "Avez-vous des contrats (partenariats, commandes, POC, etc.) signés avec des grands groupes ou des établissements publics?":
capitalValue = "CR - Partenariats";
case "Si oui, ces contrats :":
capitalValue = "CR - Partenariats";
maturityCount += choices.Contains("Ont une influence sur la stratégie de l'entreprise") ? 1 : 0;
maturityCount += choices.Contains("Sont un levier de croissance pour l'entreprise") ? 1 : 0;
riskCount = choices.Contains("Sont essentiels pour la survie de l'entreprise") ? 5 : -1;
maturityCount = (maturityCount * 5) / 2;
this.AddMaturityPoints("CR", "Partenariats", maturityCount);
this.AddRiskPoints("CR", "Partenariats", riskCount);
case "Etes vous d'accord avec l'affirmation suivante :\"L'entreprise dispose d'un solide portefeuille de clients qui lui permet d'envisager sereinement son développement à moyen ou long terme\" ?":
capitalValue = "CR - Clients";
maturityCount = choices.Contains("Oui") ? 5 : -1;
maturityCount = choices.Contains("En partie") ? 2.5 : maturityCount;
maturityCount = choices.Contains("Non") ? 0 : maturityCount;
riskCount = choices.Contains("Non") ? 5 : -1;
riskCount = choices.Contains("En partie") ? 2.5 : riskCount;
riskCount = choices.Contains("Oui") ? 0 : riskCount;
this.AddMaturityPoints("CR", "Clients", maturityCount);
this.AddRiskPoints("CR", "Clients", riskCount);
case "Avez-vous défini et formalisé une stratégie d'acquisition clients ?":
capitalValue = "CR - Clients";
maturityCount = choices.Contains("Oui") ? 5 : 0;
riskCount = choices.Contains("Non") ? 5 : -1;
this.AddMaturityPoints("CR", "Clients", maturityCount);
this.AddRiskPoints("CR", "Clients", riskCount);
case "Cette stratégie est-elle appliquée et suivie ?":
capitalValue = "CR - Clients";
maturityCount = choices.Contains("Oui") ? 5 : 0;
maturityCount = choices.Contains("En partie") ? 2.5 : maturityCount;
riskCount = choices.Contains("Non") || choices.Contains("Ne se prononce pas") ? 5 : -1;
riskCount = choices.Contains("En partie") ? 2.5 : riskCount;
this.AddMaturityPoints("CR", "Clients", riskCount);
this.AddRiskPoints("CR", "Clients", riskCount);
case "Quel est en % le taux de fidélité de vos clients ? (Taux de fidélité = nombre de clients conservés sur la période/nombre de clients totaux)":
capitalValue = "CR - Clients";
case "Disposez-vous d'un outil de CRM ?":
capitalValue = "CR - Clients";
maturityCount = choices.Contains("Oui") ? 5 : 0;
this.AddMaturityPoints("CR", "Clients", maturityCount);
case "Avec quels types d'indicateurs pilotez-vous la relation avec vos clients ?":
capitalValue = "CR - Clients";
maturityCount += choices.Contains("Des indicateurs de segmentation") ? 1 : 0;
maturityCount += choices.Contains("Des indicateurs de satisfaction des clients") ? 1 : 0;
maturityCount += choices.Contains("Des indicateurs de fidélité") ? 1 : 0;
maturityCount += choices.Contains("Des indicateurs sur le coût d'acquisition des clients") ? 1 : 0;
maturityCount += choices.Contains("Des indicateurs sur la fréquentation de votre site web") ? 1 : 0;
maturityCount += choices.Contains("Analyse des retours des clients") ? 1 : 0;
riskCount = choices.Contains("Aucun") ? 5 : -1;
maturityCount = (maturityCount * 5) / 6;
this.AddMaturityPoints("CR", "Clients", maturityCount);
this.AddRiskPoints("CR", "Clients", riskCount);
case "Les indicateurs dont vous disposez vous semblent-ils suffisamment efficaces pour piloter votre relation client ?":
capitalValue = "CR - Clients";
maturityCount = choices.Contains("Oui") ? 5 : 0;
this.AddMaturityPoints("CR", "Clients", maturityCount);
riskAndMaturity[0] = Math.Round(maturityCount, 2);
riskAndMaturity[1] = Math.Round(riskCount, 2);