Code Monkey home page Code Monkey logo

software-process-antipatterns-catalogue's People

Contributors

danisik avatar dependabot[bot] avatar pbrada avatar ppicha avatar simeckol avatar stepanekp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

software-process-antipatterns-catalogue's Issues

Anti-pattern labeling enhancement

The goal is to enhance the current AP labelling functionality in the following ways:

  • suggesting existing labels,
  • have the ability to filter APs by label in the main application window,

Document the app on wiki/md page

Document the design, functionality, usage, configuration, build and run steps, and other important information about the application in a wiki/markdown page in the development branch.

Java FX internal problem

Cannot run builts JAR, cannot run in IDE on Linux

Premek Brada 3:56 PM
brada@un306brada:~/dev/ap-catalogue-app/app$ ./run.sh
15:56:26.693 [JavaFX Application Thread] INFO cz.zcu.kiv.spac.AntipatternsCatalogue - Starting Antipattern Catalogue.

A fatal error has been detected by the Java Runtime Environment:

SIGSEGV (0xb) at pc=0x00007fdc89a0f89a, pid=7717, tid=7746

JRE version: OpenJDK Runtime Environment (11.0.11+9) (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
Java VM: OpenJDK 64-Bit Server VM (11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64)
Problematic frame:
V [libjvm.so+0x8d589a]

Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %d %P %E" (or dumping to /home/brada/dev/ap-catalogue-app/app/core.7717)

An error report file with more information is saved as:
/home/brada/dev/ap-catalogue-app/app/hs_err_pid7717.log

If you would like to submit a bug report, please visit:
https://bugs.launchpad.net/ubuntu/+source/openjdk-lts

./run.sh: line 2: 7717 Aborted (core dumped) java --module-path javafx/lib --add-modules=javafx.swing,javafx.graphics,javafx.fxml,javafx.media,javafx.web --add-reads javafx.graphics=ALL-UNNAMED --add-opens javafx.controls/com.sun.javafx.charts=ALL-UNNAMED --add-opens javafx.graphics/com.sun.javafx.iio=ALL-UNNAMED --add-opens javafx.graphics/com.sun.javafx.iio.common=ALL-UNNAMED --add-opens javafx.graphics/com.sun.javafx.css=ALL-UNNAMED --add-opens javafx.base/com.sun.javafx.runtime=ALL-UNNAMED --add-opens javafx.graphics/com.sun.javafx.text=ALL-UNNAMED --add-opens javafx.graphics/javafx.scene.text=ALL-UNNAMED --add-opens javafx.graphics/com.sun.javafx.scene.text=ALL-UNNAMED --add-opens javafx.graphics/com.sun.javafx.geom=ALL-UNNAMED --add-exports javafx.graphics/com.sun.glass.ui=ALL-UNNAMED --add-exports javafx.graphics/com.sun.prism.impl=ALL-UNNAMED --add-exports javafx.graphics/com.sun.glass.utils=ALL-UNNAMED --add-exports javafx.graphics/com.sun.glass.ui.delegate=ALL-UNNAMED -cp AntipatternCatalogue.jar cz.zcu.kiv.spac.MainClass
LaunchpadLaunchpad
Bugs : openjdk-lts package : Ubuntu (419 B)
https://bugs.launchpad.net/ubuntu/+source/openjdk-lts

3:58
Když to pustím s nějakým "verbose", tak to předtím píše:
3:59
brada@un306brada:~/dev/ap-catalogue-app/app$ ./run.sh
Prism pipeline init order: es2 sw
Using Double Precision Marlin Rasterizer
Using dirty region optimizations
Not using texture mask for primitives
Not forcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Prism pipeline name = com.sun.prism.es2.ES2Pipeline
GraphicsPipeline.createPipeline failed for com.sun.prism.es2.ES2Pipeline
java.lang.IllegalAccessError: superclass access check failed: class com.sun.prism.es2.ES2Pipeline (in unnamed module @0xe70ae3c) cannot access class com.sun.prism.GraphicsPipeline (in module javafx.graphics) because module javafx.graphics does not export com.sun.prism to unnamed module @0xe70ae3c
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at javafx.graphics/com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:187)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
at java.base/java.lang.Thread.run(Thread.java:829)
*** Fallback to Prism SW pipeline
Prism pipeline name = com.sun.prism.sw.SWPipeline
WARNING: java.lang.UnsatisfiedLinkError: Can't load library: /home/brada/dev/ap-catalogue-app/app/javafx/lib/libprism_sw.so
Loaded /usr/lib/x86_64-linux-gnu/jni/libprism_sw.so from java.library.path
(X) Got class = class com.sun.prism.sw.SWPipeline
Initialized prism pipeline: com.sun.prism.sw.SWPipeline
JavaFX: using com.sun.javafx.tk.quantum.QuantumToolkit
WARNING: java.lang.UnsatisfiedLinkError: Can't load library: /home/brada/dev/ap-catalogue-app/app/javafx/lib/libglass.so
Loaded /usr/lib/x86_64-linux-gnu/jni/libglass.so from java.library.path
(...)
(... dalších x podobných - bere knihovny systémové ne moje, no to ale já chci ...)
4:00
(Ještě dávám do Cc @petr Pícha, jakožto duchovního otce aplikace)

