Dienstag, 18. August 2020

SOLID-Prinzipien in der Softwareentwicklung

Die SOLID-Prinzipien berufen sich auf die von Robert C. Martin in CleanCode beschriebenen Entwurfsmethoden einzelner Klassen. Was bedeutet das jetzt für uns?

Was bedeutet "SOLID"?

S = SRP: SingleResponsibilityPrinciple 

Jede Klasse hat nur eine Aufgabe. Die Methoden der Klasse sind einzig für die Aufgabe allein verwendet

O = OCP: OpenClosePrinciple



Klassen sind...

Mittwoch, 29. Juli 2020

Datenschutz im Offboarding-Prozess - Zugriff auf E-Mails ausgeschiedener Mitarbeiter

Der E-Mail-Account ist noch da, der Mitarbeiter ist aber ausgeschieden. Darf der Arbeitgeber „einfach so“ auf die Mails in dem Account zugreifen? Oder ist das nur zulässig, wenn der Mitarbeiter einwilligt? Mit etwas gesundem Menschenverstand lassen sich diese Fragen leichter lösen, als viele befürchten.


Im Normalfall: keine Probleme 


Normalerweise sollte es so laufen: Ein Mitarbeiter scheidet aus dem Unternehmen aus. Der Grund dafür spielt dabei keine Rolle. In jedem Fall sollte er alle wichtigen Mails einem Kollegen übergeben, der sich künftig um darum kümmert.

Datenschutz im Offboarding-Prozess - Zugriff auf E-Mails ausgeschiedener Mitarbeiter
Datenschutz im Offboarding-Prozess - Zugriff auf E-Mails ausgeschiedener Mitarbeiter

Unerwartete Hindernisse 


Manchmal läuft es freilich anders. Dazu ein Beispiel: Die Übergabe der Mails war für den vorletzten Arbeitstag des Mitarbeiters vorgesehen...


Donnerstag, 9. April 2020

Requirements-Engineering - Designmethoden

Wie können wir aus groben Zielen und Vorgaben die Granularität von Anforderungen verfeinern und dabei Geschäftsprozesse (Use Cases) untersuchen? Wenn wir in der Softwareentwicklung über fachliche Anforderungen sprechen wollen, sprechen wir am Besten in der Sprache der Fachexperten. In der Sprache des Kunden! Dafür müssen Entwickler, Product Owner und Projektleiter die Fachsprache erlernen. Dieser Ansatz nennt sich Domain-Driven-Design (DDD).


Domain-Driven-Design (DDD) - Modellierung nach Fachlichkeit


Der Grundsatz dieser Methode lässt sich kurz zusammenfassen: "Wir konzentrieren uns ausschließlich auf den fachlichen Teil eines Themas und nicht auf mögliche technische Lösungen." Als Hilfsmittel zur Modellierung sei hier auf das Domain Storytelling verwiesen!
Was sind eigentlich die Vorteile des DDD?
  • Die Kommunikation zwischen Fachexperten und Entwicklerteam ist frei von Störungen, denn es kann direkt über Prozesse, Abläufe oder Funktionen eingestiegen werden
  • Fachexperten können Ihre Anforderungen präziser formulieren, da sie sich in ihrer Fachdomain befinden

Requirements-Engineering - Designmethoden Agile Softwareentwicklung yourIT
Requirements-Engineering - Designmethoden

4000,- Fördermittel jetzt als Ostergeschenk




Die BAFA hat ein Förderprogramm aufgelegt, welches kleine und mittlere Unternehmen (KMU) und Freie Berufe mit bis zu 4000,- Zuschuss (muss nicht zurückgezahlt werden!) für Beratungen fördert.
Und jetzt das beste: yourIT darf Sie beraten.


Montag, 6. April 2020

Requirements-Engineering - Anforderungen identifizieren

In der objektorientierten Programmierung gibt es zwei Begrifflichkeiten, die jeder kennen sollte: Generalisierung und Spezialisierung (Vererbung).

Alle Gemeinsamkeiten eines Objektes werden ermittelt und in der Basisklasse beschrieben (Generalisierung). Die eigentliche Implementierung erfolgt in einer abgeleiteten Klasse (Spezialisierung). Daraus schließen wir:

Requirements-Engineering - Anforderungen identifizieren
Requirements-Engineering - Anforderungen identifizieren


Anforderungen an die Aufgabe recherchieren (Generalisierung)


Samstag, 21. März 2020

Automatisierte Releasenotes - Transparenz in die Tiefe

Wer kennt sie nicht die ewigen Fragen: "Was sind die Highlights im aktuellen Release?" oder "Welche Bugfixes/Improvements konnten in das Release einfließen?"


