Answers to questions
- If software maintenance costs so much then why don't companies start
over every time?
- The combined cost of the rest of the development cycle is still
greater than only doing maintenence.
- Also, companies maintain their software in order to improve the
performance, reliability and functionality of the software. These
recieve less attention in the earlier parts of the development cycle
becuase people are typically more interested in publishing the software
then in perfecting it before it is published.
- Can you give examples that explain the ideas of flexable and rigid?
- rigid - software that will fly a plane
this type of project is one where the design cannot be easily changed
after it is specified. For example, the OS we happen to be designing
for the project is guaranteed to finish operation A in 3.7 ms, but the
specification requires operation A to be finished in 3.2 ms. If the
design was more flexable, we could adjust the specification so that it
is ok to finish operation A in 3.7 ms. On the other hand, if the design
is rigid, the OS must be changed so that operation A takes 3.2 ms (which
may take a lot of extra work).
- flexable - A project whose only specification is a statement of
purpose
Here, for example, a section of the software is implemented. It
is then decided that it does not fit the bill for what was really
wanted, so something completely different will need to be done to take
its place.
- How do you quantify flexability of design?
- there is no exact measure of flexability, but we can have a sense
of flexability of design. When we say that a design is extremely
flexable, very flexable, moderately flexable, moderately rigid, etc...
This sense of flexability is enough to estimate the contribution that
flexability has in the cost of development.
- How does reuse drive the cost of software?
- If a part of the software is required to have a certian amount of
reusability, then the cost of the software will likely go up. This is
typically because reuse generally requires better documentation and a
more complete implementation of functionality and error handling. If,
for example, all a particular piece of software must do is add complex
numbers, but the complex number "class" is required to be reused, then
we will have to implement the rest of the class, or at least design
around the fact that the rest of the implementation for the class will
have to build on what is done for the current project.
- How do you say C++ has low run-ime cost?
- C++ "has" low run-time cost in the sense that we can work at
the bit level and have more control over the way memory is used, for
example. This can allow for efficient managment of resources and time.
It is, of course, possible to write slow programs in C++.
- Are coupling dependencies different in different paradigms?
- The definition of coupling dependency is not different for
different paradigms, but different paradigms can offer techniques that
help to reduce the amount of coupling dependencies in
programs.