Software Development Flashcards
Why refactor code?
- Improves design of software
- Easier to understand
- To find bugs
- To program faster (gain greater understanding of the program)
What is technical debt?
Technical debt is the cost of additional rework caused by choosing an easy option now instead of choosing a better approach that would take longer.
What are some impacts of technical debt?
- Too much time maintaining existing system.
- Latent defects found after delivery.
- Takes more effort to add new functionality.
- User dissatisfaction.
What type of maintenance are there?
- Corrective maintenance (fix/repair)
- Adaptive maintenance (changing needs)
- Perfective maintenance (performance)
- Preventative maintenance (fixing bugs before the activate)
What is system re-engineering?
Where an old system may be re-structured and re-documented. You use automated tools to process and re-engineer a legacy system to create a new system that is more maintainable. Re-structuring or re-writing part or all of a legacy system without changing its functionality.
What are the two advantages of re-engineering?
- Reduced risk
- Reduced cost
What are the four levels of software reuse?
The abstraction level:
- Don’t reuse software directly but use knowledge of successful abstractions.
The object level:
- Directly reuse objects from a library.
- Components that implement a single well-defined object or function may be reused.
The component level:
- Collections of objects and object classes that you reuse.
The system level:
- The whole of an application system may be reused either by incorporating it without change into other systems.
What are some advantages of software reuse?
- Reduced development costs
- Accelerated development
- Effective use of specialist knowledge
- Reduce margin of error in project estimation
What are some disadvantages with software reuse?
- Increased maintenance costs
- Not-invented here syndrome
- Finding, understanding, and adapting reusable components
What are advantages of COTS?
- More rapid deployment of a reliable system may be possible.
- It is possible to see what functionality is provided by the applications.
- Businesses can focus on their core activity without having to devote a lot of resources to IT systems development.
- As operating platforms evolve, technology updates may be simplified as these are the responsibility of the vendor.
What risks are associated with using COTS?
Vendor risk – little support; vendor goes out of business
Product risk - Requirements may have to be adapted to reflect the functionality; poor performance when integrated.
Process risk – time required to understand how to integrate product is higher than expected