Praca Dyplomowa


"Klasyfikacja projektów Open Source z GitHub.com na podstawie wymagań biznesowych"

Kamil Gałuszka

pod kierunkiem dr Tomasz Gancarczyk 

Problematyka 


  • Coraz więcej projektów oraz produktów Open Source jest na  rynku IT.
  • Brak jasnej klasyfikacji jakości tych projektów.
  • Brak kryteriów określających przydatność projektów wspomagających procesy biznesowe.
  • Wsparcie społeczności dla wielu projektów jest umowne.
  • Jakimi kryteriami klasyfikować projekty Open Source? Czy z obecnych danych wyłaniają się jakieś dane na temat przydatności projektów open source?

cel projektu

  1. rozwiązanie problemu klasyfikacji projektów Open Source, których dojrzałość jest wystarczająca, aby stosować je jako rozwiązania dla przedsiębiorstw.
  2. Utworzenie zbioru danych o projektach Open Source w oparciu o dane, które udostępnia serwis GitHub zapośrednictwem udostępnionych usług internetowych (API) w wersji 3.
  3. Zbadanie jakie dane są ściśle powiązane z projektem open source i mogą wpływać na określenie jego dojrzałości.
  4. Stworzenie algorytmu klasyfikującego projekty Open Source w zależności od ich dojrzałości i stopnia zaawansowania.

klasyfikacja dojrzałości projektu


Projekt może należeć do jednej z grup:

  1. Gotowy do użycia przez przedsiębiorstwa - 81-100
  2. Bardzo dobry projekt - 61-80
  3. Projekt o słabym wsparciu, ale rokujący dobrze na przyszłości - 41-60
  4. Bardzo słabo rozwijany projekt, bardzo niedojrzały - 21-40
  5. Nie gotowy bądz nierozwijany - 0-20

Inżynieria zapotrzebowań


  • Wykorzystanie dane z API GitHub-a
    • Dane z GitHub-a posiadają więcej informacji 
    • Samo repozytorium Git-a nie posiada informacji na temat użytkowników udzielających się do projektu
    • Dane z Githuba mają lepszą strukturę (potrafią łączyć użytkowników o różnych mailach po ID)
    • Wszystkie dane o repozytorium Git także są dostępne w API
  • Stworzyć nadzorowaną maszynę ucząca która będzie potrafiła klasyfikować projekt na podstawie różnych metryk.

PojEcia

  • Gitsystem do zarządzania, rejestrowania i kontrolowania rewizji kodu źródłowego, pozwalający na wygodną współpracę w ramach zespołu programistów. System Kontroli Wersji stworzony przez Linusa Torvaldsa.

  • GitHubinternetowy serwis przechowywujący oprogramowanie oparte o system kontroli wersji Git.

Dane


  • Dzisiaj Github hostuje 12 mln projektów
  • Projekty są rozwijane przez 4 mln programistów zarejestrowanych w na Githubie
  • Prawie każdy projekt zawiera do siebie "issue tracker" oraz obsługę przyjmowania łatek "pull requests"
  • Projekty są oceniane tylko poprzez gwiazdki. Nie ma "negatywnych ocen"

Dane


  • Issues (zadania)
    • Open (otwarte)
    • Closed (zamknięte)
  • Pull Requests (propozycje zmian)
    • Open (otwarte)
    • Merged (zakceptowane i włączone w projekt)
    • Rejected (odrzucone)
  • Stars (gwiazdka czyli cena pozytywna)
  • Forks (rozgałęzienie w repozytorium Git)
  • Watch (obserwowanie)
    • Notyfikacje o projekcie

wybrane do analizy Cechy projektów


  • Data utworzenia
  • Ilość zadań
  • Ilość commitów
  • Ilość rozwidleń struktury grafowej repozytorium
  • Średni czas akceptacji prośby o przyjećie zmian do repozytorium
  • Ilość odmówionych prośb o przyjęcie zmian do repozytorium
  • Ilość zaakceptowanych prośb o przyjęcie zmian do repozytorium


  • Informacje o zadaniu:
  • Data rozpoczęcia
  • Data zamknięcia
  • Status
  • Informacje o poszczególnej prośbie o przyjecie zmian do repozytorium:
  • Data rozpoczęcia
  • Data zamknięcia
  • Różnica pomiędzy datą rozpoczęcia a zamknięcia
  • Status
      • Typ właściciela repozytorium
      • Obserwatorzy
      • Informacje o opiekunach
      • Liczba współpracowników

      Use Case


      Diagram Klas


      Diagram Encji


      Dobrane technologie


      • Python
      • Django 
      • Bootstrap CSS
      • Celery (RabbitMQ)
      • PostgreSQL
      • requests
      • scikit-learn
      • pybrain
      • numpy/scikit

      Architektura Serwera


      uczenie maszyn - wstęp

      • zbiór danych - zebrana kolekcja danych, gdzie n to liczba cech a y przewidywana wartość cechy. {(x 11 , x 12 , x 13 , ..., x 1 n , y 1 )}
      • dane uczące - główny zbiór danych dla algorytmu uczącego, jest podzielony na dane trenujące i testowe.
      • dane trenujące - zbiór do trenowania oraz do regulowania dokładności algorytmu.
      • dane testowe - zbiór danych potrzebnych do sprawdzenia dokładności algorytmu.
      • dane niewidoczne - zbiór używany do sprawdzenia ostatecznej dokładności algorytmu klasyfikacji.

      Algorytmy



      • Regresja liniowa i logistyczna
      • Sieci neuronowe

      Regresja liniowa

      • najlepszy wybór, jeżeli dane posiadają tylko 1 cechę, której wartość chcemy obliczyć
      • funkcja hipotezy
      • minimializowanie błędów średniokwadratowych
      • W idealnym przypadku błędy średniokwadratowe powinny wynosić 0 dla każdego przykładu z danych uczących. To jest jednak możliwe tylko dla niektórych danych. W realnych przypadkach należy znaleźć najmniejszą z możliwych sum błędów średniokwadratowych. Aby tego dokonać wykonuje się funkcje kosztu.

      Title

      Sieci Neuronowe



      DEMO



      Dziękuję Serdecznie 


      Kamil Gałuszka

      Praca Dyplomowa

      By Kamil Gałuszka

      Praca Dyplomowa

      • 941
      Loading comments...

      More from Kamil Gałuszka