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
what characteristics should a module display to show it is easy and cheap to develop and maintain
module should have low coupling and high cohesion and well defined interface
why is it important to achieve balance between coupling and cohesion
may have choice between small set of loosely coupled less cohesive modules or larger set of tightly coupled more cohesive modules.former is difficult to understand. In latter, relationships may be over complex
suggest similarities and differences between software architecture and building architecture
they are both abstractions of the structure of a system. they represent systems that affect concerns of different stakeholders.
Changing a building once complete is expensive. changing details or internal decoration is cheap.
Software different , particularly malleability and complexity
what are characteristics of a component
component is module with good abstraction for a problem. component should be capable of being reused or being replaced later within existing software. well defined interface with strong cohesion and low coupling
how does concept of an architecture contribute to component reuse
arch of s/w sys embodies high level decisions about structure of system and this architec may apply to more than one system
which form of decomposition might be used in s/w architecture
basic form of decomposition used in s/w arch is partitioning to meet separate concerns, each being addressed by subsystem. e.g separate UI from core business, or build / reuse components for some of the partitions
what are similarities and differences between components and services
both promote reuse and flexibility.
both use public interfaces to allow requestors to make use of functionality without relying on their implementation
component usually implemented in an oo technology
service uses communication standards that allow interoperation of diverse technologies