Page modified: wtorek, lipiec 12, 2011 22:11:14
While draft samples are in the software development generally usual and well-known solutions, in order to solve problems, anti- Patterns are negative examples from solutions already accomplished, which give references, how setting of tasks could be better solved and should. As synonym also the term is negative sample used.
Classification
Draft samples became the public particularly by the book Design Patterns of the Viererbande admit. After by the software development ever from successfully locked setting of tasks one profited to more from positive experiences, one concentrated also on it the negative examples, thus recurring errors during the software development to identify and document. Anti- Pattern already manifested can be repaired by skillful measures. The knowledge of their existence helps to avoid it. Usually anti- Pattern result against better knowledge, from experience lacking or missing qualification. To observe however also conscious pursuit is in certain scenarios, in order to achieve a certain purpose. Effects of anti- Pattern go from marginal to enterprise critical.
Categorization
Meanwhile ranges of application of the anti- Patterns are differentiated ever more finely. Thus one differentiates anti- Patterns with pure programming (one speaks here also of code smells, which with existence and identification can be removed by Refactorings), with architecture and Design, with the project management, with enterprise processes, at the enterprise organization and management. Beyond that in practice ever more so-called Meta Patterns can be identified. These unite individual Patterns to a new, abstrakteren Pattern or introduce a further dimension or a abstraktere categorization.
Project management anti- Patterns
- "Smoke and mirror "(English Smoke and mirrors): Finished functions are not pretended as finished.
- "Blown up software "(English software bloat): Each new version needs more resources
- "Obtaining by devious means of functionality "(English feature creep): The range of functionality which can be developed is held in a project plan. The customer tries to accommodate further functionality after the production of the project plan into the version with. If the version in work leads the necessary Design does not exhibit, dates not to be kept cannot or the costs across the regular grow to problems. With heavyweights processes very dangerously, with easy-weighty like XP the consequences must to be clear with all took part. A systematic requirement management and change management are mandatory. Extreme, bad-willing and roughly negligent application of this sample can be motivated by the fact that the order plate, which demands always new functionality, the product would like to boycott and its conclusion prevent seeks.
- "Obtaining by devious means further ranges of application "(English Scope creep): like obtaining by devious means of functionality not related to functionality separate on the range of application. Also here the client is characterised by the fact that he hides skillfully and the range of the software to later extend would like without he this explicitly admits. Example: discussed ranges of application are not suddenly very important and/or the absence of a range even as error are represented, which must be repaired dringendst.
- "Brooks law ": Coworker to a late software project to add continues to retard the project only (English Adding one power ton of A late software project makes it more later.
- Death Sprint: Overheated project plan. Software iterative made available however in a much to short time interval. Outward the project first very successfully looks: new versions with new characteristics are locked again and again. However the quality of the product both outward visibly suffers, as well as technically, which however only the developer recognizes. The quality takes off with each "successful" new iteration. Opposite of Death March.
- Death March: the opposite of Death Sprint. A Death March project drags on eternally. In an optimal case Vorabversionen are made available, which are however from bad quality. The failure is objectively visible. No Milestones can be held and/or existed it none. At worst a consequence from the fact can be that the project is not no more project, but only a temporally not final lining up of activities. Concrete promises for dates and supply of characteristics are missing. Can be taken also consciously in purchase, in order to divert from deficits in the organization and not kidnap developments (so long at something develop to a not exactly specified characteristic in any form subjectively functioned). If both requirement management and change management are missing and the project is no more project, then the development product orientless around and its quality constantly decreases. Can be combined interestingly enough also with Death Sprint, in order to divert outward from Planungslosigkeit and deficits with organization and technology. Then as new, those already for a long time existed or it exists no control instance, which necessity, relevance, form, correctness and importance of made available functionality, is made available to functionality evaluate (example: New requirements from yesterday are (not
contain!) nose from tomorrow). Occurs frequently, if there is no Stakeholder, which has interest in the product, or if the expenditure flowing into the product has or even the whole product finally no meaning/importance. In this case the enterprise or the development department is occupied pretty often (with itself).
Architecture and/or Design anti- Patterns
- "Extraterrestial spiders "(English Alien spiders): a Design, which does not earn the name. Very kommunikative objects, which know each other all mutually. At all no use of draft samples. With n objects there are n* (n-1) /2 pairs of communications.
- "Gas works "(English gas factory): Gas works are an unnecessarily complex system Design for a quite simple setting of tasks. Exemplary use: "I wanted to have a software solution, no gas works. "
- "God object "(English God object): An object, which too much makes white respectively too much. Allocation after responsibilities, packaging and observance of draft samples help to meet this sample. Also as God class (God class) and Blob admits.
- "Spaghetti code ": A very compact system structure its supervisory data flow a pot Spaghetti resembles.
- "Sumo wedding "(English Sumo Marriage): A Fat Client depends unnaturally strongly on the data base. In the data base very much logic is positioned in form of the data base-own programming language, in Oracle for example with PL/SQL. Whole architecture is very inflexible. If application is to migrate to an application of Internet or change the data base, then many ranges must again be developed on both layers (Client and data retention). The systems are not decoupled.
- Usually the use of data transfer objects in JEE 5.