Software Engineering (COMP 301) FINAL EXAM

When should prologue comments be used?
Click the card to flip 👆
1 / 83
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.