Created by
Terms in this set (83)
List 3 external quality attributes and 3 internal quality attributes for software and explain how helping one might hurt the other.External: correctness, usability, efficiency
Internal: Maintainability, flexibility, portabilityWhat is the relationship between quality assessment and quality improvement?testingWhat combination of defect removal techniques yields the highest percentage of defect removal?Formal inspections of all requirements, architecture, and designs for critical parts of a system
Modeling or prototyping
Code reading or inspections
Execution testingExplain the concept of a formal code inspection, explaining the roles and what they do.Detecting defects, assessing technical progress
Moderator- keeping it moving
Author- wrote the design
Reviewer- has direct interest
Scribe- records errors
Management- maybe not includedExplain the concept, origin, and advantages of pair programming.one types, one watches. by Extreme Programming.
Holds up better under stress
Improves code quality
Shortens schedules
General benefits of collaborative constructionWhat is the Cardinal Rule of Software Evolution?refactoringDefine refactoring.a change made to the internal structure of software making it easier to understand and cheaper to modify without changing observable behaviorList five reasons to refactor code.Code is duplicated
Routine too long
Loop too long or too deeply nested
Class has poor cohesion
Parameter list has too many parametersWhat is the "fundamental theorem of formatting"?a good visual layout shows the logic structure of a programWhat are four objectives of a good layout?Accurately represent logical structure
Consistently represent logical structure
Improve readability
Withstand modificationsWhich layout style do you prefer and why? (pure blocks, emulated blocks, begin-end pairs, endline layout).I prefer begin end because you can tell where the braces line upWhich layout style does McConnell prefer for Java? C++?Java = pure-block
C++ = pure-block or begin-endWhat is the Holy Grail of code legibility?self-documenting codeList and explain the three types of comments which are acceptable for completed code.Summary of the code
Description of code's intent
Info that cannot be expressed in the codeWhat is an appropriate comment/code density?1 comment per 10 statementsHow are error, fault, mistake, failure, and defect related?fault occurs when a mistake is made. Failure is observed incorrect behavior. error is amount by which it is incorrect. Defect is generic for these.What is the purpose, role, and effect of a separate SQA group?test that developer's code is correct; develop standards; that is their focus.What are the strengths and weaknesses of reviews (inspections/walkthroughs)?walkthoughs have less steps and are less formal than inspectionsWhat is utility?product that is functioning is subjected to inputs according to the specificationsWhat is reliability?frequency and criticality of product failureWhat is robustness?range of operating conditions, possibility of unacceptable results with valid input, acceptability of effects when given invalid inputWhat is performance?meets constraints with response time or space requirementsWhat is correctness?satisfies its output specifications when operated under permitted conditionsWhat are four suggestions given by Brooks for "designing the bugs out"?Bug-proofing the definition
Testing the specification
Top-down design
Structured programmingWhat are five suggestions Brooks gives for system debugging?Use debugged components
Build plenty of scaffolding
Control changes
Add one component at a timeExplain the difference between black box and glass box testing.Black- test to specifications
White- test to codeExplain the concept of equivalence class and boundary testing.equivalence: any number in the test case is as good as any other
boundary: numbers on each side of the boundariesExplain the concepts of statement, branch, and path coverage during testing.statement coverage: series of test cases during which every statement is executed at least once
branch coverage: series of tests to ensure all branches are tested at least once
path coverage: testing all pathsWhat is cyclomatic complexity and how is it used?number of branches in the code artifact; metric for the number of test cases needed for branch coverage of a code artifactDefine unit testing.execution of a complete class, routine, or small program, by a single programmer or team, tested in isolation from the complete systemDefine component testing.execution of a class, package, small program, or other program element, by multiple programmers or teams, which is tested in isolation from the whole systemDefine integration testing.combined execution of two or more classes, packages, components, or subsystems by multiple programmers or teams.Define regression testing.repetition of previously executed test cases for finding defects that previously passed the same testsDefine system testing.execution of software in final configuration, including with other systems.Explain the difference between clean and dirty tests and explain which one you need more of and why.clean tests if it works, dirty tests for breaks. You need 5 dirties for every clean. Find the problems!List and briefly explain three types of white box testing.Equivalence partitioning: using only one test case that gets the same errors
Error guessing: creating test cases based on guesses where there might be errors
Boundary analysis: testing for off-by-one errorsList and briefly explain three types of "test support" tools/techniques.Building scaffolding to test individual cases
Coverage monitor: keeps track of what has been tested
Error databases: keeps track of errorsExplain the concept of "stabilizing the error."make the error occur reliably- helps you know what causes itHow does unit testing fit in with integration testing?unit test everything before integration testingWhat is incremental integration and why should we use it?add pieces one at a time; if adding the piece yields an error, it was that piece.What is the role of a "source code comparator" in debugging?a comparator can pinpoint differences in different versions that have been modifiedDefine and give advantages/disadvantage of big bang strategy.phased integration: design, code, test, debug each class; combine into system; test and debug whole system.
Adv: good for tiny programs
Dis: when put together, problems could arise anywhereDefine and give advantages/disadvantage of top down strategy.begin coding before low-level designs are complete
leaves trick interfaces for the end, causing changes throughout.Define and give advantages/disadvantage of top down vertical slice strategy.top-down in sectionsDefine and give advantages/disadvantage of bottom up strategy.restricts possible sources of error to the single class being integrated
conceptual design problems at top don't show up until the endDefine and give advantages/disadvantage of bottom up vertical slice strategy.bottom-up in sectionsDefine and give advantages/disadvantage of sandwich strategy.start at top and bottom and leave the middle for later
integrates the troublesome classes first, minimalizes scaffoldingExplain the concept of the "daily build and smoke test."entire system compiled and tested each day to ensure it runsList and define three different types of post-delivery maintenance.corrective: a fault needs correcting
perfective: change to improve effectiveness of product
adaptive: change to react to change in environment in which product operatesWhat is regression testing?checking for regression faults-accidentally added faults in other partsWhy is post-delivery maintenance the "most challenging aspect of software production"?deal with dissatisfied users
developer's fault, not maintainer
badly written code
maintenance looked upon as drudge work for incompetentsHow does OOP impact maintenance in a potentially negative way?inheritance- base class changed, all others mess upWhat are the advantages of having formal documents to guide a project?writing decisions is essential
documents communicate decisions to others
gives a database and checklistGive an example of "software tools" that might be developed by a "toolsmith".simulators: simulate a new computer before the machine is availableWhat does this mean, in terms of documentation: "use parts that must be there to carry as much information as possible"?let the words of the programming language speak for themselves when they canExplain the concept of egoless programming.not being attached to "your" codeExplain the roles of the members of the "chief programmer team".chief programmer: successful manager and skilled programmer who designed architecture and complex parts
backup programmer: be as competent as chief, did black box test case planning
programming secretary: skilled member, maintaining documentation, compiling, running test cases
programmers: just programWhat is meant by "synchronize-and-stabilize" life-cycle model?manager, developers, testers; daily synchronization stepHow does pair programming work?two programmers sharing a computer; one leaves, no problem; skill buildingHow does stepwise refinement relate to Miller's law?postpone decisions to concentrate on just seven important chunksGive and example of both a process metric and a product metric for software development.Process: cost
Product: SizeExplain the purpose of a "configuration control" tool.automatically change multiple variationsDo you think the "chief programmer team" can work? Why?it can work for smaller projects, but must be modified for bigger onesWhy does Brooks think the tower of Babel fell and what does this have to do with software development teams?Communication and organization: teams need to be cohesive and a well working machineGive several reasons why LOC is not a good metric for estimating the size of a product.Creation of code is only a small part of the process
Different languages means different amounts of lines
It is unclear how to count lines of code
Not all code written is delivered
A generator may make thousands of lines of code
Can only be determined when product is finishedDescribe, in general terms, how both FP and FFP are better than LOC.FP per person-month is the metric, shows efficiencyWhat is COCOMO and for what is it used?COnstructive COst MOdel: estimation techniqueWhat is IEEE 1058 and for what is it used?project management plan;Explain the importance of a systematic change control procedure.all changes will be considered in the context of what's best for the project overallName two popular version control systems.locks source files
allows multiple people to work on source filesWhat advantages do version control systems bring?You know if you step on someone's toes by working on the same file
You can easily update your copies of the project files to the current version
You can backtrack to older versions
You can get a list of the changes made to any file
You don't have to keep personal backupsWhat does Brooks mean by "essential" and "accidental" elements of a problem?essence is abstract
accidental complexityWhy is there no "silver bullet" for software engineering?There is no single development which by itself promises improvement in productivity, reliability, or simplicity.
Other sets by this creator
336 matching
31 terms