Scala ist eine Programmiersprache, die in der Java Virtual Machine läuft.
Einige Merkmale:
- objektorientierte und funktionale Sprache
- vereint Scriptsprachen mit statischer Typisierung
- mächtige Sprache
- Gefahr: sehr kompakter, unlesbarer Code möglich
Guter Überblick und erster Einstieg mit c’t Artikel 21/2009 auf Seite 182 ff.
Verwandte Artikel:
Warum Software schlecht ist
The most common criterion that I have seen used is the TNTWIWHDI or “That’s not the way I would have done it” criterion.
But there is one set of criteria that I think all engineers will agree with. A piece of software that fulfills its requirements and yet exhibits any or all of the following three traits has a bad design.
- It is hard to change because every change affects too many other parts of the system.
(Rigidity)
- When you make a change, unexpected parts of the system break.
(Fragility)
- It is hard to reuse in another application because it cannot be disentangled from the current application.
(Immobility)
Moreover, it would be difficult to demonstrate that a piece of software that exhibits none of those traits, i.e. it is flexible, robust, and reusable, and that also fulfills all its requirements, has a bad design. Thus, we can use these three traits as a way to unambiguously decide if a design is “good” or “bad”.
Quelle: Robert C. Martin, http://www.objectmentor.com/resources/articles/dip.pdf
Verwandte Artikel:
Objekte vergessen Ihre Umgebung mit dem Dependency Injection Muster.
In einem klassisch aufgebauten OO-System ist jedes Objekt selbst dafür zuständig, seine Abhängigkeiten, also benötigte Objekte und Ressourcen, zu erzeugen und zu verwalten. Dafür muss jedes Objekt einige Kenntnisse seiner Umgebung mitbringen, die es zur Erfüllung seiner eigentlichen Aufgabe normalerweise nicht benötigen würde. Insbesondere muss es, um die entsprechenden Objekte erzeugen zu können, ihre konkrete Implementierung kennen.
Ein Implementierungsbeispiel mit dem ASP.NET MVC Framework, dem DI Framework StructureMap 2.0 in C# und etwas TDD:
http://haacked.com/archive/2007/12/07/tdd-and-dependency-injection-with-asp.net-mvc.aspx
Mehr: http://de.wikipedia.org/wiki/Dependency_Injection
Verwandte Artikel:
Agilität bedeutet nicht, dass man orientierungslos vor sich her entwickelt. Durch folgende Praktiken haben die verschiedennen Interessengruppen einen guten Einblick in das Projekt.
- Tägliche Teammeetings
- Burndown (oder -up) Grafiken je Iteration (Sprint) und für das gesamte Release
- Echte Fortschrittsmessung mit der Definition von DONE
- Anzahl der entdeckten Fehler nach DONE Meldung
- Review Meetings am Ende einer Iteration
- Grad der Testabdeckung
Daneben natürlich die üblichen Klassiker:
Verwandte Artikel:
Guter Vergleich von SVN und CVS mit verteilten Versionierungssystemen Git und Mercurial im CCC Chaosradio Podcast CRE130. Einblick in die Historische Entwicklung, Unterschiede und Erweiterungen.
Die Verteilung des kompletten Repositories sorgt in der Open Scource Szene zu einer wirklichen verteilten Möglichkeit der Code Ownership. OpenSource++ quasi.
Auch für Closed Source Projekte bietet das stark vereinfachte Merging von Branches Vorteile in Repositories mit parallelen Zweigen.
Weblink: http://chaosradio.ccc.de/cre130.html
Verwandte Artikel: