The ways to make money from principles of conventional software engineering – software project management

There are many descriptions of engineering software "the old way." after years of software development experience, the software industry has learned many lessons and formulated many ways to make money from principles. This section describes one view of today’s software engineering principles as a benchmark for introducing the ways to make money from primary themes discussed throughout the remainder of the book. The benchmark I have chosen is a brief article titled ways to make money from "fifteen principles of software engineering" [davis, 1994], the article was subsequently expanded into a book [davis, 1995] that enumerates 201 principles. Despite its title, the article describes the top 30 principles, and it is as good a summary as any of ways to make money from the conventional wisdom within the software industry. While I endorse much of this wisdom, I believe some of it is obsolete. Davis’s top 30 principles are quoted next, in italics. For each principle, I comment on whether the perspective provided later in this ways to make money from book would endorse or change it. I make several assertions here that are left unsubstantiated until ways to make money from later chapters.

A defining quality commensurate with the project at hand is ways to make money from important but is not easily done at the outset of ways to make money from a project. Consequently, a modern process framework strives to understand the trade-offs among features, quality, cost, and schedule as early in the life cycle as possible. Until this understanding is achieved, it is not possible to specify or manage the achievement ways to make money from of quality.

▲ this principle seems anchored in the waterfall mentality in two ways to make money from ways: (1) the requirements precede the architecture rather than evolving together. (2) the architecture is incorporated in the requirements specification. While a modern process clearly promotes the analysis of design ways to make money from alternatives, these activities are done concurrently with requirements specification, and the notations and artifacts for requirements and architecture are ways to make money from explicitly decoupled.

7. Use different languages for different phases. Our industry’s eternal thirst for simple solutions to complex problems has ways to make money from driven many to declare that the best development method is ways to make money from one that uses the same notation throughout the life cycle. Why should software engineers use ada for requirements, design, and code unless ada were optimal for all these phases?

▲ this is an insightful statement. It has been misstated by several software experts more or ways to make money from less as follows: "early performance problems in a software system are a sure ways to make money from sign of downstream risk." every successful, nontrivial software project I know of had performance issues arise ways to make money from early in the life cycle. I would argue that almost all immature architectures (especially large-scale ones) have performance issues in their first executable iterations. Having something executing (working) early is a prerequisite to understanding the complex performance trade-offs. It is just too difficult to get this insight through ways to make money from analysis.

▲ the value of this principle is overhyped for all but ways to make money from the simplest software systems. Today’s hardware resources, programming languages, and automated environments enable automated analyses and testing to be ways to make money from done efficiently throughout the life cycle. Continuous and automated life-cycle testing is a necessity in any modem iterative development. General, undirected inspections (as opposed to inspections focused on known issues) rarely uncover architectural issues or global design tradeoffs. This is not to say that all inspections are ineffective. When used judiciously and focused on a known issue, inspections are extremely effective at resolving problems. But this principle should not be in the top 15, especially considering that the industry’s default practice is to overinspect.

▲ my belief in this principle caused me to write this ways to make money from book. My only argument here is that the term meager resources ways to make money from is ambiguous. A great, well-managed team can do great things with a meager budget ways to make money from and schedule. Good management and a team meager in quality, on the other hand, are mutually exclusive, because a good manager will attract, configure, and retain a quality team.

14. Follow with care. Just because everybody is doing something does not make it ways to make money from right for you. It may be right, but you must carefully assess its applicability to your environment. Object orientation, measurement, reuse, process improvement, CASE, prototyping—all these might increase quality, decrease cost, and increase user satisfaction. The potential of such techniques is often oversold, and benefits are by no means guaranteed or universal.

A understanding the customer’s priorities is important, but only in balance with other stakeholder priorities. "The customer is always right" is a mentality that has probably resulted in more squandering ways to make money from of money than any other misconception. Particularly in the government contracting domain, but more generally whenever a customer contracts with a system ways to make money from integrator, the customer is frequently wrong.

A this principle is true, but it suggests that you would never want to show ways to make money from a user anything. It should read, "the more users see, the better they understand." not all stakeholders are 100% driven by greed. They know that they have limited resources and that developers ways to make money from have constraints. Demonstrating intermediate results is a high-visibility activity that is necessary to synchronize stakeholder expectations. The ramification of this principle on a modern process is ways to make money from that the software project manager needs to have objective data ways to make money from with which to argue the inevitable change requests and maintain ways to make money from a balance of affordability, features, and risk.

