Historique d'apprentissage pour participer au développement d'applications d'équipe en Python ~ Pensez un peu à la définition des exigences ~

introduction

Cette fois, en participant au projet, le planificateur

Définition des exigences - Articles qui peuvent devenir des ressources humaines capables de concevoir des systèmes

J'utiliserai cet article comme référence pour approfondir ma propre connaissance de la définition des exigences.

Qu'est-ce que la définition des exigences?

→ ** Promesse préalable spécifique sur laquelle le client et l'équipe de développement peuvent s'entendre lors de la livraison ** (Le processus par lequel le côté développement clarifie ce que le client doit faire en réponse à la demande du client)

Processus de définition des exigences

1. Idée (demande)

La plupart des clients et des utilisateurs ne sont pas familiarisés avec le système et le développement, nous allons donc écouter l'étape de l'idée.

2. Demande

Après avoir entendu l'idée dans une certaine mesure, nous la considérerons en tenant compte de la compétence et de la date de livraison du côté développement et proposerons l'idée où elle peut être approximativement réalisée en tant que fonction.

3. Exigences

Nous nous mettrons enfin d'accord sur les fonctions à implémenter en tant que système et la méthode de mise en œuvre.

Subdivision de processus

À titre d'exemple approximatif, j'ai moi-même pensé à l'exemple suivant. Ce n'est peut-être pas si lâche, mais j'espère que vous me pardonnerez d'avoir vérifié le processus en détail.

Après l'examen, ce sera le processus commercial réel, donc cette fois je n'omettrai que les éléments de l'article original pour savoir quoi faire. Soit dit en passant, c'est techniquement impossible maintenant, mais cela est basé sur le concept de l'application que je veux faire à l'avenir, alors sachez que nous ne considérerons pas la faisabilité et les détails cette fois-ci.

Demande

