User Tools

Site Tools



This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
start [2012-11-23 12:30]
christian first version of a start page
start [2018-06-24 10:59] (current)
christian design cards
Line 1: Line 1:
 ====== Principles Wiki ====== ====== Principles Wiki ======
 +===== About this Wiki =====
 +This wiki is a place to collect, examine, and discuss software design knowledge in a systematic way. Currently there is a strong focus on (object-oriented) design principles ([[collections:​SOLID]],​ [[collections:​GRASP]],​ [[principles:​Don'​t Repeat Yourself|DRY]],​ [[principles:​Keep It Simple Stupid|KISS]],​ ...). In the future other forms of [[about:​experience reuse]], like patterns and anti-patterns,​ will also be explored and interconnected with the principles.
 ===== Principles and Principle Languages ===== ===== Principles and Principle Languages =====
-The purpose of this wiki is to collect software development principles. ​Just like common solution schemes to recurring problems are documented using patterns, common assessment rules telling good solutions from bad onescan be described using principles. So principles are another form of experience reuse. There are dozens and maybe hundreds of such principles, some of which are described, ​examined, discussed, ​and interconnected ​in this wiki.+Just like common solution schemes to recurring problems are documented using [[glossary:patterns]], common assessment rules telling good solutions from bad ones can be described using [[glossary:principles]]. So principles are another form of experience reuse. There are dozens and maybe hundreds of such principles, some of which are examined ​here. 
 +[[collections:​ood_principle_language|{{ :​collections:​ood_principle_language.png?​nolink&​100|}}]] 
 +[[glossary:​Principle languages]] similarly to [[glossary:​pattern languages]] interconnect principles such that the consideration of one principle inevitably leads to other principles which are likely to be relevant in the same context. Currently there is one principle language described here ([[collections:​OOD Principle Language]]) ​and others will follow ​in the future. 
 +===== Design Cards ===== 
 +[[https://​​projects/​designdudes/​design-cards-improving-discussions-of-software-dev?​ref=e57yvx|{{ ::​cards_in_case_small.jpg?​nolink&​250|}}]] 
 +We are currently creating playing cards with principles. While the wiki is best for looking up principles, cards are ideal for learning them. Furthermore the cards can be used during discussions about software design. The key rule is that you can only play one card at a time. As a result you have to think about the most convincing argument to play out first. So the quality of the argument counts and not the quantity. 
 +Have a look at our [[https://​​projects/​designdudes/​design-cards-improving-discussions-of-software-dev?​ref=e57yvx|Kickstarter campaign]]. It'll run until the end of July. 
 +===== Principles and Design Types ===== 
 +[[http://​|{{:​types_logo.png?​nolink&​100 |}}]] 
 +The validity a a certain principles is rarely disputed. But that different developers put different weight on them. Almost no-one would claim that [[principles:​Keep It Simple Stupid|KISS]] is not a valid principle. But there are ones who think [[principles:​Generalization Principle|GP]] is more important.  
 +It turns out that developers can be characterized by which principles they favor when making design decisions. Understanding these different attitudes helps in communicating about design.
-The following pages describe the idea in more detail: +[[|]] describes a system of 16 design types characterizing developers ​in the aforementioned way. Each design type links back here to those principles each type favors or disregards. There is a questionnaire for testing yourself, a questionnaire for assessing colleagues and some statistics ​about those who already took part.
-  * [[about:Principles]] +
-  * [[about:​Principle Languages]] +
-  * [[about:​Using Principles in the Plan-Driven World]] +
-  * [[about:​Using Principles ​in the Agile World]] +
-  * [[about:Describing Principles]]+
-===== Principles ​===== +===== Start =====
-  * [[principles:​Keep It Simple, Stupid]] (KISS) +
-  * [[principles:​Generalization Principle]] +
-  * [[principles:​Single Responsibility Principle]] (SRP) +
-  * [[principles:​Model Principle]] +
-  * [[principles:​Low Coupling]] +
-  * [[principles:​High Cohesion]] +
-  * [[principles:​Don'​t Repeat Yourself]] (DRY) +
-  * [[principles:​|...]]+
-===== Glossary ===== +Start exploring ​the wiki with the [[principles:|full list of principles]], the [[collections:OOD Principle ​Language]] or the [[collections:|list of (principle) collections]]. This wiki is organized in several namespaces. One for each kind of [[about:experience reuse]] (principles,​ patterns, anti-patterns, ​...) plus some organizational ones.  Get an overview of the different kinds of content in the wiki page about [[about:​experience reuse]] or the [[?​do=index|sitemap]]. ​
-Some terms shall be used consistently throughout ​the wiki. The [[glossary:]] lists and defines them: +
-  * [[glossary:​Principle]] +
-  * [[glossary:Principle Language]] +
-  * [[glossary:|...]]+
-===== About the Wiki itself =====+[[wiki:​contribute|Contributions]] to the wiki are welcome. Registration is not required (but appreciated). Almost all namespaces are world-editable. It's an open wiki so you are encouraged to share your knowledge.
-This wiki uses the [[wiki:​dokuwiki|DokuWiki]] software. For information on how the wiki markup (some variation of markdown) works, see the [[wiki:​syntax|]] page. 
start.1353670230.txt.gz · Last modified: 2013-05-19 22:05 (external edit)