Software Evolution ,Reengineering and Refactoring Flashcards
Why is the evolution of software important for an organization
-For the business value of the software to be maintained
-The majority of the software budget is allotted to the changing and evolving of existing software
Can Urgent changes be implemented without going through all stages
Urgent changes may be implemented without going through all stages
How does evolution happen when agile methods are used?
Agile methods are based on incremental development so the transition from development to evolution is seamless
What kind of testing is particularly valuable when changes are made to a system?
Automated regression testing is particularly valuable when changes are made to a system
What is automated regression testing?
is a form of testing that makes sure that new software upgrades do not break the existing software application
Can additional user stories be created to reflect changes?
Changes may be expressed as additional user stories
What are legacy systems?
These are older systems that rely on languages and technologies that are no longer used for the development of new systems
What is the problem with legacy systems
They may be very dependent on older hardware ,software ,libraries, business processes
What are the layers of a legacy system
hardware,platform and infrastructure software,application software, business processes
Why is it hard to replace legacy systems
It is risky and expensive ,the legacy system does not have complete system system specification,Everything is tighly coupled(that is the system and business processes,Some business rules are undocumented,new software may be late and /or over budget
What is business value assessment
is a detailed planning process to assess the product will provide whether its value to its users, company, or financial values as well
What is system quality assessment
process to determine whether a product meets quality standards
What professional field does system quality assessment
Quality Assurance
What are some issues we may find when we conduct a business value assessment?
The system is not used as much, the system does not support useful business processes, The system does not work when the users need it(not dependable),and system has high business value
What are some things that are assessed when assessing the quality of a system?
-Assessing the the business processes to see how it supports the current goals of the business.
-How effective is the systems environment (.e.g. AWS servers) and how expensive is it it to maintain?
-Application assessment
what is the quality of the application software
What is software maintenance and what does it involve?
Maintenance does not normally involve major changes, it is modifying a program after it has been put into use
What kind of products does maintenance refer to?
Maintenance is used to refer mostly to changing custom software(modify existing components and add new components ). Generic software products are said to evolve
What are the types of maintenance
-Repairs faults(fix bugs0
-Environmental adaptation: So it operates in different environment(computer ,OS)
-Functionality addition and modification: Modify the system to satisfy new requirements
How is the maintenance costs compared to development costs?
Usually greater than development costs(1 times to 100 times depending on the application)
What is software reengineering
restructuring or rewriting part of all of a legacy system without changing its functionality to make it easier to maintain
Advantages of software reengineering?
-It is often cheaper to reengineer than to create new software.
-There is reduced risk in reengineering compared to creating completely new software.
What are some reengineering process activities?
-Convert code to new language,
- reverse engineering(analyze the program to understand it)
-Restructure program and make it more modular and open to modification
-Restructure and clean up data
What is refactoring
make improvements to the program so that its not easy for it to break if a change is made (preventative maintenance)
-improve structure, reduce complexity
-refactoring should not involve the addition of new functionality
What’s the difference between Refactoring and reengineering
-Reengineering happens after a system has been maintained for some time and maintenance costs are increasing
-Refactoring is a continuous process of improvement throughout the development and evolution progress
What are some bad smells in program code
duplicate code, long methods, switch(case) statements,Data Clumping(different data found together), Speculative generality(developers include generality in case it is required)
What is the process of software evolution driven by?
The process of software evolution is driven by requests for changes
What is software re-engineering concerned with /
Software reengineering is concerned with re-structuring ad re-documenting software