1. Clarifier les problématiques actuelles des clients (motivation pour la création de systèmes et d'applications)

ex. Je possède des studios de location et des espaces libres dans la préfecture, mais l'utilisation n'est pas bonne et je souhaite l'améliorer.

2. Clarifier les objectifs des problèmes

ex.30% d'augmentation du taux d'utilisation par rapport à l'année dernière

3. Écart entre la situation actuelle et l'objectif (= liste des problèmes à résoudre)

・ Le modèle économique des studios de location est une activité passive avec des clients qui souhaitent l'utiliser, et dans de nombreux cas, sécuriser une place et sécuriser le nombre de personnes est un goulot d'étranglement pour les clients.

・ Le système d'enregistrement d'utilisation existant n'est pas facile à utiliser pour les clients.

demande

Contexte du projet

1. Aperçu du système requis pour résoudre le problème

・ Pour l'inscription, préparez un calendrier et un horaire afin que l'état actuel de la réservation puisse être vu en un coup d'œil pour chaque studio ou espace libre.

・ Pour la partie commerciale passive, nous ajouterons des fonctions de correspondance, des tableaux d'affichage et des fonctions SNS pour proposer un moyen de fournir aux clients une place et d'éliminer le problème de rassemblement du personnel.

En d'autres termes, je pense que c'est une scène où nous discutons du type de systèmes et de services dont nous devrions disposer pour résoudre le fossé entre la situation actuelle et nos objectifs. En fait, lorsque nous demandons des interviews aux entreprises et parlons du contenu de leur travail, le côté développement adopte naturellement une approche sur la façon de résoudre le fossé du côté du système, mais ces dernières années, en plus de cela, le service réel, c'est-à-dire, J'ai entendu dire que nous sommes à une époque où nous devons également nous approcher du côté commercial, et peut-être que si nous ne pouvons pas le faire, la probabilité de devenir un projet en feu augmentera (un écart sera créé dans l'objectif entre le client et le côté développement). Je ressens Veuillez indiquer si c'est hors de propos.

2. Liste des fonctions que vous souhaitez implémenter concrètement

-Fonction de sélection de date dans l'interface utilisateur du calendrier

・ Une fonction qui vous permet de visualiser l'état de réservation de la journée et de faire une réservation en sélectionnant le fuseau horaire lorsque la date et l'installation à utiliser sont sélectionnées

・ Fonction CRUD associée à l'enregistrement

・ Une fonction pour calculer les frais d'utilisation finale en fonction de l'application en fonction des frais d'utilisation dans le fuseau horaire et le plan d'utilisation sélectionnés

・ Fonction d'enregistrement des membres (connexion sociale) pour utiliser la fonction de correspondance

・ Fonction de correspondance (y compris la fonction de tableau d'affichage pour le recrutement de membres)

……etc

Examen: considérer la faisabilité de la demande

Est-ce techniquement faisable?

De quel budget avez-vous besoin?

Quelle sera la date de livraison?

Proposition: renvoyer le résultat de la prise en compte au client (tâche développeur)

Fonctions pouvant être implémentées

montant à facturer

Date de livraison

Condition: confirmation finale des décisions convenues par les deux parties (le client / développeur discute et décide)

Liste des fonctions à implémenter dans le système

Questions décidées par définition d'exigence

Organiser par pourquoi / quoi / comment

Pourquoi: Objectif du développement du système (demande)

Questions d'actualité

Objectif (ce que cela devrait être)

Écart entre situation actuelle et objectif (problèmes à résoudre)

→ Reportez-vous à l'élément ci-dessus pour ce qui précède.

Quoi: comment résoudre le problème

1. Création d'un flux commercial après l'introduction du système

・ Quel est le flux commercial en premier lieu?

Une visualisation du flux de toute l'entreprise sous forme d'organigramme. Utilisé pour le développement de systèmes à grande échelle tels que les systèmes internes. Sur l'axe horizontal, préparez des colonnes pour les services qui utilisent les détails du système et de l'entreprise, et utilisez-les comme voies. Ensuite, quelle fonction du système est utilisée par quel service et dans quel ordre est décrit dans chaque couloir. Enfin, les numéros attribués à l'avance dans la colonne des détails du travail sont liés sous forme d'index et les détails du travail dans chaque travail sont décrits. Après cela, liez la voie avec les règles métier et les manuels de fonctions pour terminer.

En passant, j'ai mis en place un service toC comme exemple cette fois, et comme il ne s'agit pas d'un système à grande échelle, j'ai senti qu'il était souhaitable de créer un diagramme de cas d'utilisation à la place.

・ Que faire → Diagramme de flux d'affaires, diagramme de cas d'utilisation

2. Clarifier les exigences fonctionnelles

・ Quelles sont les exigences fonctionnelles?

→ Conditions requises pour les fonctions à implémenter (= liste des fonctions à installer dans le système)

Cette fois, je recommande de parler avec le corps de la mise en œuvre de toutes les parties révélées dans la subdivision du processus.

3. Clarifier les exigences non fonctionnelles

・ Quelles sont les exigences non fonctionnelles?

→ Pièces de performance autres que l'objectif principal du système telles que la vitesse de traitement et la sécurité. En d'autres termes, il s'agit d'une exigence pour le système autre que la fonction à implémenter.

Par exemple, on dit que les clients souhaitent implémenter une fonction pour clarifier le statut de réservation de l'installation par recherche d'horaire (exigence fonctionnelle). Le temps de recherche (exigence non fonctionnelle) n'est pas nécessaire, il ne peut donc pas être considéré comme l'objectif principal du système. Par conséquent, j'ai senti que le côté développement devait réfléchir à la manière de convaincre le client des catégories suivantes à sa propre discrétion tout en la comparant à la date de livraison.

Niveau d'exigence non fonctionnel

·disponibilité

→ Les demandes telles que le système de sauvegarde et la méthode de récupération en cas de panne. La perspective de la manière dont le système peut être rendu disponible.

** ・ Performances et évolutivité **

→ Demandes pour faire face à une charge de pointe et à une charge de travail accrue. Par exemple, du point de vue de ce à quoi nous pouvons réagir lorsque le nombre d'utilisateurs du système augmente, des changements dans la quantité de travail requise pour le système ou de l'ajout de matériel.

** ・ Fonctionnement et maintenabilité **

→ Demandes concernant la cadence de fonctionnement pendant le fonctionnement du système et la réponse en cas de problème. Contrairement à la perspective de réduire le temps pendant lequel un système qui était disponible pour la disponibilité tombe en panne et devient indisponible. C'est la perspective de la façon de garder le système disponible. Le suivi de l'utilisation du système, la création / extension des manuels d'exploitation, la maintenance, etc. peuvent être mentionnés.

** · Migration **

→ Demandes d'installation du système créé ou de migration depuis l'ancien système. Formulez des plans tels que des ajustements d'horaire et des répétitions jusqu'à la transition.

·Sécurité

→ Exigences de sécurité telles que les restrictions utilisateur et les accès non autorisés. Restrictions d'accès ・ Préparez des fonctions de surveillance et de détection des utilisateurs non autorisés et des manuels pour l'éducation à la sécurité des clients.

** ・ Environnement système **

→ Exigences relatives à l'environnement d'installation du système et à la consommation d'énergie. Considérez le choix de l'équipement adapté à l'équipement et la configuration du système pour réduire la charge environnementale.

Précautions pour les exigences non fonctionnelles

・ Que faire une fois l'examen des exigences fonctionnelles terminé → Si la fonction change, les exigences d'exploitation et de maintenance changeront de manière simple à comprendre, il est donc inutile d'en tenir compte tant que la fonction n'est pas décidée.

・ Les propositions sont faites du côté du développement → Comme mentionné ci-dessus, la plupart des clients manquent de connaissances sur les systèmes et le développement.

・ Écoutez la raison de la définition des exigences

→ Pouvoir présenter des alternatives.

Citation [Comment rédiger des exigences fonctionnelles et non fonctionnelles exemple disponible

Il est important de noter la raison de l'exigence et d'en prendre note. Exemple) Raison des heures de fonctionnement de 6h00 à 22h00 ・ Parce qu'il y a des gens qui vont travailler au premier train ・ Parce que l'heure de fin des heures supplémentaires est 22h00 Si vous ne notez pas la raison de l'exigence, vous n'aurez d'autre choix que d'adopter l'exigence énoncée par le client et vous ne pourrez pas proposer d'alternative. De plus, certains clients répondent avec leurs propres idées, il est donc préférable de se demander pourquoi.

Citation à nouveau du même article

Pour les besoins non fonctionnels, le coût requis varie en fonction des besoins. Par exemple. ① Système avec heures de fonctionnement de 6h00 à 22h00 ② Système de fonctionnement complet 24 heures sur 24 → Bien sûr, ② est plus cher. · Sauvegarde de données ・ Nécessité de développer des outils ・ Augmentation de la charge d'exploitation et de maintenance Il est naturel de penser que "meilleure est la qualité, meilleure est". Cependant, faisons prendre conscience aux clients que plus les exigences non fonctionnelles sont enrichies, plus le coût sera élevé, et sélectionnez les exigences.

En d’autres termes, si l’on dit qu’un système qui fonctionne à pleine capacité 24 heures sur 24 est bon au début et que la raison n’en est pas entendue, il est possible que le développement soit inutile. Cela peut également imposer une charge au client qui l'exploite. Cependant, si vous demandez la raison en l'examinant et que vous n'en ressentez pas un certain besoin, vous pouvez rechercher un compromis allégé du côté du développement en termes de développement et de coûts d'exploitation réels.

Comment: utilisation spécifique et méthode de montage (conception de base)

Il est grossièrement classé dans les trois points suivants.

1. Conception de l'écran (conception de l'interface utilisateur)

Une fois la fonction décidée, nous devons réfléchir à la manière d'utiliser la fonction. Et les perspectives ne devraient pas manquer pour rendre le système de services plus accessible aux utilisateurs. En ce sens, la conception de l'interface utilisateur doit être effectuée en premier.

Lorsque j'ai créé le portefeuille, j'ai conçu l'interface utilisateur minimale pour laquelle la fonction fonctionne → test de fonctionnement → copie propre de l'interface utilisateur, mais si ce n'est pas une pile complète dans le champ réel, il y a un concepteur ou une personne frontale en charge Dans certains cas, dans ce cas, sera-ce sous la forme de consultations avec ces personnes?

・ Que faire

→ Diagramme de transition d'écran

2. Conception fonctionnelle

Citation

Veuillez comprendre que la conception fonctionnelle est la phase qui définit «le traitement à exécuter en coulisse, les données nécessaires». (Omis) En faisant cela, n'importe qui peut imaginer quel type de programme doit être écrit. La composition des pièces qui composent le système étant également clarifiée, la répartition des rôles au sein de l'équipe devient aisée.

Par exemple, l'enregistrement des membres, par exemple, l'acquisition d'informations de réservation et la communication avec la base de données, qu'il s'agisse d'un système ou d'une application, sont absolument inévitables. Par conséquent, si vous résumez brièvement les trois points suivants pour chaque fonction sous la forme d'un ensemble avec l'interface utilisateur, vous pourrez en faire plus au moment de la mise en œuvre.

Citation

Traitement arrière (nom de la fonction et contenu de traitement) Données nécessaires au traitement, source d'acquisition des données (saisie depuis l'écran, acquisition depuis la base de données, etc.) Destination de livraison des données traitées (affichage écran, sauvegarde dans DB, etc.)

Je n'étais pas vraiment au courant de cela lorsque j'ai créé le portefeuille, mais à cause de cela, lorsque j'ai échangé des informations de réservation, il semble que je doive revoir une fois la conception de la base de données. Parce que c'était censé être J'ai senti que c'était très important.

・ Que faire

→ Dessin de conception GUI, etc.

3. Conception des données

Citation

Il y a trois choses à décider. Contenu spécifique des données Conception de base de données Flux de données (flux de données)

C'est le dernier élément à faire dans la conception, et c'est la partie qui ne doit pas être dépassée. Parce que j'avais peu de connaissances sur cette pièce, j'ai dû reculer depuis le milieu de la production, et surtout, j'ai eu une expérience amère de passer beaucoup de temps à concevoir cette pièce. Comme mentionné ci-dessus, peu importe ce que vous faites, il y a interaction avec la base de données, donc si vous ne décidez pas ici correctement, vous ne pourrez pas mettre en œuvre correctement le traitement ultérieur.

Tout d'abord, le contenu des données. Dans la source

Ce que vous devez savoir ici, c'est qu'il existe quatre types de données. Concevez comment ces quatre types de flux de données dans le système. Données à "entrer" dans le programme (argument) Données saisies par l'utilisateur à partir de l'écran Web Données lues depuis la base de données Données "renvoyées" du programme (valeur de retour) Données à afficher sur l'écran Web Données à stocker dans la base de données

c'est écrit comme ça. C'est un serpent, mais si vous ajoutez des mots pour une confirmation personnelle

-Valeur qui devrait être l'argument du traitement

Données saisies par l'utilisateur à partir de l'écran Web (ex. nom et adresse e-mail du formulaire d'inscription)

Données lues depuis la base de données (ex. statut de réservation de l'établissement)

Les deux ci-dessus sont des données pour l'exécution du traitement avec cette valeur comme argument. Dans le premier exemple, il est concevable que ces valeurs soient utilisées comme arguments pour rassembler la base de données et le jugement de connexion est effectué, et dans le dernier exemple, les valeurs renvoyées par la recherche dans la base de données sont utilisées comme arguments pour un traitement ultérieur.

Données à renvoyer

Données à afficher sur l'écran Web (ex. Mes informations de réservation)

Données à stocker dans la base de données

Ce sera le cas? Tout en ayant connaissance de ces quatre données, nous déciderons concrètement du contenu et du type des données et tenterons de les normaliser.

Ensuite, la base de données est conçue.

La conception d'une base de données nécessite trois tâches. Divisez le rôle de la table en "maître" et "histoire" Organiser les relations de référence entre les tables Transcrire la relation de référence au diagramme ER

Les relations de table sont probablement la partie la plus déroutante de la conception pour la première fois. J'étais vraiment confus. Cependant, si la relation n'est pas correctement établie, vous trébucherez au stade de la mise en œuvre, alors ne la négligez pas.

Il semble qu'il existe différentes façons d'appeler les relations, telles que les relations parents-enfants et les maîtres et histoires à la source de la citation, mais en y réfléchissant, il est facile de comprendre qu'il est préférable de classer d'abord par référence ou non.

Voici le diagramme ER que j'ai fait (le design n'est pas si bon en premier lieu, mais pour le moment).

ER図.png

Par exemple, comme vous pouvez le voir, la table des utilisateurs est ici une table qui gère les informations d'enregistrement des utilisateurs, tandis que la table des informations de réservation est une table qui gère les informations de réservation. Ainsi, par exemple, si vous regardez les deux tables du point de vue de «qui est les informations de réservation», vous pouvez voir que la table des informations de réservation fait référence à la table utilisateur utilisant user_id. Donc,

・ Pour les relations parents-enfants

→ Table des parents utilisateurs Tableau d'informations sur la réservation des enfants

・ Pour le maître et l'histoire

→ Table des utilisateurs maître Tableau d'informations de réservation d'historique

・ Se référer à, si référé

→ Tableau d'informations de réservation de référence Table des utilisateurs référencés

Il se trouve que. Créez et définissez autant de tables que nécessaire en fonction de la fonction de ces relations. Encore une fois, si ce n'est pas le cas dans la production d'applications système, tout sera détruit. Par conséquent, si vous êtes le même débutant et avez lu cet article, nous vous recommandons de vérifier à nouveau la conception du tableau avec la source ou le livre.

・ Que faire → Diagramme ER (Il est également ant de montrer la relation de référence du tableau avec un simple diagramme avant d'écrire) Diagramme de flux de données (diagramme de traitement)

Épilogue

Comme mentionné ci-dessus, sur la base de l'article de référence, j'ai essayé de consolider mes connaissances sur la définition des exigences. C'est une chose déroutante, mais quand j'ai créé le portfolio, j'ai défini les exigences, mais quand j'essaye cela, je dois encore en être conscient. J'ai reconfirmé que j'avais beaucoup de connaissances que je ne pouvais pas faire dans mon travail réel, et je sentais que j'avais encore beaucoup à faire. Je ne dirigerai jamais la définition des exigences dans le plan de développement, et bien que je ne sois même pas PG en premier lieu, il y a aussi l'enseignement des ancêtres que les ingénieurs ne peuvent s'appeler ainsi que s'ils peuvent même définir les exigences et la conception. Il y a Surtout, je ne sais rien tant que je suis impliqué dans le projet, donc je suis content de pouvoir le confirmer à nouveau cette fois.

Site de référence

Définition des exigences - Articles qui peuvent devenir des ressources humaines capables de concevoir des systèmes Pouvez-vous l'expliquer facilement? Exigences fonctionnelles et non fonctionnelles [Facile en 3 étapes! ] Comment créer un manuel de flux commercial

Recommended Posts

Historique d'apprentissage pour participer au développement d'applications d'équipe en Python ~ Pensez un peu à la définition des exigences ~
Historique d'apprentissage pour participer au développement d'applications d'équipe en Python ~ Page d'index ~
Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Tutoriel Django 5 ~
Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Tutoriel Django 4 ~
Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Tutoriel Django 1, 2, 3 ~
Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Tutoriel Django 6 ~
Historique d'apprentissage pour participer au développement d'applications d'équipe en Python ~ Tutoriel Django 7 ~
Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Supplément d'éléments de base et construction de l'environnement jupyterLab ~
Apprentissage de l'histoire pour participer au développement d'applications en équipe avec Python ~ Après avoir terminé "Introduction à Python 3" de paiza learning ~
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Apprentissage de l'historique pour participer au développement d'applications d'équipe avec Python ~ Créer un environnement Docker / Django / Nginx / MariaDB ~
Pensez à créer un environnement Python 3 dans un environnement Mac
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Création d'un environnement de développement pour les applications Android - Création d'applications Android avec Python
À propos de "for _ in range ():" de python
Ecrire une courte définition de propriété en Python
Obtenez un jeton pour conoha avec python
[Python] Conception d'applications Web pour l'apprentissage automatique
Créer un environnement de développement Python pour le développement de l'IA
Créer un environnement de développement pour l'apprentissage automatique
Pensez aux recherches de priorité de profondeur et de priorité de largeur en Python
Un mémo que j'ai écrit un tri de fusion en Python
Étapes pour développer une application Web en Python
Analyse de données en Python: une note sur line_profiler
[Implémentation pour l'apprentissage] Implémentation de l'échantillonnage stratifié en Python (1)
Le concept de référence en Python s'est effondré un instant, j'ai donc expérimenté un peu.