From b11823a83caea3bdf9757db4ab30e92e880d1d95 Mon Sep 17 00:00:00 2001 From: AlgaLaptop Date: Sat, 13 Dec 2025 10:39:45 +0100 Subject: [PATCH] planing a jour du sprint 1 --- .gitignore | 1 + DIAGRAME_DE_CLASSE.mdj | 1046 ++++++++++++++++++++++++++++++++ PlaningDeTavail.md | 198 ++++++ ProductBacklog.MD | 90 +++ Sprint1 planttext Stand By.png | Bin 0 -> 36146 bytes 5 files changed, 1335 insertions(+) create mode 100644 .gitignore create mode 100644 DIAGRAME_DE_CLASSE.mdj create mode 100644 PlaningDeTavail.md create mode 100644 ProductBacklog.MD create mode 100644 Sprint1 planttext Stand By.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4b50bf0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +plantuml.png \ No newline at end of file diff --git a/DIAGRAME_DE_CLASSE.mdj b/DIAGRAME_DE_CLASSE.mdj new file mode 100644 index 0000000..86182e0 --- /dev/null +++ b/DIAGRAME_DE_CLASSE.mdj @@ -0,0 +1,1046 @@ +{ + "_type": "Project", + "_id": "AAAAAAFF+h6SjaM2Hec=", + "name": "Untitled", + "ownedElements": [ + { + "_type": "UMLModel", + "_id": "AAAAAAFF+qBWK6M3Z8Y=", + "_parent": { + "$ref": "AAAAAAFF+h6SjaM2Hec=" + }, + "name": "Model", + "ownedElements": [ + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAFF+qBtyKM79qY=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Main", + "defaultDiagram": true, + "ownedViews": [ + { + "_type": "UMLClassView", + "_id": "AAAAAAGbFRd1rBAqXv8=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGbFRd1rRArXmM=", + "_parent": { + "$ref": "AAAAAAGbFRd1rBAqXv8=" + }, + "model": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGbFRd1rRAshiU=", + "_parent": { + "$ref": "AAAAAAGbFRd1rRArXmM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -192, + "top": -416, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGbFRd1rRAtN84=", + "_parent": { + "$ref": "AAAAAAGbFRd1rRArXmM=" + }, + "font": "Arial;13;1", + "left": 117, + "top": 79, + "width": 85.17626953125, + "height": 13, + "text": "Pixel" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGbFRd1rRAu6jI=", + "_parent": { + "$ref": "AAAAAAGbFRd1rRArXmM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -192, + "top": -416, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGbFRd1rRAvoJE=", + "_parent": { + "$ref": "AAAAAAGbFRd1rRArXmM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -192, + "top": -416, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 112, + "top": 72, + "width": 95.17626953125, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGbFRd1rRAshiU=" + }, + "nameLabel": { + "$ref": "AAAAAAGbFRd1rRAtN84=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGbFRd1rRAu6jI=" + }, + "propertyLabel": { + "$ref": "AAAAAAGbFRd1rRAvoJE=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGbFRd1rRAwS7Y=", + "_parent": { + "$ref": "AAAAAAGbFRd1rBAqXv8=" + }, + "model": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "subViews": [ + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGbFRe78hBV2f4=", + "_parent": { + "$ref": "AAAAAAGbFRd1rRAwS7Y=" + }, + "model": { + "$ref": "AAAAAAGbFRe75hBSfjk=" + }, + "font": "Arial;13;0", + "left": 117, + "top": 102, + "width": 85.17626953125, + "height": 13, + "text": "-r: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGbFRf+YhBbsj0=", + "_parent": { + "$ref": "AAAAAAGbFRd1rRAwS7Y=" + }, + "model": { + "$ref": "AAAAAAGbFRf+WBBYjHk=" + }, + "font": "Arial;13;0", + "left": 117, + "top": 117, + "width": 85.17626953125, + "height": 13, + "text": "-g: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGbFRgNaxBhOCY=", + "_parent": { + "$ref": "AAAAAAGbFRd1rRAwS7Y=" + }, + "model": { + "$ref": "AAAAAAGbFRgNXxBe9YA=" + }, + "font": "Arial;13;0", + "left": 117, + "top": 132, + "width": 85.17626953125, + "height": 13, + "text": "-b: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGbFRl8hhBufVY=", + "_parent": { + "$ref": "AAAAAAGbFRd1rRAwS7Y=" + }, + "model": { + "$ref": "AAAAAAGbFRl8ehBrIG0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 21, + "top": -61, + "width": 64.2353515625, + "height": 13, + "text": "+Port1", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGbFRmd+xB1Qw4=", + "_parent": { + "$ref": "AAAAAAGbFRd1rRAwS7Y=" + }, + "model": { + "$ref": "AAAAAAGbFRmd8RBycuE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 21, + "top": -61, + "width": 64.2353515625, + "height": 13, + "text": "+Attribute1", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 112, + "top": 97, + "width": 95.17626953125, + "height": 53 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGbFRd1rRAxujs=", + "_parent": { + "$ref": "AAAAAAGbFRd1rBAqXv8=" + }, + "model": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAGbFRm0oxB8XSE=", + "_parent": { + "$ref": "AAAAAAGbFRd1rRAxujs=" + }, + "model": { + "$ref": "AAAAAAGbFRm0mhB5BV0=" + }, + "font": "Arial;13;0", + "left": 117, + "top": 155, + "width": 85.17626953125, + "height": 13, + "text": "+getterSetter()", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 112, + "top": 150, + "width": 95.17626953125, + "height": 23 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGbFRd1rRAyRwU=", + "_parent": { + "$ref": "AAAAAAGbFRd1rBAqXv8=" + }, + "model": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -96, + "top": -208, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGbFRd1rRAzoM0=", + "_parent": { + "$ref": "AAAAAAGbFRd1rBAqXv8=" + }, + "model": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -96, + "top": -208, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 112, + "top": 72, + "width": 94.17626953125, + "height": 103, + "nameCompartment": { + "$ref": "AAAAAAGbFRd1rRArXmM=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGbFRd1rRAwS7Y=" + }, + "operationCompartment": { + "$ref": "AAAAAAGbFRd1rRAxujs=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGbFRd1rRAyRwU=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGbFRd1rRAzoM0=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGbFRozqBCEWV0=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGbFRozqBCF29M=", + "_parent": { + "$ref": "AAAAAAGbFRozqBCEWV0=" + }, + "model": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGbFRozqBCG6fc=", + "_parent": { + "$ref": "AAAAAAGbFRozqBCF29M=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -176, + "top": -16, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGbFRozqBCHSDU=", + "_parent": { + "$ref": "AAAAAAGbFRozqBCF29M=" + }, + "font": "Arial;13;1", + "left": 357, + "top": 95, + "width": 127.55322265625, + "height": 13, + "text": "RGBImage" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGbFRozqBCIG8w=", + "_parent": { + "$ref": "AAAAAAGbFRozqBCF29M=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -176, + "top": -16, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGbFRozqBCJk78=", + "_parent": { + "$ref": "AAAAAAGbFRozqBCF29M=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -176, + "top": -16, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 352, + "top": 88, + "width": 137.55322265625, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGbFRozqBCG6fc=" + }, + "nameLabel": { + "$ref": "AAAAAAGbFRozqBCHSDU=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGbFRozqBCIG8w=" + }, + "propertyLabel": { + "$ref": "AAAAAAGbFRozqBCJk78=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGbFRozqRCK1WE=", + "_parent": { + "$ref": "AAAAAAGbFRozqBCEWV0=" + }, + "model": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "subViews": [ + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGbFRpmMhCvs1I=", + "_parent": { + "$ref": "AAAAAAGbFRozqRCK1WE=" + }, + "model": { + "$ref": "AAAAAAGbFRpmIRCstPg=" + }, + "font": "Arial;13;0", + "left": 357, + "top": 118, + "width": 127.55322265625, + "height": 13, + "text": "+width: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGbFRqDBBC2wj8=", + "_parent": { + "$ref": "AAAAAAGbFRozqRCK1WE=" + }, + "model": { + "$ref": "AAAAAAGbFRqC+RCzcFY=" + }, + "font": "Arial;13;0", + "left": 357, + "top": 133, + "width": 127.55322265625, + "height": 13, + "text": "+height: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGbFRrlqhC9ook=", + "_parent": { + "$ref": "AAAAAAGbFRozqRCK1WE=" + }, + "model": { + "$ref": "AAAAAAGbFRrlohC693g=" + }, + "font": "Arial;13;0", + "left": 357, + "top": 148, + "width": 127.55322265625, + "height": 13, + "text": "+pixels: tableau Pixel", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 352, + "top": 113, + "width": 137.55322265625, + "height": 53 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGbFRozqRCL3Ok=", + "_parent": { + "$ref": "AAAAAAGbFRozqBCEWV0=" + }, + "model": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAGbFRwGLBDGDdo=", + "_parent": { + "$ref": "AAAAAAGbFRozqRCL3Ok=" + }, + "model": { + "$ref": "AAAAAAGbFRwGIRDDyhA=" + }, + "font": "Arial;13;0", + "left": 357, + "top": 171, + "width": 127.55322265625, + "height": 13, + "text": "+getPixel(): Pixel", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGbFRxgUhDQyxw=", + "_parent": { + "$ref": "AAAAAAGbFRozqRCL3Ok=" + }, + "model": { + "$ref": "AAAAAAGbFRxgShDNMhQ=" + }, + "font": "Arial;13;0", + "left": 357, + "top": 186, + "width": 127.55322265625, + "height": 13, + "text": "+setPixel(x, y, p): void", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 352, + "top": 166, + "width": 137.55322265625, + "height": 38 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGbFRozqRCMh+s=", + "_parent": { + "$ref": "AAAAAAGbFRozqBCEWV0=" + }, + "model": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -88, + "top": -8, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGbFRozqRCNOto=", + "_parent": { + "$ref": "AAAAAAGbFRozqBCEWV0=" + }, + "model": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -88, + "top": -8, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 352, + "top": 88, + "width": 136.55322265625, + "height": 116, + "nameCompartment": { + "$ref": "AAAAAAGbFRozqBCF29M=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGbFRozqRCK1WE=" + }, + "operationCompartment": { + "$ref": "AAAAAAGbFRozqRCL3Ok=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGbFRozqRCMh+s=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGbFRozqRCNOto=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAGbFR0tLhD43VE=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGbFR0tLhD2yjU=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGbFR0tLhD5VZQ=", + "_parent": { + "$ref": "AAAAAAGbFR0tLhD43VE=" + }, + "model": { + "$ref": "AAAAAAGbFR0tLhD2yjU=" + }, + "font": "Arial;13;0", + "left": 262, + "top": 141, + "width": 30.7099609375, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGbFR0tLhD43VE=" + }, + "edgePosition": 1, + "text": "+Use" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGbFR0tLhD6Nxc=", + "_parent": { + "$ref": "AAAAAAGbFR0tLhD43VE=" + }, + "model": { + "$ref": "AAAAAAGbFR0tLhD2yjU=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 276, + "top": 156, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGbFR0tLhD43VE=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGbFR0tLhD7edQ=", + "_parent": { + "$ref": "AAAAAAGbFR0tLhD43VE=" + }, + "model": { + "$ref": "AAAAAAGbFR0tLhD2yjU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 280, + "top": 112, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGbFR0tLhD43VE=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGbFRd1rBAqXv8=" + }, + "tail": { + "$ref": "AAAAAAGbFRozqBCEWV0=" + }, + "lineStyle": 1, + "points": "351:140;207:127", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGbFR0tLhD5VZQ=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGbFR0tLhD6Nxc=" + }, + "propertyLabel": { + "$ref": "AAAAAAGbFR0tLhD7edQ=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGbFR2TjxENrtk=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGbFR2TjxEL1EQ=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGbFR2TjxEORz4=", + "_parent": { + "$ref": "AAAAAAGbFR2TjxENrtk=" + }, + "model": { + "$ref": "AAAAAAGbFR2TjxEL1EQ=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGbFR2TjxEP6rg=", + "_parent": { + "$ref": "AAAAAAGbFR2TjxEORz4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -16, + "top": -272, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGbFR2TjxEQJw0=", + "_parent": { + "$ref": "AAAAAAGbFR2TjxEORz4=" + }, + "font": "Arial;13;1", + "left": 101, + "top": 311, + "width": 99.7314453125, + "height": 13, + "text": "FrequencyTable" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGbFR2TjxERAvo=", + "_parent": { + "$ref": "AAAAAAGbFR2TjxEORz4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -16, + "top": -272, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGbFR2TjxES6k4=", + "_parent": { + "$ref": "AAAAAAGbFR2TjxEORz4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -16, + "top": -272, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 96, + "top": 304, + "width": 109.7314453125, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGbFR2TjxEP6rg=" + }, + "nameLabel": { + "$ref": "AAAAAAGbFR2TjxEQJw0=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGbFR2TjxERAvo=" + }, + "propertyLabel": { + "$ref": "AAAAAAGbFR2TjxES6k4=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGbFR2TkBETcNQ=", + "_parent": { + "$ref": "AAAAAAGbFR2TjxENrtk=" + }, + "model": { + "$ref": "AAAAAAGbFR2TjxEL1EQ=" + }, + "font": "Arial;13;0", + "left": 96, + "top": 329, + "width": 109.7314453125, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGbFR2TkBEUPbs=", + "_parent": { + "$ref": "AAAAAAGbFR2TjxENrtk=" + }, + "model": { + "$ref": "AAAAAAGbFR2TjxEL1EQ=" + }, + "font": "Arial;13;0", + "left": 96, + "top": 339, + "width": 109.7314453125, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGbFR2TkBEVyZ8=", + "_parent": { + "$ref": "AAAAAAGbFR2TjxENrtk=" + }, + "model": { + "$ref": "AAAAAAGbFR2TjxEL1EQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -8, + "top": -136, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGbFR2TkBEWW/g=", + "_parent": { + "$ref": "AAAAAAGbFR2TjxENrtk=" + }, + "model": { + "$ref": "AAAAAAGbFR2TjxEL1EQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -8, + "top": -136, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 96, + "top": 304, + "width": 108.7314453125, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGbFR2TjxEORz4=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGbFR2TkBETcNQ=" + }, + "operationCompartment": { + "$ref": "AAAAAAGbFR2TkBEUPbs=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGbFR2TkBEVyZ8=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGbFR2TkBEWW/g=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGbFRd1qxAoJLU=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Pixel", + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGbFRe75hBSfjk=", + "_parent": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "name": "r", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGbFRf+WBBYjHk=", + "_parent": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "name": "g", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGbFRgNXxBe9YA=", + "_parent": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "name": "b", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLPort", + "_id": "AAAAAAGbFRl8ehBrIG0=", + "_parent": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "name": "Port1", + "type": "" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGbFRmd8RBycuE=", + "_parent": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "name": "Attribute1", + "type": "" + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGbFRm0mhB5BV0=", + "_parent": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "name": "getterSetter" + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGbFRozpxCCny8=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "RGBImage", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAGbFR0tLhD2yjU=", + "_parent": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "name": "Use", + "source": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "target": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + } + } + ], + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGbFRpmIRCstPg=", + "_parent": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "name": "width", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGbFRqC+RCzcFY=", + "_parent": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "name": "height", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGbFRrlohC693g=", + "_parent": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "name": "pixels", + "type": "tableau Pixel" + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGbFRwGIRDDyhA=", + "_parent": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "name": "getPixel", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGbFRw2CxDKLAY=", + "_parent": { + "$ref": "AAAAAAGbFRwGIRDDyhA=" + }, + "type": { + "$ref": "AAAAAAGbFRd1qxAoJLU=" + }, + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGbFRxgShDNMhQ=", + "_parent": { + "$ref": "AAAAAAGbFRozpxCCny8=" + }, + "name": "setPixel", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGbFRyKBBDUmu4=", + "_parent": { + "$ref": "AAAAAAGbFRxgShDNMhQ=" + }, + "type": "void", + "direction": "return" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGbFRyw7RDXjZw=", + "_parent": { + "$ref": "AAAAAAGbFRxgShDNMhQ=" + }, + "name": "x", + "type": "" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGbFRyw7RDY/m4=", + "_parent": { + "$ref": "AAAAAAGbFRxgShDNMhQ=" + }, + "name": "y", + "type": "" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGbFRyw7RDZwYI=", + "_parent": { + "$ref": "AAAAAAGbFRxgShDNMhQ=" + }, + "name": "p", + "type": "" + } + ] + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGbFR2TjxEL1EQ=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "FrequencyTable" + } + ] + } + ] +} \ No newline at end of file diff --git a/PlaningDeTavail.md b/PlaningDeTavail.md new file mode 100644 index 0000000..c6f0998 --- /dev/null +++ b/PlaningDeTavail.md @@ -0,0 +1,198 @@ +# Sprint Planning – Projet PIF + +## Légende +AD → Algassimou +AA → Ayoub +YB → Youness + +🟥 TODO = À faire +🟨 DOING = En cours +🟩 DONE = Terminé + + +# --------------------------------------- +# SPRINT 1 (13–20 décembre 2025) +# --------------------------------------- +Objectif : Mise en place des fondations techniques +(image, binaire, Huffman, canoniques) + +| US | Assigné | Statut | | Description | +|----------|---------|--------|-----|-------------| +| US-D1 | AD | TODO | 🟥 | Implémenter BitInputStream (lecture bit par bit) | +| US-D2 | AD | TODO | 🟥 | Implémenter BitOutputStream (écriture bit par bit) | +| US-D3 | AD | TODO | 🟥 | Générer les tables de fréquences RGB | +| US-D4 | AD | TODO | 🟥 | Construire l’arbre Huffman | +| US-D5 | AA | TODO | 🟥 | Générer les codes Huffman | +| US-D6 | AA | TODO | 🟥 | Générer les codes canoniques | +| US-U5 | YB | TODO | 🟥 | Chargement d’image via ImageIO | +| US-D8 | YB | TODO | 🟥 | Structure RGBImage + Pixel | +| US-P1 | AA | TODO | 🟥 | Interface simple d’affichage des fréquences | +| US-P2 | AD | TODO | 🟥 | Interface simple d’affichage Huffman | +| US-P3 | AA | TODO | 🟥 | Interface simple d’affichage canoniques | + +## Fichiers à créer – Sprint 1 + +### `src/mimage/` +| Nom du fichier | Rôle | +|----------------|-------| +| `Pixel.java` | Représente un pixel (r, g, b) | +| `RGBImage.java` | Matrice de pixels + utilitaires | + +### `src/mhuffman/` +| Nom du fichier | Rôle | +|----------------|-------| +| `FrequencyTable.java` | Stocke les fréquences R/G/B | +| `HuffmanNode.java` | Nœud d’arbre Huffman | +| `HuffmanTree.java` | Construction de l’arbre + génération des codes | +| `CanonicalCode.java` | Génération des codes canoniques | + +### `src/util/` +| Nom du fichier | Rôle | +|----------------|-------| +| `BitInputStream.java` | Lecture bit par bit | +| `BitOutputStream.java` | Écriture bit par bit | +| `ByteUtils.java` | Conversions entiers ↔ octets | +| `FileUtils.java` | Méthodes utilitaires fichiers | + +### `src/vconverter/` +| Nom du fichier | Rôle | +|----------------|-------| +| `ConverterWindow.java` | Fenêtre du convertisseur | +| `PreviewPanel.java` | Aperçu de l’image chargée | +| `FrequencyTablePanel.java` | Affichage fréquences RGB | +| `CodeTablePanel.java` | Affichage Huffman + canoniques | + +### `src/` (racine) +| Nom du fichier | Rôle | +|----------------|-------| +| `ConverterController.java` | Contrôleur du convertisseur | +| `Main.java` | Lancement du convertisseur (Sprint 1) | + +--- + +### Résultat attendu Sprint 1 +- Compression entièrement fonctionnelle +- Import d’image opérationnel +- GUI minimaliste affichant fréquences / Huffman / canoniques +- Aucun fichier `.pif` encore écrit + + +# --------------------------------------- +# SPRINT 2 (20–27 décembre 2025) +# --------------------------------------- +Objectif : Écriture du format `.pif` + finalisation convertisseur + +| US | Assigné | Statut | | Description | +|------------|---------|--------|-----|-------------| +| US-D2 | AD | TODO | 🟥 | Vérifier BitOutputStream avec flux réel | +| US-C5 | AD | TODO | 🟥 | Implémenter PIFWriter (header + tables + pixels compressés) | +| US-U6 | AD | TODO | 🟥 | Exporter une image en `.pif` | +| US-P1 | AA | TODO | 🟥 | Finaliser affichage des fréquences | +| US-P2 | YB | TODO | 🟥 | Finaliser affichage codes Huffman | +| US-P3 | AA | TODO | 🟥 | Finaliser affichage codes canoniques | +| US-U7 | YB | TODO | 🟥 | Implémenter l’aperçu (PreviewPanel) | +| US-D3..D6 | YB | TODO | 🟥 | Lier interface convertisseur ↔ compression | + +## Fichiers à créer – Sprint 2 + +### `src/mpif/` +| Nom du fichier | Rôle | +|----------------|-------| +| `PIFWriter.java` | Écriture du fichier `.pif` | + +### `src/vconverter/` (complément) +| Nom du fichier | Rôle | +|----------------|-------| +| `SavePanel.java` (optionnel) | UI pour sauvegarde `.pif` | + +### `src/` +| Nom du fichier | Rôle | +|----------------|-------| +| *(aucun nouveau fichier obligatoire)* | Le reste se fait dans les fichiers existants | + +--- + +### Résultat attendu Sprint 2 +- `.pif` généré correctement +- Convertisseur fonctionnel à 80 % +- UI complète pour la consultation des tables +- Aperçu image fonctionnel + + +# --------------------------------------- +# SPRINT 3 (27 décembre 2025 – 3 janvier 2026) +# --------------------------------------- +Objectif : Lecture du fichier `.pif` + visualisateur opérationnel + +| US | Assigné | Statut | | Description | +|----------|---------|--------|-----|-------------| +| US-D7 | AD | TODO | 🟥 | Reconstruire les codes canoniques depuis fichier | +| US-D8 | AD | TODO | 🟥 | Décoder pixels (implémenter PIFReader) | +| US-U1 | YB | TODO | 🟥 | Ouvrir `.pif` via argument ou JFileChooser | +| US-U2 | AA | TODO | 🟥 | Afficher l’image dans une fenêtre | +| US-U3 | AA | TODO | 🟥 | Centrer l’image si elle est petite | +| US-U4 | AD | TODO | 🟥 | Déplacement de l’image à la souris | +| US-P6 | AA | TODO | 🟥 | Préparer diagrammes UML | + +## Fichiers à créer – Sprint 3 + +### `src/mpif/` +| Nom du fichier | Rôle | +|----------------|-------| +| `PIFReader.java` | Lecture et décodage du `.pif` | + +### `src/vviewer/` +| Nom du fichier | Rôle | +|----------------|-------| +| `ViewerWindow.java` | Fenêtre principale | +| `ImagePanel.java` | Affichage + déplacement de l’image | + +### `src/` +| Nom du fichier | Rôle | +|----------------|-------| +| `ViewerController.java` | Contrôleur du visualisateur | +| `MainViewer.java` | Programme principal visualisateur | + +--- + +### Résultat attendu Sprint 3 +- Visualisateur 100 % fonctionnel +- Lecture complète du format `.pif` +- Image affichée, centrée, déplaçable +- UML structurel prêt pour rapport + + +# --------------------------------------- +# SPRINT 4 (3–10 janvier 2026) +# --------------------------------------- +Objectif : Finalisation complète + livrable final + +| US | Assigné | Statut | | Description | +|------------|---------|--------|-----|-------------| +| US-P5 | AD | TODO | 🟥 | Javadoc complète | +| US-P7 | AD | TODO | 🟥 | Makefile (compilation + jar + exécution) | +| US-P6 | AA | TODO | 🟥 | Finalisation des diagrammes UML | +| Tests | YB | TODO | 🟥 | Tests convertisseur + visualisateur | +| Rapport | AD/AA/YB| TODO | 🟥 | Rédaction rapport complet | +| Livraison | AD/AA/YB| TODO | 🟥 | Vérification dépôt Gitea + JAR exécutables | + +## Fichiers à créer – Sprint 4 + +### Racine creee tout au long +| Nom du fichier | Rôle | +|----------------|-------| +| `Makefile` | Compilation + génération `.jar` | + +### `/doc` (optionnel) +| Nom du fichier | Rôle | +|----------------|-------| +| `rapport.pdf` | Livrable final | +| `uml.puml` | Sources de diagrammes | + +--- + +### Résultat attendu Sprint 4 +- Rapport PDF validé +- Diagrammes UML terminés +- Makefile opérationnel +- Projet soumis proprement sur Gitea diff --git a/ProductBacklog.MD b/ProductBacklog.MD new file mode 100644 index 0000000..7e3e48e --- /dev/null +++ b/ProductBacklog.MD @@ -0,0 +1,90 @@ +# PRODUCT BACKLOG — Projet PIF + + +# 1. US UTILISATEUR +Ce sont les besoins réels d’un utilisateur final qui voudrait simplement visualiser ou convertir une image. + +--- + +### **US-U1 — Ouvrir un fichier PIF** +En tant qu’utilisateur, je veux pouvoir ouvrir un fichier `.pif` via un argument ou un sélecteur de fichiers, afin d’afficher l’image. + +### **US-U2 — Afficher l’image dans une fenêtre** +En tant qu’utilisateur, je veux voir l’image affichée dans une fenêtre redimensionnable. + +### **US-U3 — Centrage automatique** +En tant qu’utilisateur, je veux que l’image soit centrée si elle est plus petite que la fenêtre, pour une meilleure visibilité. + +### **US-U4 — Déplacement de l’image** +En tant qu’utilisateur, je veux pouvoir déplacer l’image à la souris si elle dépasse la taille de la fenêtre. + +### **US-U5 — Charger une image RGB (PNG/JPEG)** +En tant qu’utilisateur, je veux charger une image standard afin de la convertir en `.pif`. + +### **US-U6 — Exporter une image au format PIF** +En tant qu’utilisateur, je veux enregistrer l’image sous format `.pif`. + +### **US-U7 — Aperçu de l’image avant conversion** +En tant qu’utilisateur, je veux voir une miniature de l’image chargée. + +--- + +# 2. US DÉVELOPPEUR +Ce sont les besoins techniques indispensables au fonctionnement interne du format PIF. + +--- + +### **US-D1 — Lire des bits depuis un flux** +Le système doit permettre la lecture bit par bit depuis un fichier PIF. + +### **US-D2 — Écrire des bits dans un fichier** +Le système doit permettre l’écriture de bits pour générer un fichier PIF. + +### **US-D3 — Construire les tables de fréquences RGB** +Le système doit analyser l’image pour obtenir les fréquences des valeurs R, G, B. + +### **US-D4 — Construire un arbre de Huffman** +Le système doit créer un arbre à partir des fréquences d’une composante. + +### **US-D5 — Générer les codes Huffman** +Le système doit produire les codes initiaux à partir de l’arbre. + +### **US-D6 — Générer les codes canoniques** +Le système doit transformer les codes Huffman en codes canoniques. + +### **US-D7 — Reconstruire les codes canoniques en lecture** +Le système doit pouvoir reconstruire les codes à partir des longueurs contenues dans le fichier .pif. + +### **US-D8 — Décoder un fichier PIF** +Le système doit pouvoir reconstituer l’image RGB à partir des données compressées. + +--- + +# 3. US PROFESSEUR (PEDAGOGIQUE) +Ces fonctionnalités n’ont **aucune utilité pour un utilisateur réel**, mais sont demandées par le professeur pour vérifier le bon fonctionnement de notre projet. + +--- + +### **US-P1 — Affichage des tables de fréquences** +En tant que professeur, je veux consulter la table de fréquences R, G et B pour vérifier que le calcul est correct. + +### **US-P2 — Affichage des codes Huffman** +En tant que professeur, je veux voir les codes Huffman générés afin de valider votre algorithme. + +### **US-P3 — Affichage des codes canoniques** +En tant que professeur, je veux visualiser les codes canoniques afin d’évaluer votre compréhension de leur construction. + +### **US-P4 — Affichage de l’arbre Huffman (optionnel)** +En tant que professeur, je veux pouvoir inspecter la structure de l’arbre pour vérifier votre implémentation. + +### **US-P5 — Documentation Javadoc pour chaque classe** +En tant que professeur, je veux avoir une documentation claire auto-générable. + +### **US-P6 — Diagrammes UML dans le rapport** +En tant que professeur, je veux retrouver un diagramme de classes et un diagramme d’objets dans le rapport. + +### **US-P7 — Makefile complet** +En tant que professeur, je veux pouvoir compiler les deux programmes en .jar exécutables avec un Makefile clair. + + + diff --git a/Sprint1 planttext Stand By.png b/Sprint1 planttext Stand By.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1d3e6b622efaff31b4cc14bd5d1b4b1e0da99b GIT binary patch literal 36146 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 literal 0 HcmV?d00001