Cílem diplomové práce je seznámit se s komponentově orientovaným vývojem softwaru, následně se způsoby reprezentace a analýzy grafových dat. V rámci práce byl navrhnut a popsán obecný úložný formát pro uložení grafu závislostí. Byla vydefinována množina problémů, které vyžadují dodatečnou analýzu grafu závislostí. Došlo k vytvoření dvou nástrojů, vytvářejících graf závislostí ze specifických repozitářů. Nástroje jsou pro repozitář Nuget, pro platformu .NET a pro repozitář PyPI, pro jazyk Python. V neposlední řadě byly také navrhnuty a vytvořeny specializované analyzátory, které dokáží provádět analýzu nad získanými daty. Nástroje byly vytvořeny s důrazem na co největší obecné použití a snadnou rozšířitelnost. Nástroje dokáží poskytnout potřebná data pro analýzu a výstupy analýz jsou přínosné při zkvalitňování softwaru.
Anotace v angličtině
The aim of this thesis is to familiarize with the component oriented software development, furthermore with possibilities of graph data representation and analysis. Within the thesis, a general storage format for storing the dependency graph was proposed. A set of the problems that requires additional dependency graph analysis, was also defined within this thesis. Two dependency graph creation tools were implemented, each tool specializes on one repository type and its result is the dependency graph for the given artefacts in the given technology. One tool is for Nuget, the .NET platform package repository and the second is for PyPI, Python package registry. Also, specialized analyzers were designed and implemented, performing specific analysis on the given dependency data. The tools were designed with emphasis on general use and easy extensibility. The tools can provide the necessary data for analysis and the results of the analyzers are beneficial in improving the quality of the software.
Cílem diplomové práce je seznámit se s komponentově orientovaným vývojem softwaru, následně se způsoby reprezentace a analýzy grafových dat. V rámci práce byl navrhnut a popsán obecný úložný formát pro uložení grafu závislostí. Byla vydefinována množina problémů, které vyžadují dodatečnou analýzu grafu závislostí. Došlo k vytvoření dvou nástrojů, vytvářejících graf závislostí ze specifických repozitářů. Nástroje jsou pro repozitář Nuget, pro platformu .NET a pro repozitář PyPI, pro jazyk Python. V neposlední řadě byly také navrhnuty a vytvořeny specializované analyzátory, které dokáží provádět analýzu nad získanými daty. Nástroje byly vytvořeny s důrazem na co největší obecné použití a snadnou rozšířitelnost. Nástroje dokáží poskytnout potřebná data pro analýzu a výstupy analýz jsou přínosné při zkvalitňování softwaru.
Anotace v angličtině
The aim of this thesis is to familiarize with the component oriented software development, furthermore with possibilities of graph data representation and analysis. Within the thesis, a general storage format for storing the dependency graph was proposed. A set of the problems that requires additional dependency graph analysis, was also defined within this thesis. Two dependency graph creation tools were implemented, each tool specializes on one repository type and its result is the dependency graph for the given artefacts in the given technology. One tool is for Nuget, the .NET platform package repository and the second is for PyPI, Python package registry. Also, specialized analyzers were designed and implemented, performing specific analysis on the given dependency data. The tools were designed with emphasis on general use and easy extensibility. The tools can provide the necessary data for analysis and the results of the analyzers are beneficial in improving the quality of the software.
Seznamte se s principy komponentově orientovaných softwarových systémů, způsoby reprezentace a analýzy grafových dat.
Na základě studia literatury a podnětů z praxe vyberte a popište množinu problémů, které vyžadují analýzu informací o softwarových komponentách a/nebo grafu jejich závislostí.
Analyzujte reprezentace komponent a jejich závislostí používané v různých technologiích (např. Java/Maven, .NET/NuGet apod.), najděte nebo navrhněte vhodný obecný model a úložný formát pro reprezentaci výsledného grafu komponent.
Navrhněte a implementujte sadu nástrojů pro získání reprezentace grafu komponent (pro alespoň dvě technologie) a jeho analýzu, použijte je v návaznosti na bod 2 zadání.
Ověřte funkčnost a kvalitu vytvořených nástrojů, kriticky zhodnoťte jejich použití a výsledky provedených analýz.
Zásady pro vypracování
Seznamte se s principy komponentově orientovaných softwarových systémů, způsoby reprezentace a analýzy grafových dat.
Na základě studia literatury a podnětů z praxe vyberte a popište množinu problémů, které vyžadují analýzu informací o softwarových komponentách a/nebo grafu jejich závislostí.
Analyzujte reprezentace komponent a jejich závislostí používané v různých technologiích (např. Java/Maven, .NET/NuGet apod.), najděte nebo navrhněte vhodný obecný model a úložný formát pro reprezentaci výsledného grafu komponent.
Navrhněte a implementujte sadu nástrojů pro získání reprezentace grafu komponent (pro alespoň dvě technologie) a jeho analýzu, použijte je v návaznosti na bod 2 zadání.
Ověřte funkčnost a kvalitu vytvořených nástrojů, kriticky zhodnoťte jejich použití a výsledky provedených analýz.