Unit - 2 Part 2 Principles
Unit - 2 Part 2 Principles
Core Principles, Principles That Guide Each Framework Activity, Requirements Engineering, Establishing the
Groundwork, Eliciting Requirements, Developing Use Cases, Building the Requirements Model, Negotiating
Requirements, Validating Requirements.
Software Engineering Knowledge, Core Principles, Principles That Guide Each Framework Activity
Software Engineering Knowledge
According to Mr STEVE McConnell often hear people say that software development knowledge has a 3-
year half-life: half of what you need to know today will be obsolete within 3 years. In the domain of
technology-related knowledge, that’s probably about right. But there is another kind of software
development knowledge
—a kind that I think of as "software engineering principles"— that does not have a three-year half-life.
These software engineering principles are likely to serve a professional programmer throughout his or
her career.
Core Principles:
i. Communication Principles
Principle #1. Listen. Try to focus on the speaker’s words, rather than formulating your response to
those words.
Principle # 2. Prepare before you communicate. Spend the time to understand the problem before you
meet with others.
Principle # 3. Someone should facilitate the activity. Every communication meeting should have a
leader (a facilitator) to keep the conversation moving in a productive direction; (2) to mediate any
conflict that does occur, and (3) to ensure than other principles are followed.
Principle #4. Face-to-face communication is best. But it usually works better when some other
representation of the relevant information is present.
Principle # 5. Take notes and document decisions. Someone participating in the communication should
serve as a “recorder” and write down all important points and decisions.
Principle # 6. Strive for collaboration. Collaboration and consensus occur when the collective
knowledge of members of the team is combined …
Principle # 7. Stay focused, modularize your discussion. The more people involved in any
communication, the more likely that discussion will bounce from one topic to the next.
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.
ii. Planning Principles
Principle #1. Understand the scope of the project. It’s impossible to use a roadmap if you don’t know
where you’re going. Scope provides the software team with a destination.
Principle #2. Involve the customer in the planning activity. The customer defines priorities and
establishes project constraints.
Principle #3. Recognize that planning is iterative. A project plan is never engraved in stone. As work
begins, it very likely that things will change.
Principle #4. Estimate based on what you know. The intent of estimation is to provide an indication
of effort, cost, and task duration, based on the team’s current understanding of the work to be done.
Principle #5. Consider risk as you define the plan. If you have identified risks that have high impact
and high probability, contingency planning is necessary.
Principle #6. Be realistic. People don’t work 100 percent of every day.
Principle #7. Adjust granularity as you define the plan.
Granularity refers to the level of detail that is introduced as a project plan is developed.
Principle #8. Define how you intend to ensure quality. The plan should identify how the software team
intends to ensure quality.
rinciple #9. Describe how you intend to accommodate change. Even the best planning can be obviated
by uncontrolled change.
Principle #10. Track the plan frequently and make adjustments as required. Software projects fall
behind schedule one day at a time.
Coding Principle:
a. Preparation principles : Before you write one line of code, be sure you
Understand of the problem you’re trying to solve.
Understand basic design principles and concepts.
Pick a programming language that meets the needs of the software to be built and the
environment in which it will operate.
Select a programming environment that provides tools that will make your work easier.
Create a set of unit tests that will be applied once the component you code is completed.
d. Testing Principles: In a classic book on software testing, Glen Myers states a number of rules
that can serve well as testing objectives:
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.
v. Deployment Principles:
Principle 1. Customer expectations for the software must be managed.
Principle 2. A complete delivery package should be assembled and tested.
Principle 3. A support regime must be established before the software is delivered.
Principle 4. Appropriate instructional materials must be provided to end users.
Principle 5. Buggy software should be fixed first, delivered later.