Richard Lipka 4:05 PM
bohužel tohle vidím poprvé

Jakub Daněk 4:06 PM
nejrychlejší bude asi zkusit nainstalovat jinou verzi javy

Richard Lipka 4:07 PM
Javafx je nainstalovaná na cestě /home/brada/dev/ap-catalogue-app/app/javafx/ a jiná v tom ubuntu není:
4:07
?

Premek Brada 1:48 PM
@richard Lipka ne, je nainstalovana pouze v systemu z debian balicku (cosi jako open java fx 11).
1:49
je to videt i z tech hlasek, varuje me ze nemuze knihovnu natahnout z mojeho adresare a pak si pro ni sahne do systemoveho

Jakub Daněk 1:51 PM
Čekal bych nekompatibilitu mezi očekávanou a existující verzí

Premek Brada 1:53 PM
čeho? toho fx? buildoval jsem to na openjdk 11 ze zdrojáků, s tím openjavafx 11 ze systému, a na tomtéž to pouštím 😕
1:53
... se obávám, podle StackOverflow apod., ze javafx má v sobě bugy které to způsobují a které ale nikdo už neřeší

Jakub Daněk 1:55 PM
Jak říkám, zkusil bych nainstalovat jinou Javu
1:55
Když takhle crashne celé jvm, to se debugguje hrozně špatně

Premek Brada 1:56 PM
ok, asi to zkusím - jednak tam mám javu13 (snad k ní je to FX), podívám se jestli půjde dát i oracle jdk

Richard Lipka 1:57 PM
přijde mi divné že to hledá cestu do tvého adresáře pokud v něm JavaFX není nainstalovaná - máš při spuštění někam nastavenou cestu k modulům JavyFX?
1:58
jinak k java 13 JavaFX byla, ale myslím že teď nepůjde stáhnout, 13 nebyla LTS - ke stažení bude verze 16 a 17

Jakub Daněk 1:58 PM
Nicméně ta výjimka říká, že modul neexportuje třídu. Tzn buď chybí modul se správnou deklaraci, nebo je to skutečně bug
1:59
To vypadá jako taková ta typická OSGi chyba

Premek Brada 1:59 PM
hm, no, spouštěcí scriptík nastavuje přes parametry cmdline dostupné moduly, je fakt že jsou tam uvedené názvy a myslel jsem si, že si je "systém" převede do správných cest. pokud jsou to vlastně cesty, tak to musím nasměrovat do toho adresáře se sysémovou instalací

Jakub Daněk 1:59 PM
Je možný, že něco chybí nebo neumí najít, no

Premek Brada 2:01 PM
je otázka, jestli ta výjimka souvisí s tím segfault. je fakt, že vyloučit se to nedá, a že tu výjimku jsem zatím ignoroval.

Richard Lipka 2:01 PM
nevím jak je tohle udělané v linuxu - ve Windows potřebuje JVM zadat cestu na které leží jarka obsahující moduly které se mají použít a pokud si dobře pamatuji, ty moduly pak mají někde relativně vůči sobě (tj. ne přímo v jaru) uložené nativní knihovny které používají (jako je ta libglass)

Premek Brada 2:01 PM
tak díky za spoustu námětů k experimentování 😄 až budu mít dost psaní slohových cvičení, vrátím se k tomu.

