300 likes | 436 Views
Make Quality #1. It’s difficult to define quality at the onset of a project Modern design takes quality into account along with complexity, cost, and features. High-quality Software is Possible. Involving Customer Prototyping Simplifying Inspecting Hiring good people.
E N D
Make Quality #1 • It’s difficult to define quality at the onset of a project • Modern design takes quality into account along with complexity, cost, and features
High-quality Software is Possible • Involving Customer • Prototyping • Simplifying • Inspecting • Hiring good people
Give Products to CustomersEarly • Key to modern process framework • Involve customers in several ways throughout project life cycle
Determine the Problem BeforeWriting Requirements • Actually, requirements and architecture should evolve together • Problems become more apparent as one tries to develop a solution
Evaluate Design Alternatives • Again, analysis of design alternatives goes along with requirements specification • It’s easier to grasp what the problems are when
Use an Appropriate ProcessModel • Royce speaks of a “Process Framework” • The “Process Framework” should be configured to specific characteristics of the project at hand
Use Different Languages forDifferent Phases • Don’t use the same notation throughout the lifecycle • Different phases require different approaches
Minimize Intellectual Distance • Software structure should resemble real-world structure • This concept gave rise to OO techniques and visual modeling • This also aids in involving the customer
Put Techniques Before Tools • True, but don’t underestimate good tools • Automation through good tools facilitates standardization and good technique
Get It Right Before You MakeIt Faster • It’s easier to make it work, and then make it fast. • A working program is a prerequisite to understanding performance trade-offs
Inspect Code • Inspecting code is useful when focused on known issues • But today’s tools make it easy to test functionality throughout the life cycle
Good Management is More Important Than Good Technology • Good technology will not compensate for poor management • Good management can attract, configure and retain a quality team
People Are The Key to Success • Just as good management trumps good technology, quality people are more important than good tools.
Follow With Care • These days technology fads are hard to distinguish from technology improvements • The benefits of which tools and techniques to use must be weighed carefully • Applies to determining an appropriate Process Framework
Take Responsibility • It takes more than just good methods and tools to succeed • Good methods can make bad designs, and poor methods can make good designs • People, management and culture are just as important
Understand the Customer’s Priorities • Take customer priorities into account with other stakeholder priorities • But don’t forget that you are obligated to do what’s right for the customer
The More They See, The More They Need • True, but this should not discourage frequent customer involvement • The savvy SW Project Manager will be prepared to argue the best way to balance affordability, features, and risk
Plan to Throw One Away • Never plan to throw one away • With modern development techniques there is seldom any need to start from scratch
Design for Change • Attempt to predict the kinds of changes likely to occur in a system’s life cycle • Good for risk management • Key to successful software projects
Design Without Documentation is NOT Design • Software artifacts should be mostly self-documenting • Modern design tools make documentation evolve along with design
Use Tools, But Be Realistic • A good process is well established, automated, and instrumented • Don’t underestimate the need for a good development environment
Avoid Tricks • Avoid novelty solutions, but don’t avoid innovative solutions
Encapsulate • Information hiding is the underlying concept behind OO • This is as fundamental a technique to SW engineers as math is to physics
Use Coupling and Cohesion • Difficult to measure • Better to focus on amount of SW scrap and rework
Use the McCabe Complexity Measure • Complex stuff is obvious • Interesting from an academic perspective, but not terribly useful in management or decision making
Don’t Test Your Own Software • Developers need to take ownership of product quality • But independent test teams offer objectivity • Everyone should test it!
Analyze Causes for Errors • This leads to over-analysis and over-design too early in a project • Committing to prototyping and construction phases makes errors more obvious • Save analysis for production stage
Realize that Software’s Entropy Increases • All software systems undergo change • Entropy - as a software system changes it becomes more difficult to manage • Remember – ‘Design for Change’
People and Time are NOT Interchangeable • Measuring a project by person-months only makes little sense
Expect Excellence • People will perform better if you have high expectations • The concept of motivation in the workplace applies to all disciplines