Agiles arbeiten und der damit vermeintlichen Transparenz gegenüber Product-Owner, Stakeholder oder allgemein dem Management trotzt eine Phase des Requirements-Engineering, ja gar einer kompletten Iteration.

Es werden Anforderungen der Product-Owner und Stakeholder ermittelt, aufgenommen und aufbereitet (Requirements-Engineering). Es werden Priorisierungen des Backlogs, Sprintbacklogs und des Sprintlogs selbst durchgeführt. Am Ende steht die Frage in fast jedem Review-Meeting: "Welche dieser hier gezeigten Tickets werden in das kommende Release einfließen?". Dem Releasemanager drehen sich förmlich im Ansatz der zu erwartenden Frage die Fußnägel auf. Allerdings formuliert sich die Antwort auf die zu erwartende Frage schon, obwohl die eigentliche Frage noch überhaupt nicht gestellt worden ist: "Wozu führen und managen wir Komponenten und Versionen in unserer Planungs- und Releasephase?" 

Da sich diese Frage immer wieder stellt, haben wir uns als Software-Entwickler der yourIT dieser ewigen und immer wiederkehrenden Aufgabe gestellt. Als Ergebnis haben wir ein Maven-Plugin geschrieben, welches beim Bauen des Artefaktes die Releasenotes aus unserem Jira-Board abgreift, als HTML-Report aufbereitet und ins gebaute Artefakt mit einbaut. 

Im einfachsten Fall kann dieser Report im Review-Meeting herangezogen werden, da alle Tickets und Anforderungen, die gelöst wurden, darin aufgelistet sind. Im komplexeren Anwendungsfall werden die generierten Releasenotes automatisiert im Buildprozess eingepackt und sind für den Kunden jederzeit einsehbar.

Wie kompliziert ist das und was benötigen da jetzt genau?

Alles, was in der Maven-Konfiguration benötigt wird, ist ein von der yourIT geschriebenes Maven-Plugin:


<build>
  ...
    <plugin>
      <groupId>de.yit.yourit.maven.jira-releasenotes</groupId>
      <artifactId>jirareleasnotes-maven-plugin</artifactId>
      <version>1.0.0</version>
      <executions>
  <execution>
    <goals>
      <goal>jira-releasenotes</goal>
    </goals>
    <phase>compile</phase>
 </execution>
      </executions>
      <configuration>
  <jpql>component = "yourIT Webseite" and ..."</jpql>
  <jiraURL>http://0.0.0.0:8080</jiraURL>
  <username>jenkins</username>
  <password>*****</password>
  <target>${project.build.outputDirectory}/static/notes.html</target>
       </configuration>
    </plugin>
  ...
</build>

Im Buildprozess sieht es sehr unspektakulät aus:

[INFO] --- jirareleasnotes-maven-plugin:1.0.0:jira-releasenotes 
(default) @ website-app ---

Aber das Ergebnis ist dennoch Aussagekräftig:

ReleaseNotes - Report


Verantwortlich für diesen Beitrag: yourIT GmbH, Balingen, Zollernalbkreis

Montag, 22. Juli 2019

Studie belegt: Digitalisierung ist doch kein Jobkiller

Immer wieder wurde in der Vergangenheit die Digitalisierung als Jobkiller dargestellt. Zukunftsängste wurden damit heraufbeschworen. Aber anscheinend ist das Gegenteil ist der Fall. Eine Studie des arbeitgebernahen Instituts für die Deutsche Wirtschaft (IW) belegt jetzt: Stark digitalisierte Unternehmen haben in den letzten Jahren mehr Mitarbeiter eingestellt als weniger und nicht digitalisierte Unternehmen. Die Digitalisierung ist demnach ein Jobmotor!


Die Studie basiert auf einer Umfrage bei rund 1.200 Geschäftsführern und Personalleitern von deutschen Unternehmen. Sie zeigt, dass in den Jahren 2015 bis 2017 rund 62 Prozent der stark digitalisierten Unternehmen zusätzliche Mitarbeiter eingestellt haben. Dagegen waren es in den Unternehmen, für die das Internet bei ihren Geschäftsaktivitäten eine weniger wichtige Rolle spielt, nur rund 44 Prozent. Fazit der Studie: Die Gerüchte, dass Roboter in großem Stil Menschen aus den Jobs verdrängten, werden damit zumindest bisher klar widerlegt.

yourIT - Mehr und qualifiziertere Mitarbeiter durch Digitalisierung
yourIT - Mehr und qualifiziertere Mitarbeiter durch Digitalisierung

Als "stark digitalisierte Unternehmen" werden in dieser Studie solche bezeichnet, die sich bereits intensiv mit dem Thema Digitalisierung befassen und bei denen das Internet eine hohe Bedeutung für die Geschäftsaktivitäten aufweist.

Erfahrungen & Bewertungen zu yourIT GmbH