Jakub Daněk 2:02 PM
Plus pokud to bylo původně odladěno na starší Javě, je možný, že v jdk11 už něco by default není na classpath a musí se explicitně stáhnout / zapnout parametrem
2:05
Kdoví jestli i mezi micro revizemi. V posledním micro releasu odstranili podporu TLS 1.0/1.1, tak kdo ví
2:06
A nebo holt máš prostě zrovna ty binární nekompatibilitu mezi javafx a knihovnami OS :-D

Premek Brada 2:07 PM
Je to tak, je třeba mě trochu pocvičit, abych si nemyslel že ta programátořina je nějaká lehká a jednoduchá práce 😄

Richard Lipka 2:09 PM
ještě mě napadlo jestli není problém v tom že je to přeloženo s očekáváním modulů a nainstalovaná javafx není zabalená do modulů (SDK má jen .jar soboury, ale modulární distribuce má .jmod soubory ktere v sobě mají zapouzdřené nativní knihovny)

Automatic git Pull

Currently, the Pull operation from the source repository is performed on demand (at a push of a button).

The goal is to perform this action automatically. It can take several forms:

  • on startup + before Commit and Push is performed
  • periodically with some frequency when the application is running
  • both

The concrete solution is subject to discussion and analysis.

As this may lead to conflicts in the working copy of the repository, a part of this issue is also to explore the options to handle them. Be it finding an existing library that provides the capability to resolve them in GUI (if library not found, the manual implementation of such functionality is not required), or just informing the user on the specifics and letting them deal with the conflicts manually.

Enhance DOT file generation

Currently, the DOT file generated by the application has certain shortcomings. The goal is to:

  • have the graph directional,
  • be able to select correctly sets of APs (labels) and individual APs in a mix,
  • have the edges of the graph labeled by the APs relation descriptions.

Line selection for Commit/Push

Currently, the application allows for selecting changes to be included in a Commit/Push on file level.

The goal is to deepen this functionality to be able to specify individual line changes in each file that should be included. The direct inspiration can be drawn from GitHub desktop application. This functionality may be implemented only if an external library providing it will be found. Manual implementation is not required.

Using images in AP descriptions

The current library used for rich text boxes in the AP descriptions has trouble when trying to add images.

The goal is to resolve this issue by either:

  1. find and fix the problem with using the current library,
  2. find another library capable of supplying the current functionality plus images.

Own implementation of this functionality is not required.

Reading git target from working copy

Currently, the target repository and branch the application connects to is specified in a configuration file.

The goal (if possible) is to try to get this information from git files in local working copy of the repository, provided the application is run from the workspace directly and not from somewhere else in the file system. In the opposite case, the application defaults to the repository and branch specified in the configuration file.

Git repository/branch switch

Curently, the git repository and branch the application connects to is specified in a configuration file.

The goal is to have the option to switch/specify this in the application GUI.

Implement richbox and preview capability

Through some markdown library, implement the rich textboxes for individual AP description fields (bold, italics, underline, image, code, bullets). Also implement on-demand preview of the AP description.

Implement pull from repository

Allow for local copy of catalogue and the online repository to sync via pull operation (branch can be configurable purely in some file, not needed to be selectable in the application)

Encrypt the Git password

After inputting the Git password for pull/push operations, the password may stay in memory for some time in unencrypted form. Implement the encryption of the password to increase application security.

Implement the source functionality

Implement functionality which will take the input in the form of a bibtex list of sources, translates it into the markdown Sources page and allows for adding these references into the AP descriptions

Implement adding new anti-patterns

Initial implementation allowing for adding a new anti-pattern to the catalogue

  • template formatting can be hard coded at this stage
  • has to create new AP file and add a link to the "list" file

Export graph in SVG format

As an extension of #25, the goal is to export the graph not only in DOT format, but also in visual form in an SVG file. Some sort of positioning algorithm for the image to be readable would be required.

Decide on the licensing

Research the available licenses and those that the candidate libraries needed for the application development use. Based on the results decide on the appropriate license to use for the app, so there's no conflicts with free and open usage, adoption and sharing of the application.

Create a template configuration

Select a proper format and create a configuration for the AP template, which the application will read on startup and setup the form for new AP according to the configuration. The configuration should cover (for each field of the template):

  • name
  • type (heading, text, table, reference, boolean, etc.)
  • mandatory/optional (boolean)
  • order

