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
The concept behind the P and D models.
extensive planning before you ever start coding and write detailed documentation
Why don’t P and D models work well?
- changes require extensive changes in the documentations
-went over timelines
-changes occur during production
What was a model that tried to fix it by using prototypes?
Spiral.
Uses 4 large iterations
1) Determine objectives and constraints of this iteration.
2) Evaluate alternatives and identify and resolve risks.
3) Develop and verify the prototype for this iteration.
4) Plan the next iteration.
What’s in the Agile Manifesto?
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following plans
What is the bad part of Spiral?
Iterations were too long apart from each other(months and years vs days and weeks)
Who created the concept of Extreme Programming?
Kent Beck.
Does XP advocate shorter or longer iterations?
Shorter iterations. One- to two-week iterations.
Does XP advocate writing tests before code or tests after code?
Write tests before code, either using Behavior Driven Design or Test Driven Design. “Write the tests before you write the code.”
Does XP advocate working alone or working in pairs?
Working in pairs.
What does Agile emphasize to reduce mistakes?
Test-driven development(TDD)
What does Agile emphasize to validate customer requirements?
User Stories.
What does Agile emphasize to measure progress?
Velocity.
Does Agile emphasize refining a working but incomplete prototype?
Yes. “Developers should continuously refine a working but incomplete prototype until the customer is happy with the result, with the customer offering feedback on each iteration.”
How often in Agile do you get feedback from the customer/boss?
Each iteration; 1 - 2 weeks
Is Agile an accepted practice?
It wasn’t at first but now it is because of its success rate.
What’s in the Agile Manifesto?
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following plans