Module 3 4
Module 3 4
• Principle 1. Be agile.
• Principle 2. Focus on quality at every step
• Principle 3. Be ready to adapt.
• Principle 4. Build an effective team.
• Principle 5. Establish mechanisms for communication and coordination.
• Principle 6. Manage change.
• Principle 7. Assess risk.
• Principle 8. Create work products that provide value for others.
4.2.2 Principles That Guide Practice
• Principle 1. Divide and conquer
• Principle 2. Understand the use of abstraction.
• Principle 3. Strive for consistency
• Principle 4. Focus on the transfer of information
• Principle 5. Build software that exhibits effective modularity.
• Principle 6. Look for patterns.
• Principle 7. When possible, represent the problem and its solution from a number of
different perspectives.
• Principle 8. Remember that someone will maintain the software
4.3 PRINCIPLES THAT GUIDE EACH FRAMEWORK ACTIVITY
• Communication Principles
• Planning Principles
• Modeling Principles
• Requirements modeling principles
• Design Modeling Principles.
• Construction Principles
• Coding Principles.
• Testing Principles
• Deployment Principles
4.3.1.Communication Principles
• Principle 1. Listen
• Principle 2. Prepare before you communicate
• Principle 3. Someone should facilitate the activity.
• Principle 4. Face-to-face communication is best.
• Principle 5. Take notes and document decisions.
• Principle 6. Strive for collaboration
• Principle 7. Stay focused; modularize your discussion.
• Principle 8. If something is unclear, draw a picture.
• Principle 9.
• (a) Once you agree to something, move on.
• (b) If you can’t agree to something, move on.
• (c) If a feature or function is unclear and cannot be clarified at
the moment, move on.
• Principle 10. Negotiation is not a contest or a game. It works best when
both parties win.
4.3.2. Planning Principles
• Principle 1. The primary goal of the software team is to build software, not create
models.
• Principle 2. Travel light—don’t create more models than you need.
• Principle 3. Strive to produce the simplest model that will describe the problem or the
software.
• Principle 4. Build models in a way that makes them amenable to change.
• Principle 5. Be able to state an explicit purpose for each model that is created.
• Principle 6. Adapt the models you develop to the system at hand.
• Principle 7. Try to build useful models, but forget about building perfect models.
• Principle 8. Don’t become dogmatic about the syntax of the
model. If it communicates content successfully, representation
is secondary.
• The construction activity encompasses a set of coding and testing tasks that lead
to operational software that is ready for delivery to the customer or end user. In
modern software engineering work, coding may be
(1) the direct creation of programming language source code (e.g., Java),
(2) the automatic generation of source code using an intermediate design-like
representation of the component to be built, or
(3) the automatic generation of executable code using a “fourth-generation
programming language” (e.g., Visual C).
• The initial focus of testing is at the component level, often called unit
testing. Other levels of testing include
• 1. integration testing (conducted as the system is constructed),
• 2.validation testing that assesses whether requirements have been met for the
complete system (or software increment), and
• (3) acceptance testing that is conducted by the customer in an effort to
exercise all required features and functions.
• The following set of fundamental principles and concepts are applicable to
coding and testing:
• Coding Principles. The principles that guide the coding task are
closely aligned with programming style, programming
languages, and programming methods.
• A good test case is one that has a high probability of finding an as-yet
undiscovered error.
• Principle 1. All tests should be traceable to customer requirements.
• Principle 2. Tests should be planned long before testing begins.
• Principle 3. The Pareto principle applies to software testing
• Principle 4. Testing should begin “in the small” and progress toward
testing “in the large’’
• Principle 5. Exhaustive testing is not possible.
4.3.5 Deployment Principles