# Software Entwickeln



## chrism120 (7. Mai 2019)

Guten Tag, 
ich möchte einen Andwendung mit Webinterface, die folgende Funktion machen kann:
-IP scannen
-IP Delete
- Protokolle lesen und in einer Datenbank speichern 
ich beschäftige mit damit seit fast einem Monat und habe wirklich keine Ahnung wie ich damit anfangen soll. diese Anwendung muss inn Java programmiert werden
danke im Voraus für eure Antworte


----------



## kneitzel (7. Mai 2019)

Also die Beschreibung ist erst einmal relativ oberflächig und ich habe keine Ahnung, was da genau gemacht werden soll...

Aber die Anforderung scheint zu sein, dass es eine Web Applikation mit Java werden soll. Hast Du Dir Servlets / JSP einmal angesehen? Zum Beispiel im Java ist auch eine Insel Buch: http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_23_001.htm ??


----------



## chrism120 (7. Mai 2019)

hi Kneitzel , erstmal danke für die Andwort.
also ich muss eine Anwendung(Webanwendung) wegen der Portabilität schreiben, die in eim lokalen Netz funktionieren soll. diese muss in der lage sein das lokale Netz scannen , die protkolle auch dazu und sie in einer Datenbank speichern und bei bedarf ein Back Up herstellen. Ich muss durch LDAP im Active Directory überprüfen, ob der Nutzer, der einen Login durchführen möchte, sich in dieser Gruppe befindet. Wenn ja, ist der Login erfolgreich, wenn nicht, dann hat er keinen Zugriff.


----------



## mihe7 (7. Mai 2019)

chrism120 hat gesagt.:


> diese muss in der lage sein das lokale Netz scannen , die protkolle auch dazu und sie in einer Datenbank speichern und bei bedarf ein Back Up herstellen.


Bitte was? Was soll die Anwendung "scannen"? Was heißt "scannen"? Was heißt, die Protokolle auch dazu? Was ist IP Delete? 

Die Webanwendung und die LDAP-Authentifizierung kannst Du mal hinten anstellen.


----------



## kneitzel (7. Mai 2019)

Was für Erfahrungen hast Du denn bisher in dem Bereich Softwareentwicklung?

Du bist hier ja bisher relativ unbedarft aufgeschlagen ... Das alles geht durchaus. Nur eben ist es extrem viel auf einmal, wenn man da noch keine Erfahrungen damit hat. (Und muss natürlich noch weiter spezifiziert werden!)

Also bezüglich Serverseitige Entwicklung ist Java extrem vielseitig. Da ist wirklich die Frage, was für Vorwissen Du hast und was für exakte Anforderungen an die Applikation gestellt werden! Und es sollte klar sein: Minimales Vorwissen und zugleich hohe Erwartungen werden nicht wirklich zusammen passen.

Bist Du eher ein Anfänger, dann solltest Du evtl. erst einmal Erfahrungen sammeln mit einfachen JSP Seiten, Datenbankzugriffe per JDBC, Weboberfläche halt einfache Webseiten, die generiert werden ...

Bist Du Fortgeschritten / Senior, dann wird die Latte evtl. höher liegen. Dann nutzt Du JEE, überlegst, welche der vielen Technologien du wie einsetzen willst (Alleine schon beim Datenbankzugriff hast Du viele Optionen ... JPA, Hibernation, ...) und selbst beim Webfrontend ist es dann gleich komplex: Was soll es denn wie sein? Single Page Applucation? Welche Frameworks? (Angular, React, ....?) Das sind dann Themen für sich ...

Und auch die Anforderungen sind natürlich noch unklar - wie mihe7 schon ausgedrückt hat (btw: Wie bekomme ich den User als Link? Dazu brauche ich doch die UserID ... im Code habe ich das schon gesehen, aber ich kriege die UserID, die ich dafür brauche, nicht. Klär mich bitte mal auf mihe7!)

Aber die sind in meinen Augen noch zweitrangig:
Entweder Du schreibst selbst irgendwelche Dinge. Java hat ja schon gewisse Möglichkeiten im Netzwerkbereich. Zur Not greifst Du auf externe Tools zu, die aufgerufen werden, irgendwas loggen und du dann die Logs auswertest. Das geht alles. 
Aber mich würde erst einmal interessieren, ob es überhaupt realistisch ist, dies anzugehen. Um dann evtl. zu Vorschlägen zu kommen die mihe7 da schon gebracht hat. Evtl. vergisst man vieles erst einmal.