▲ you should not plan to throw one away. Rather, you should plan to evolve a product from an immature ways to make money from prototype to a mature baseline. If you have to throw it away, OK, but don’t plan on it from the outset. This may have been sage advice for the 100% custom, leading-edge software development projects of the past. In today’s software systems, however, much of the componentry exists (at least the operating system, DBMS, GUI, network, and middleware), and much of what is built in the first pass ways to make money from can be conserved.

A this is a very simple statement that has proven ways to make money from to be exceedingly complex to realize. Basically, it says that we must predict the future and construct ways to make money from a framework that can accommodate change that is not yet ways to make money from well defined. Nevertheless, I endorse this principle wholeheartedly because it is critical to ways to make money from success. It is difficult to predict the future accurately, but attempting to predict the sorts of changes that are ways to make money from likely to occur in a system’s life cycle is a useful exercise in risk management ways to make money from and a recurring theme of successful software projects.

A this principle is also anchored in the document-driven approach of the past, in which the documentation was separate from the software itself. With visual modeling and higher order programming languages, it is usually counterproductive to maintain separate documents for the ways to make money from purpose of describing the software design. High-level architecture documents can be extremely helpful if they are ways to make money from written crisply and concisely, but the primary artifacts used by the engineering team are ways to make money from the design notations, source code, and test baselines. I would modify this principle as follows, to better exploit today’s technological advances: "software artifacts should be mostly self-documenting." this principle is discussed at length in chapter 6.

▲ I find it hard to believe that this is one ways to make money from of the top 30 principles. It is difficult to draw the line between a "trick" and an innovative solution. I know exactly what davis is getting at, but I would not want to enact a principle that ways to make money from has any connotation of stifling innovation. Obfuscated coding techniques should be avoided unless there are compelling ways to make money from reasons to use them. Unfortunately, such compelling reasons are common in nontrivial projects.

▲ component-based design, object-oriented design, and modern design and programming notations have advanced this principle ways to make money from into mainstream practice. Encapsulation is as fundamental a technique to a software engineer ways to make money from as mathematics is to a physicist. It should be the sole subject of a semester course ways to make money from in universities that teach software engineering.

A this vital principle is difficult to apply. Coupling and cohesion are abstract descriptions of components for which ways to make money from I know of no well-established, objective definitions. Coupling and cohesion are therefore difficult to measure. Modern metrics for addressing maintainability and adaptability are centered on ways to make money from measuring the amount of software scrap and rework. Cohesive components with minimal coupling are more easily adapted with ways to make money from less scrap and rework. We can reason about the disease (too much coupling and too little cohesion) only by observing and measuring the symptoms (scrap and rework).

A complexity metrics are important for identifying some of the ways to make money from critical components that need special attention. In my experience, however, the really complex stuff is obvious, and it is rare to see these complexity measures used ways to make money from in field applications to manage a project or make decisions. These metrics are interesting from an academic perspective (metaproject research and strategic decision making) and can be useful in project management (if automated), but they do not belong in the top principles.

▲ on the surface, this is a good principle, especially in the construction phase, when errors are likely to repeat. But analyses of errors in complex software systems have found ways to make money from one of the critical sources to be overanalysis and overdesign ways to make money from on paper in the early stages of a project. To some degree, these activities were "error prevention" efforts. They resulted in a lower return on investment than would ways to make money from have been realized from committing to prototyping and construction activities, which would have made the errors more obvious and tangible. Therefore, I would restate this as two principles: (1) don’t be afraid to make errors in the engineering stage. (2) analyze the cause for errors in the production stage.

▲ this is another remnant of conventional software architectures. Almost all software systems undergo continuous change, and the sign of a poor architecture is that its ways to make money from entropy increases in a way that is difficult to manage. Entropy tends to increase dangerously when interfaces are changed for ways to make money from tactical reasons. The integrity of an architecture is primarily strategic and inherent ways to make money from in its interfaces, and it must be controlled with intense scrutiny. Modern change management tools force a project to respect and ways to make money from enforce interface integrity. A quality architecture is one in which entropy increases minimally ways to make money from and change can be accommodated with stable, predictable results. An ideal architecture would permit change without any increase in ways to make money from entropy.