The end

Today is our last Blog Post. We had a lot of fun with this project and learned a lot.

Below we list all important links to in regards to our work in this project:

Blog

Our Blog:

First Semester

Second Semester

 

Gitlab repo

Project vision

RUP project Roles

Software Requirement Specification

Use Cases

Project management

Testing

Architecture

Long-term planning

Presentation

ZIP

Here is our Zip. It includes our code, documentation, and blog posts.

It was pretty fun working on this project for two semester. It would be sad to let it end here. So we plan working on this project in our free time.

Best wishes

Team react

W7: Metrics

After getting our Gitlab CICD running again, we decided to use SonarQube for analysing our code and JaCoCo for the Code Coverage report. Our Gitlab Pipeline sends SonarQube our code and the code coverage report generated thanks to JaCoCo.

Here are some screenshots from our Job in the Pipeline.

GitlabCICDWithJaCoCo

And

GitlabCICDWithSonarQube

And here SonarQube with Code Coverage

SonarQube Before

We decided to focus on Vunerabilities and Cognitive Complexity. Vulnerabilites are part of security metrics and Cognitive Complexity part of Complexity. SonarQube describes them as following:

  • Security:
    Issues in this domain mark potential weaknesses to hackers.
  • Complexity:
    How simple or complicated the control flow of the application is. Cyclomatic Complexity measures the minimum number of test cases required for full test coverage. Cognitive Complexity is a measure of how difficult the application is to understand

Here you can see our slight improvements after refactoring.

Cognitive Complexity

MetricsComplexity

SonarQubeCodeComplexity

Vulnerabilites

MetricsVulnerability

SonarQubeVulnerability

So after following those measures, we made our code a bit more secure and less complex. Using these measurements helps us quite a lot, because it is faster and done automatically. With such tools we can gain more experience and understand our own code better.

On a sidenote. Codacy does not work with Gitlab for free. So if you have Gitlab and do want to use Codacy you need make your project public and pay for Codacy. That is why we didn’t use it in our CICD

W4: Testing

Android App

Our Android App features several Classes for equations and other complex algorithms. To Debug those we’ve chosen to use Unit4 on our testcases. See our code coverage below:

test coverage

Website

We use karma tests for our website, because it is written in Angular. Below you can see the code coverage of our tests.

Angular-Test-Coverage

We are testing our code after every push in our gitlab-ci pipeline. You can see a snippet of the testing done in a docker container

Angular Karma test in Docker

For viewing our test code, visit the project page at https://react.it.dh-karlsruhe.de/gitlab/react/website/tree/master/src/app.The test codes are in the typescript files ending with spec.ts.

Resource Server

To Test the Resource Server we decide to use J-Unit4 with MockUps by the dependency Spring-Boot-Test. The tests runs with the Maven Build tool in a Docker Container over a Gitlab Pipeline

test.PNG

The Code Coverage by this tests will be displayed below:coverage.PNG

W3: Function Points

In this week we created our Function Points for our Use Cases. We used TinyTool for the calculations.

Here is the data we used for our whole Application:

Tiny Tools

In this table we organized our data we used for the calculator.

Function Points Table

Here is the diagramm, which displays our Use Cases, by person hours and Function Points per Case:

Function Points Diagramm

Register/Login took much more time then the average because we had framework bugs, which we couldn’t solve (Google oAuth). So we reimplented that Use Case with Http BASIC Authentification.

EDIT: After a bit of crticism, we updated our velocity charts by using the right data. Now it should be easier to understand.

Here are the links to our Use Case Specification, which now have information about our Function Points.

Links to UCs:

Midterm

In this semester we started on our project and made a significant amount of progress.

Here is a list of our blog posts in chronogical order.

    This will be , probably, our last post before new year.

    We wish you merry Christmas and a happy new year.
    Best Regardsh

    Team react

    W9: Gantt Chart

    This week we created our Gantt Chart for our project.

    It was quite difficult to create it, because JIRA doesn’t have an option for creating a Gantt Chart, at least one that is free.

    First, we had to export our sprints from JIRA into a CSV. Then we imported that file into Excel before we could use it in MS Project. This is because MS Project doesn’t recognize the date format of JIRA. But Excel could. It converted it automaticly into the german format, that our version of MS Project uses. But even this conversion wasn’t 100 % errorless. We had to manually readjust some dates, which hadn’t been recognized. Why?, we don’t know. Then we exported that Excel File into a CSV again. This new CSV was then imported into MS Project, where we had to manually match the CSV columns with the MS Project Columns so we could use the data. And at last we could finally create our Gantt chart.

    So instead of JIRA->Gantt, we had to do JIRA->CSV->Excel->CSV->MS Project->Gantt.

    In our opinion this isn’t how it should be done. JIRA and MSProject are two different tools intended for different purposes. And on top on that MSProject isn’t even able to recognize a different date format. There may be an option in MSProject to do that, but we didn’t find one. It is a professional tool, such simple things shouldn’t be a problem.

    To conclude this post: We do not think that we should be forced to take on several steps for creating a simple chart with information already available in JIRA. In fact it should be done with a click of one or two buttons. Without any other external program or tool.

    You can view our Gantt Chart here.

    W7: Class Diagram

    This week we created our Class Diagrams for our server application, Android app and the Website.

    • Server Application

    Server Class diagram

    • Website

    Website UML Diagram

    • Android App

    Android Full Class Diagram

     

    Our Class diagrams are quite big. Next week we will provide you our package diagrams, which will be much smaller and easier to understand, and our Software Architecture Document.

    Until then, here is a little preview of our App:

    ReactLogo

    Logo (scalable and animated – inapp footage)
    Design a site like this with WordPress.com
    Get started