Patterns of successful Software Projects (Part 1)

zhaozj2021-02-16  104

Reprinted: Patterns of successful Software Projects (Part 1)

A Short Introduction To My Framework for successful projects, Using Terminology from the Pattern Litrate. Future Posts Will Expand on these Topics.

Definition of "surcessful"

There are five basic truths that make a successful software project: regardless of what development environment or programming language is used, no matter whether it is managed using an "agile" or a waterfall process, OO, SOA, AI or punch cards.

They area:

The customer / user has a reason for the project (based on their need, a demonstrated ROI, "it sounds cool", etc) The developers know what they are building (there is some mechanism for requirements specification) The developers know how they are to do it (knowledge and usage of tools and "process") The development team will know when they are done (there exists some "exit" milestone criteria) The customer / user agrees (they accept or purchase it)

.

Forces on Software Projects

There Are A Number of "Forces" on a Software Project.

THESE INCLUDE (But Are Not Limited to):

Level of business / customer satisfaction-functionality, usability Time-to-market-deadlines, milestones, marketplace, competition Development team self sufficiency-technology / knowledge, resources Expected return on investment (and timeframe) -value, tangible, intangible Developer's community of Understanding-Shared Knowledge, Sharing Mechanism Need for Efficiency And Predictability-Efficiency Accuracy, Resource Usage Development Organization's Culture-Risk Tolerance, "Learning" Organization

CONTROL

Finally there are various elements that the development team can control They include:. Development technology / tool (team's familiarity with, effectiveness of, appropriateness for solution) Technical support for technology / tool (mentors, training, collaboration) Team size / composition and geographical locality (includes skill sets, team organization, and management) Iteration length (of any defined milestone, eg, including release schedule; for continuous hacking, length = 0, for waterfall, length = Infinite (or "all of it", there is No ity (artifacts, models, documentation, process mechanism)

I propose That:

Software development must balance the forces using the control mechanisms There are a number of patterns that "solve" the balance Different tools and technologies can make this easier or harder A particular "balance point" for a given project may "move" in the force space As The Project Progresses Different Tools and Technologies CAN Help or Hinder Balance Control

转载请注明原文地址:https://www.9cbs.com/read-13607.html

New Post(0)