web-dev-qa-db-fra.com

Logiciel open source bien conçu / de haute qualité

Je prends une classe de conception de logiciels où je devrais choisir un logiciel open source pour analyser à partir du point de vue de la conception du logiciel.

Ce doit être un grand projet: pas moins de 100 000 lignes de code.

J'aimerais vraiment choisir un logiciel très bien conçu et conçu pour avoir de bonnes perspectives sur une bonne conception logicielle.

Par bon design, je veux dire des choses comme des classes et une architecture significatives, une bonne utilisation des modèles (design), une bonne utilisation de l'abstraction, une bonne organisation de composants, une cohésion élevée et un faible accouplement entre composants, etc.

Avez-vous un logiciel pour me suggérer?

Notez que le logiciel doit simplement avoir un bon design, le design n'a pas besoin d'être documenté! :)

Il n'a pas besoin d'être une application pour l'utilisateur final ... elle peut aussi être une bibliothèque, un outil, etc.

32
Andrea Zilio

Par bon design Je veux dire des choses comme des classes et une architecture significatives, bon usage des modèles de conception, bon usage de l'abstraction, bonne organisation de composants, cohésion élevée et faible couplage entre composants

Premièrement, un logiciel, bon ou mauvais, ne mène pas dans la solitude - il modélise un scénario réel mondial que les humains conçoivent comme un problème et sont donc toujours associés étroitement avec quelque chose appelé "domaine d'application". Donc, chaque fois que vous parlez de logiciels, connaissez-le d'abord et étudiez le domaine - pour seulement vous pouvez atteindre la discrétion du bien et du mauvais.

  • (( git - pas seulement bon, mais un design incroyable. Ce n'est pas une version de version à son noyau, juste un système de fichiers. Un placage mince de fonctionnalités sur le dessus du noyau en fait un système de contrôle de version. Apprenez à connaître les internes de GIT et votre sens du logiciel sera éclairé.

  • ( jQuery - Pas une bibliothèque documentée très bien (interne), mais une source inspirante démontrant comment le code JavaScript côté client peut faire des merveilles .

  • ((( Nodejs - Si vous êtes dans la création de serveurs, ce projet a des idées et des modèles rafraîchissants à offrir.

  • ( v8 - Très bon code C++, bibliothèque fantastique pour apprendre/étudier les implémentations de la machine virtuelle.

  • (( Projets NOSQL - Couch, Mongo, Redis, Cassandra - Ces projets démontrent des façons intelligentes résoudre les problèmes de persistance. Aussi, ils embrassent l'idée de la persistance de Polyglot.

  • ((( Boost Bibliothèques - bonne dose de C++.

  • (( OpenStack - Très bons projets sur le cloud computing et la virtualisation.

  • ( La Fondation Software Apache - Choisissez l'un de leurs projets et l'étudie. La structure modulaire de HTTPD est une excellente source si vous souhaitez voir comment les composants se réunissent. APR (Apache Portable Runtime) - une très bonne libère aussi.

  • (( mod_wsgi - L'un des meilleurs programmes C dans lesquels j'ai rencontré.

"Bon usage des modèles de conception" - il n'est pas important que le code correspondre à un modèle de conception bien connu - il est plus important de résoudre le problème "intelligemment" - qu'il est maintenu, réutilisable et lisible. Si le code est entassé dans une "forme" particulière - juste pour adhérer à un modèle de conception - il peut s'agir de mauvais code.

"Pas moins de 100 000 lignes de code" - depuis quand le nombre de lignes deviendra-t-il une métrique de bonne qualité - goûter à un goût de "logiciel bien conçu/architecturé" ne nécessite que cela sera grand.

Encore une fois, n'oubliez pas d'étudier la nature et les nuances du domaine problématique d'abord, puis explosez la lecture du code.

Mise à jour: oct. 2015

Influxdb - https://influxdb.com/ Ce projet GO est en cours de développement actif et n'est toujours pas très complexe. Donc, vous pouvez commencer à creuser dans le code relativement facilement que quelque chose comme OpenStack.

23
treecoder

Un tirage au sort. Tous les grands projets open source doivent être brillants pour survivre. Apache, Linux, GNU Les projets sont tous brillants.

13
S.Lott
  • Chrome
  • Firefox
  • Apache
  • Mysql
  • PostgreSQL
  • Linux
  • GNU
9
Michael J.V.

Python. Plus précisément, CPPHON, la mise en œuvre principale. Pour la version 3.2, l'interprète exécute environ 50k SLOC de code C, bibliothèque standard sur 400k SLOC de Python code. Compte tenu de la qualité extrêmement élevée de la langue et de son encouragement des principes de la lisibilité et de la bonne Conception, je penserais que tout ce code serait assez bon.

7
Tom Zych

TEX avec Mettafont valent vraiment une étude: http://www.tug.org/

Votre bibliothèque locale peut vous aider avec des versions imprimées des sources.

4
user1249

Je cherchais un tel projet moi-même et je suis installé pour CLang.

  • Il est relativement nouveau (progéniture de LLVM qui n'a que 10 ans), donc non (ou pas que j'ai vu) code
  • Une conception modulaire (comme LLVM), extrêmement bien pensée, que je pense est très importante de nos jours
  • Code très propre, bien commenté (vous voyez souvent des citations de la norme pour expliquer les choses)
  • Une suite de test/un environnement de test très bien conçu

Il n'y a pas beaucoup de modèles de design là-bas, quelques visiteurs ici et là, mais c'est à peu près tout. Les hiérarchies de la classe sont simples et droites ... en fait, je pense simplicité est l'objectif, il ne semble y avoir aucune sur-ingénierie.

Cela dit, étant critique de la performance, un certain nombre de décisions de conception peuvent sembler douteuses (évitant les fonctions virtuelles pour de nombreux objets, compiler sans RTTI/exceptions), de sorte que tout n'est pas applicable au logiciel quotidien.

2
Matthieu M.

Je vais suggérer l'édition de la communauté Intellij, puisque vous mentionnez que vous aimez les outils logiciels.

http://www.jetbrains.org/

Ce que j'aime à propos de ça:

  1. C'est un outil qui fait quelque chose plutôt qu'un cadre
  2. Ils font des choses vraiment intéressantes comme l'analyse de code statique et l'analyse des flux de données que je trouve vraiment agréable de voir les détails de.
  3. Une bonne chose est que vous puissiez l'utiliser pour effectuer votre étude car elle a la possibilité d'exécuter toutes les analyses de code sur elle-même.

(Certes, je suis un fanboy JetBrains)

2
sylvanaar

Blender est bien structuré et bien conçu.

1
dan_waterworth

Donc, juste une autre variante - qu'en est-il langage de programmation de Nemerle ?

Ce n'est pas si populaire (mais GitHub ajout simplement une surbrillance pour Nemerle) et vous pouvez trouver de nombreux bons points là-bas.

0
cnd

Joomla, c'est très bien fait. Mais je ne suis pas sûr de savoir si ses 100 000 lignes

0
Imran Omar Bukhsh