TM354 Unit 1 - Approaches to Software Development Flashcards
What errors can arise in software with the characteristic = Malleability ?
As change is easy to make, changes may be be made without thorough consideration
What errors can arise in software with the characteristic = Complexity ?
the more complex the software, the more chance there is of a change affecting other areas
What errors can arise in software with the characteristic = Size?
The greater the number of lines of code, the greater the number of likely errors
What is the defining quality of good software system?
Useful, Usable, Reliable, Flexible, Available, Affordable
How does greater flexibility make software system more affordable
Users needs change over time. Time to implement change in flexible system is less than for less flexible system. As labour costs are highest component of software cost, flexible s/w is more affordable
Give 2 reasons why software might not meet users needs
software is usually outofdate when delivered because:
- some needs are missed during requirements capture
- users’ needs change with time
suggest a means of measuring maintainability of s/w system
- effort to locate and fix errors
2. effort to adapt s/w to meet users’ needs
what can be learnt from legacy systems about developing good system
Legacy sys may start with flexibility, but change over time This needs standards and documentation.
suggest a reason why legacy systems will always be a problem
inherent malleability makes s/w easy to change. Metalworking analogy. Blacksmith - component brittle
why consider splitting large project into chunks
limit to how much one person can remember at any time. easier to manage tasks if split into chunks
how does complexity of s/w affect maintenance
it is essential to make change without knowing all about the system. change is difficult when there are many dependencies
what is a module
module is an identifiable part. that is considered separately
why does it help to have low coupling
few dependencies. therefore any errors are less likely to propagate through system
give examples of kinds of info that would be valuable when considering a change
2 kinds of info : which modules are clients of the module in question what assumptions were made in client modules of module in questions
what are context dependencies
services of other modules that module needs to work properly
what are benefits of modules with defined interfaces
developers need to know only about the module
developers can understand aspects of software more thoroughly
should be easier to find bugs
chance of module reuse increased
why does it help to have high cohesion
module carries out sensible set of operations or activities. it implies one major abstraction per module. easier to understand the purpose of module