Generating DOT file

The goal is to generate a DOT file containing a node-edge graph of the AP language (individual APs as nodes connected by edges where relation exists). The extent of information included is subject to future specification.

The functionality should also provide the option to select only a subset of the APs based on individual selection, label selection, adding the related AP to the ones already selected, etc. Therefore its own section of GUI is needed.

References pop-up

Currently, adding a new reference to an AP description is realized through a select-box with reference shortcuts, each with a checkbox. Additional information are display when an information icon placed next to the select-box is clicked.

The goal is to instead have an Edit button for the Sources field. When pressed a pop-up window with list of available references with sufficient information (at least author(s), title and publication year, but essentially can be a full references sourced from the bibtex file) and checkboxes for each. A window can also contain a button to prompt adding a new bibtex reference (connecting to already existing functionality). The reference will automatically be included in the pop-up upon saving.

When saved, the list of references can be displayed as it is currently.

Anti-pattern labeling

The goal is to be able to create labels that can be associated with APs to group them. Label to AP relation is N:N. This requires:

  • a specific section in the template to capture the labels (separated by ";"),
  • processing of labels,
  • generating new MD files with list of APs with the respective labels,
  • labels in AP description to be rendered as links to the lists from previous point,
  • links to label specific lists from the catalogue main page,

Anti-pattern template management

Currently, the structure of the template for anti-pattern descriptions is captured in a configuration file. Any changes needed are performed by manually changing this file.

The goal is to create an interface for editing the template built into the GUI of the application. This should allow adding, removing and reordering sections and changing their type (will be specified).

The capability to render the AP editing window based on the template and checking the individual files compliance with the template (complete with specifying potential issues) is already implemented, though it may need to be modified.

application fails on start with SIGSEGV

Freshly built app fails to start, crashes with "core" dumped, due to SIGSEGV in libjvm.so. The error log is attached.

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f2ff992831a, pid=6995, tid=7024
#
# JRE version: OpenJDK Runtime Environment (11.0.18+10) (build 11.0.18+10-post-Ubuntu-0ubuntu122.04)
# Java VM: OpenJDK 64-Bit Server VM (11.0.18+10-post-Ubuntu-0ubuntu122.04, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x8f731a]

System info:

System:
  Host: brada-virt-kiv Kernel: 5.15.0-67-generic x86_64 bits: 64
    Desktop: Xfce 4.16.0 Distro: Ubuntu 22.04.2 LTS (Jammy Jellyfish)
Machine:
  Type: Kvm System: QEMU product: Standard PC (i440FX + PIIX, 1996)
    v: pc-i440fx-6.1 serial: <superuser required>
  Mobo: N/A model: N/A serial: N/A UEFI: EFI Development Kit II / OVMF
    v: 0.0.0 date: 02/06/2015
CPU:
  Info: 2x 4-core Common KVM [MCP SMP] speed (MHz): avg: 2600
Graphics:
  Device-1: driver: bochs-drm v: N/A
  Display: x11 server: X.Org v: 1.21.1.3 driver: X: loaded: modesetting
    unloaded: fbdev,vesa gpu: bochs-drm resolution: 1920x1200~50Hz
  OpenGL: renderer: llvmpipe (LLVM 15.0.6 128 bits) v: 4.5 Mesa 22.2.5

hs_err_pid6995.log

Existence checks and disambiguation

Currently, APs with more than one name (alias) are listed under each such name in the catalogue, but a link to each leads to the same AP description with the preferred/dominant/main name. This might be confusion.

The goal is to have all aliases, other than the main one, in the catalogue in the following format (subject to change):

  • <alias_without_link> (see <main_alias_with_link>)

This requires the application to check for and be aware of all aliases when applying changes (pulling them from individual AP descriptions). Similar approach should be applied to tables with related APs in individual AP files.

Commit and Push as a singular action

Currently, a user needs to perform commit and push as two distinct actions (as per git standard).

As this is redundant for the current application, the goal is to perform both actions on just a single push of a UI button by a user.

Reference links

Currently, all links from Sources section of an AP description lead to the References.md file.

The goal is that individual reference shortcuts in the section should lead to URLs in their respective bibtex entries. If the entry does not contain an "url" attribute, the respective reference is not rendered as a link at all.

The link to References.md should be added to the Sources section heading.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.