Se-3 (Sharath Vtu)
Se-3 (Sharath Vtu)
Se-3 (Sharath Vtu)
MODULE-1
Crystal
Modeling Principles
1. The primary goal of the software team is to build software, not create models.
Agility means getting software to the customer in the fastest possible time.
Models that make this happen are worth creating, but models that slow the
process down or provide little new insight should be avoided.
2. Travel light—don’t create more models than you need. Every model that is
created must be kept up-to-date as changes occur. More importantly, every new
model takes time that might otherwise be spent on construction (coding and
testing). Therefore, create only those models that make it easier and faster to
construct the software.
3. Strive to produce the simplest model that will describe the problem or the
software. Don’t overbuild the software. By keeping models simple, the resultant
software will also be simple. The result is software that is easier to integrate,
easier to test, and easier to maintain (to change).
4. Build models in a way that makes them amenable to change. Assume that
your models will change, but in making this assumption don’t get sloppy. For
example, since requirements will change, there is a tendency to give
requirements models short shrift. Why? Because you know that they’ll change
anyway. The problem with this attitude is that without a reasonably complete
requirements model, you’ll create a design (design model) that will invariably
miss important functions and features.
5. Be able to state an explicit purpose for each model that is created. Every time
you create a model, ask yourself why you’re doing so. If you can’t provide solid
justification for the existence of the model, don’t spend time on it.
6. Adapt the models you develop to the system at hand. It may be necessary to
adapt model notation or rules to the application; for example, a video game
application might require a different modeling technique than real-time,
embedded software that controls an automobile engine.
7. Try to build useful models, but forget about building perfect models. When
building requirements and design models, a software engineer reaches a point of
diminishing returns. That is, the effort required to make the model absolutely
complete and internally consistent is not worth the benefits of these properties.
Principle 8. Don’t become dogmatic about the syntax of the model. If it
communicates content successfully, representation is secondary. Although
everyone on a software team should try to use consistent notation during
modeling, the most important characteristic of the model is to communicate
information that enables the next software engineering task. If a model does this
successfully, incorrect syntax can be forgiven.
9. If your instincts tell you a model isn’t right even though it seems okay on
paper, you probably have reason to be concerned. If you are an experienced
software engineer, trust your instincts. Software work teaches many lessons—
some of them on a subconscious level. If something tells you that a design
model is doomed to fail (even though you can’t prove it explicitly), you have
reason to spend additional time examining the model or developing a different
one.
10. Get feedback as soon as you can. Every model should be reviewed by
members of the software team. The intent of these reviews is to provide
feedback that can be used to correct modeling mistakes, change
misinterpretations, and add features or functions that were inadvertently
omitted.
Programming principles:
As you begin writing code, be sure you
• Constrain your algorithms by following structured programming practice.
• Consider the use of pair programming.
• Select data structures that will meet the needs of the design.
• Understand the software architecture and create interfaces that are consistent
with it.
• Keep conditional logic as simple as possible.
• Create nested loops in a way that makes them easily testable.
• Select meaningful variable names and follow other local coding standards.
Validation Principles:
After you’ve completed your first coding pass, be sure you
• Conduct a code walkthrough when appropriate.
• Perform unit tests and correct errors you’ve uncovered.
• Refactor the code.
Testing Principles.
In a classic book on software testing, Glen Myers states a number of rules
that can serve well as testing objectives:
• Testing is a process of executing a program with the intent of
finding an error.
• A good test case is one that has a high probability of finding an as-
yet undiscovered error.
• A successful test is one that uncovers an as-yet-undiscovered error.
Deployment Principles
1. Customer expectations for the software must be managed.
Too often, the customer expects more than the team has promised to deliver,
and disappointment occurs immediately. This results in feedback that is not
productive and ruins team morale.