Midterm Qs : Theory Flashcards
What is legacy code?
code that continues to meet needs of the customers but is difficult to evolve
What is beautiful code?
Long-lasting code that is easy to evolve and meets customers needs.
Why is it important to deal with legacy code?
It might be difficult to rewrite old software
What is quality assurance?
Process or standards that result in high quality products and improve the manufacturing process
What is quality software?
Software that meets the costumers needs and is easy to evolve
Quality == “fitness for use”
What does verification mean?
Did you build the thing right? (Did you meet the specification?)
What does validation mean?
Did you build the right thing? (Is this what the customer wants? That is, is the specification correct?)
What do we do to assure software quality?
Testing!
What is the approach that makes exhaustive teaching feasible? Divide and?
Divide and Conquer. We can significantly cut down the number of test cases by approaching the problem hierarchically.
What are the different types of tests?
Unit testing: makes sure a single procedure does what was expected
module testing: tests across individual units, classes
integration testing: ensures that the interfaces between the units have consistent assumptions and communicate correctly
system/acceptance testing: tests to see if the integrated program meets its specifications
What is test coverage?
The percentage of code lines that were run by the test suite.
100% test coverage != no bugs.
Not 100% test coverage != bugs are present.
What does regression testing mean?
automatically rerunning old tests so new changes don’t break old code.
How did software engineering originate?
Margaret hamilton used the term to distinguish it from hardware and other kinds of engineering
What is Continuous Integration Testing?
regression testing every time new code is added
What does Plan-and-Document mean?
Extensive planning upfront