Ach ja: Und die Forderung, Java einzusetzen kommt woher? Generell sollte man an jeder Projekt offen heran gehen. Es gibt Anforderungen, die erfüllt sein müssen. Diese werden erfasst. Aber bitte ohne hier schon gleich zu spezifizieren! Die Sprache ist erst einmal egal! (Ok, meist steht es schon fest - wenn eine Aufgabe an ein .Net Team heran getragen wird, ist schon klar, dass diese nicht PHP oder Java verwenden werden. Aber ggf. werden einzelne Teile in PowerShell abgearbeitet. Oder für technische Details wird auf C++ ausgewichen... Oder das Team ist ehh ausgelastet und daher bekommt ein anderes Team die Analyse übergeben Oder oder oder .... 
==> Keine Unnötigen Anforderungen entgegen nehmen, die da keine Rolle spielen!


----------



## mihe7 (7. Mai 2019)

kneitzel hat gesagt.:


> Wie bekomme ich den User als Link? Dazu brauche ich doch die UserID ... im Code habe ich das schon gesehen, aber ich kriege die UserID, die ich dafür brauche, nicht. Klär mich bitte mal auf mihe7!


Wovon sprichst Du?


----------



## M.L. (7. Mai 2019)

Die Klasse java.net.NetworkInterface  könnte man sich für die Verarbeitung der IP-Adressen mal ansehen: https://docs.oracle.com/javase/10/docs/api/java/net/NetworkInterface.html   (unter Beachtung der bisherigen Postings)


----------



## kneitzel (7. Mai 2019)

Ich meinte sowas:
@mihe7

```
[USER=58041]@mihe7[/USER]
```

Aber ich habe jetzt in der Vorschau gesehen, dass man nur das (at)Name schreiben muss und er ersetzt das automatisch ...
@kneitzel @mihe7 ....


----------



## chrism120 (7. Mai 2019)

kneitzel hat gesagt.:


> Was für Erfahrungen hast Du denn bisher in dem Bereich Softwareentwicklung?
> 
> Du bist hier ja bisher relativ unbedarft aufgeschlagen ... Das alles geht durchaus. Nur eben ist es extrem viel auf einmal, wenn man da noch keine Erfahrungen damit hat. (Und muss natürlich noch weiter spezifiziert werden!)
> 
> ...


ich bin eher Anfänger würde ich sagen. 
und dies habe ich als Aufgabe erhalten. Bisher habe ich nur die Klasse , vererbung und Kapselung gelernt.


----------



## chrism120 (7. Mai 2019)

mihe7 hat gesagt.:


> Bitte was? Was soll die Anwendung "scannen"? Was heißt "scannen"? Was heißt, die Protokolle auch dazu? Was ist IP Delete?
> 
> Die Webanwendung und die LDAP-Authentifizierung kannst Du mal hinten anstellen.



also das komplette Netzwerk einscannen ,die IP Adressen und Protokolle finden und sie in einer Datenbank einschreiben


----------



## mihe7 (7. Mai 2019)

Also nmap aufrufen und das Ergebnis verarbeiten?


----------



## chrism120 (7. Mai 2019)

mihe7 hat gesagt.:


> Also nmap aufrufen und das Ergebnis verarbeiten?



genau. ein bisschen so


----------



## kneitzel (7. Mai 2019)

mihe7 hat gesagt.:


> Also nmap aufrufen und das Ergebnis verarbeiten?


Das wäre mein Ratschlag. Das Tool mag man vielleicht beliebig austauschen, je nachdem, was wie vorhanden ist.



chrism120 hat gesagt.:


> ich bin eher Anfänger würde ich sagen.
> und dies habe ich als Aufgabe erhalten. Bisher habe ich nur die Klasse , vererbung und Kapselung gelernt.



Da finde ich die ganze Aufgabe extrem heftig. Da dann direkt eine Weboberfläche mit Autorisierung über LDAP zu fordern ist schon eine gewisse Herausforderung. Zumal ja viele Baustellen kommen: Datenbank, Minimum HTML und HTTP sollte man kennen, die Grundlagen beim Netzwerk müssen verstanden sein (also die Problemdomain, die man abbilden will, muss klar verstanden worden sein)...

Da hat @mihe7 dann aber auch Recht: Ignorier erst einmal die Anforderung Web und LDAP. Fang klein an. 
1. Versuch erst einmal die Daten zu bekommen. Dazu am Besten direkt einmal Unit Tests ansehen so dass Du von Anfang an von der main Routine weg kommst. (Die führt ja zu nichts fürchte ich. Oder @mihe7: wie siehst Du das mit JUnit?)
2. Dann schau an, ob Du eine Datenbank für die Daten erstellt bekommst. Und dann schreibst Du eine Klasse, die einen Connection String bekommt und dann eben Daten lesen, schreiben und löschen kann. (Auch schön Tests schreiben, die das austesten!)
3. Erst wenn Du das hast (Das ist schon ein super Zwischenziel), kannst Du Dir mal meinen Link zu servlets / JSP ansehen. Dann machst Du erste Seiten, um auf die Datenbank zuzugreifen.


Als letztes schaust Du Dir einmal an, wie das mit dem Logon klappen könnte. Das ist aber leider deutlich komplexer, denn da kommen dann ganz viele Dinge mit rein wie Security und so ... Wie speicherst Du, dass ein User angemeldet ist, so dass niemand sonst das missbrauchen kann? => Security ggf. erst einmal außen vor lassen, so es kein Produktiv-Tool ist. Sollte es ein produktives Tool werden: LASS ES! Du schreibst ein Tool und dann liest jemand fleissig LDAP Logins aus und missbraucht diese oder so. Pass da bloß auf! Das braucht dann wirklich eine gute Recherche und ich würde hier sogar zur Nutzung einer vorhandenen Library raten. Aber das bringt einiges an Komplexität!


----------



## chrism120 (7. Mai 2019)

kneitzel hat gesagt.:


> Das wäre mein Ratschlag. Das Tool mag man vielleicht beliebig austauschen, je nachdem, was wie vorhanden ist.
> 
> 
> 
> ...


 vielen Dank für Deinen Vorschlag. Ich mich mich vorher  viel mit Netzwerk als IP, Server , Security und so beschäftigt . Programmierung habe ich vor kurzem richtig angefangen und habe schon lange her mit PHP (Grundlage) gearbeitet. Jetzt beschäfftige ich mich mit Java und wie gesagt habe ich als Projekt bekommen. ich werde wie du oben vorgeschlagen hast verfahren. Danke noch mal


----------



## chrism120 (7. Mai 2019)

kneitzel hat gesagt.:


> Das wäre mein Ratschlag. Das Tool mag man vielleicht beliebig austauschen, je nachdem, was wie vorhanden ist.
> 
> 
> 
> ...


Vielen Dank für Deinen Vorschlag. Ich mich mich vorher  viel mit Netzwerk als IP, Server , Security und so beschäftigt . Programmierung habe ich vor kurzem richtig angefangen und habe schon lange her mit PHP (Grundlage) gearbeitet. Jetzt beschäfftige ich mich mit Java und wie gesagt habe ich als Projekt bekommen. ich werde wie du oben vorgeschlagen hast verfahren. Danke noch mal


----------



## mihe7 (7. Mai 2019)

kneitzel hat gesagt.:


> Dazu am Besten direkt einmal Unit Tests ansehen so dass Du von Anfang an von der main Routine weg kommst.


Die Idee ist gar nicht schlecht  

Zum Thema LDAP: ich hatte ihn so verstanden, dass er sich gegenüber der Webanwendung via LDAP authentifizieren können will. Dafür gibt es ja fertige Lösungen.


----------



## mihe7 (7. Mai 2019)

@chrism120 mal so aus Interesse: wie lange hast Du dafür Zeit?


----------



## kneitzel (7. Mai 2019)

mihe7 hat gesagt.:


> Die Idee ist gar nicht schlecht
> 
> Zum Thema LDAP: ich hatte ihn so verstanden, dass er sich gegenüber der Webanwendung via LDAP authentifizieren können will. Dafür gibt es ja fertige Lösungen.


Ja genau. Aber da muss man dann schon etwas aufpassen, was man da wie macht. Alleine schon der Punkt, dass da ggf. User und Passwort eingegeben werden bereitet mir Bauchschmerzen... Da haben wir halt bei unseren .Net Applikationen (die habe ich halt bisher immer geschrieben beruflich mit IIS drunter) immer komplett auf die Windows Based Authentication gesetzt, d.h. unsere Applikation hat User/Passwort nie gesehen. War dann auch bei Kunden deutlich einfacher in Betrieb zu bringen.

Du verstehst, worauf ich etwas hinaus will?


----------



## chrism120 (7. Mai 2019)

mihe7 hat gesagt.:


> @chrism120 mal so aus Interesse: wie lange hast Du dafür Zeit?


Ich habe keine feste Zeit dafür. Aber ich muss es so früh wie möglich fertig machen. ungefähr 5 Monaten


----------



## mihe7 (7. Mai 2019)

kneitzel hat gesagt.:


> Du verstehst, worauf ich etwas hinaus will?


Ja.



chrism120 hat gesagt.:


> Aber ich muss es so früh wie möglich fertig machen. ungefähr 5 Monaten


Ah, ok. Ich hatte schon befürchtet: 2 Wochen oder am besten gestern.


----------



## chrism120 (7. Mai 2019)

nein. Ich werde bis sptästens mittel Juli ein Beta Version vorstellen, deswegen möchte ich wirklich auf dem richtigen Weg sein.


----------



## chrism120 (7. Mai 2019)

mihe7 hat gesagt.:


> Ja.
> 
> 
> Ah, ok. Ich hatte schon befürchtet: 2 Wochen oder am besten gestern.


nein. Ich werde bis sptästens mittel Juli ein Beta Version vorstellen, deswegen möchte ich wirklich auf dem richtigen Weg sein.


----------



## mihe7 (7. Mai 2019)

Es gibt anscheinend eine Java-Lib, um nmap auszuführen etc.: nmap4j (keine Ahnung, ob das Teil was taugt).


----------

