• No se han encontrado resultados

TRABAJO INDEPENDIENTE:

TECNOLÓGICA

INSERCIÓN DE LOS METADATOS

7.4 TRABAJO INDEPENDIENTE:

The AntiPatterns are summarized in Table A.1. The mini−AntiPatterns are summarized in

Table A.2.

The chapter column (far right) indicates the chapter in which the AntiPattern was described. The chapters each represent a different viewpoint, as follows:

• Chapter 5: software developer viewpoint

• Chapter 6: architecture viewpoint

• Chapter 7: manager viewpoint

Table A.1 AntiPatterns Summary

Name AntiPattern Solution Refactored Solution Ch.

Analysis ParalysisStriving for perfection and completeness in the analysis phase leads to project gridlock.

Incremental, iterative

development processes defer the detailed analysis until the knowledge is available.

7

Architecture System developed without a documented architecture, often due to overconfidence based on recent success.

Define architecture in terms of by Implication multiple viewpoints corresponding to system stakeholders.

6

The Blob Procedural−style design results in one object with numerous responsibilities more uniformly and responsibilities and most other objects holding only data.

Refactor the design to distribute isolate the effect of changes.

5

Corncob Difficult people obstruct and divert the software development process.

Address agendas of the individual through various tactical, operational, and strategic organizational actions.

7

Cut−and−Paste ProgrammingCode reused by copying source statements causes significant

maintenance problems.

Institute black−box reuse to reduce maintenance issues by having a common source code, testing, and documentation for multiple reuses.

5

Death by Planning

Excessive preplanning of software projects leads to postponement of development work and useless plans.

Pursue iterative software development process, which includes modest planning with known facts and incremental replanning

7

Design by Committee

Committee designs are overly complex and lack a common architectural vision.

Assign proper facilitation and software development roles for more effective

committee−based processes.

6

(possibly from legacy) is coded in OO language and notation.

principles; there is no straightforward way to refactor.

Golden Hammer A familiar technology or concept is applied obsessively to many problems.

Expand the knowledge of developers through education, training, and book study groups to expose developers to new solutions.

5

Irrational ManagementHabitual indecisiveness and other habits result in de facto decisions and development emergencies. Utilize rational decision−making management techniques. 7

Lava Flow Dead code and forgotten design information are frozen in an

ever−changing design.

Install configuration control processes to eliminate dead code, and evolve/refactor design toward increasing quality.

5

Poltergeists Classes have very limited roles and life cycles, often starting processes for other objects.

Allocate the responsibility to longer−lived objects, and eliminate the poltergeists.

5

Project MismanagementInattention to the management of software development process can cause indirection and other symptoms.

Monitor and control software projects to conduct successful development activities. 7 Reinvent the Wheel

Legacy systems with overlapping functionality don’t interoperate. Every system is built in isolation.

Use architecture mining and “best of breed” generalization to define a common interface; then use object wrapping to integrate.

6

Spaghetti Code An ad hoc software structure makes it difficult to extend and optimize code.

Refactor code frequently to improve software structure; support software maintenance and iterative development.

5

Stovepipe EnterpriseUncoordinated software architectures lead to lack of adaptability, reuse, and interoperability.

Use enterprise architecture planning to coordinate system conventions, reuse, and interoperability.

6

Stovepipe SystemAd hoc integration solutions and absence of abstraction result in brittle, unmaintainable architectures.

Use of abstraction, subsystem facades, and metadata to generate adaptable systems.

6

Vendor Lock−In Proprietary, product−dependent architectures do not manage complexity and lead to

out−of−control architecture and maintenance costs.

Install an isolation layer between product−dependent interfaces and the majority of application software to enable management of complexity and architecture.

6

Table A.2 Mini−AntiPatterns Synopsis

Ambiguous Viewpoint Unclear modeling viewpoint causes problematic ambiguities in object models.

Clarify which of the three essential viewpoints is modeled: business, specification, or implementation.

5

Autogenerated Stovepipe Automatic generation of interfaces for distributed, large−scale systems from fine−grain header files.

Separate the architecture−level framework design from the subsystem−specific design to manage complexity.

6

Blowhard Jamboree Industry pundits disseminate marketing information that concerns consumers.

Assign in−house expertise to separate the facts from the hype.

7

Boat Anchor A costly technology is purchased by a systems development project, but goes unused.

Send competent engineers to evaluate the product before buying it.

5

Continuous ObsolescenceInternet−time technology releases surpass the ability to keep up and synchronize other technologies.

Depend upon stable technologies and interfaces that you control. Open systems standards provide stability.

5

Cover Your Assets Document−driven software processes often employ authors who list alternatives instead of making decisions. Establish clear purposes and guidelines for documentation tasks; inspect the results for the value of

documented decisions. 6

Dead End Direct modification of commercial software or reusable software creates significant maintenance burdens for a software system.

Avoid modification of supported software. Choose mainstream, supported products and platforms whenever possible.

5

E−mail Is Dangerous E−mail is a useful, but volatile, way to communicate.

Avoid using e−mail for sensitive, controversial, or confrontational messages.

7

Fear of Success People (software developers included) do crazy things when a project is near successful completion.

When project

completion is imminent, make a clear declaration of success.

7

The Feud Managers who engage in protracted conflicts with peers have serious negative impacts on their staffs. Use professional facilitation or informal gatherings to resolve differences. 7

Fire Drill Management waits until the last possible moment to allow developers to proceed with design and

Engage in proactive design and prototyping, even if customers and management staff are

implementation; then they want results almost immediately.

not completely on−board.

The Grand Old Duke of York

Four out of five

developers cannot define good abstractions; this leads to excess complexity.

Designate project team architects who are abstractionists—that is, who possess the architecture instinct.

6

Input Kludge Custom−programmed input algorithms contain many bugs that are apparent to users and testers.

Utilize production−quality input processing

techniques, including lexical analysis, parser generators, and features matrices.

5

Intellectual Violence People use obscure references to esoteric papers, theories, and standards for intimidation or short−term gain.

Encourage education and practice mentoring throughout the

organization.

7

Jumble Interface designs are an unfactored mixture of horizontal and vertical elements, which necessitates frequent interface changes and an inability to reuse.

Partition architectural designs with respect to horizontal, vertical, and metadata elements.

6

Mushroom Management Developers are kept in the dark and fed fertilizer. End−user interaction is prohibited.

Solicit frequent user interaction to maximize usability and

acceptance.

5

Smoke and Mirrors End users mistakenly assume that a brittle demonstration is a capability ready for operational use.

Practice proper ethics to manage expectations, risk, liabilities, and consequences in computing sales and marketing situations.

7

Swiss Army Knife Overdesign of interfaces results in objects with numerous methods that attempt to anticipate every possible need. This leads to designs that are difficult to comprehend, utilize, and debug, as well as implementation dependencies.

Define a clear purpose for the component and properly abstract the interface to manage complexity.

6

Throw It over the Wall Documents are produced and disseminated without any provision for

technology transfer. Flexible guidelines are mistakenly interpreted as de facto policies or formal processes.

Ensure the delivery and dissemination of information to the planned implementation of any new processes or guidelines. Include instructional

development, training delivery, and technology transfer kits.

Viewgraph Engineering Organizations with limited technical capabilities for system development are taken at face value because they produce substantive documents and polished briefings.

Verify the development capabilities of the organization and key project staff. Utilize prototyping and mock−ups as part of any system development process. 7 Walking through a Mine Field Software technology is much less robust than people imagine; bugs are pervasive and potentially catastrophic.

Invest in software testing and inspection to reduce the frequency and density of software defects.

5

Warm Bodies Large software project teams make for

ineffective organizations and overruns. Heroic programmers are essential.

Plan small projects (four people in four months); they are much more likely to produce software success.

6

Wolf Ticket A technology is assumed to have positive qualities due to its open systems packaging or claimed standards compliance. Few standards have test suites (less than6 percent), and few products are actually tested for conformance.

Discover the truth behind the claims; question authority; assume nothing. Shift the burden of proof to the marketing organization. Talk directly to the technical product experts and developers.

6

Documento similar