< Free Open Study > |
Index[SYMBOL] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] daily build and smoke tests automation of benefits of broken builds 2nd build groups checklist defined diagnosis benefit holding area for additions importance of morning releases pressure pretest requirement revisions smoke tests unsurfaced work data architecture prerequisites bad classes, testing for change, identifying areas of combined states defined state defined-used paths, testing design entered state exited state good classes, testing killed state legacy, compatibility with nominal case errors test, generators for used state data dictionaries data flow testing data literacy test data recorder tools data structures data transformations for code tuning array dimension minimization [See data, code tuning] array reference minimization caching data floating point to integers indexing data purpose of data types "a" prefix convention [See data, types; variables, types of] BCD change, identifying areas of checklist control structures, relationship to Currency definitions iterative data key points for naming 2nd 3rd overloaded primitives refactoring to classes 2nd resources on selective data sequential data t_ prefix convention variables of, differentiating from data-level refactoring 2nd databases performance issues SQL subsystem design days-in-month, determining deallocation goto statements for pointers, of 2nd 3rd Debug.Assert statements debugging binary searches of code [See defects in code, fixing; tools, debugging] blindness, sources of breakpoints breaks, taking brute-force changes, recent checklist comments, misplaced common defects lists compilers as tools for 2nd confessional debugging costs of 2nd debugger tools 2nd 3rd 4th [See also debugging aids] defects as opportunities defined Diff tool execution profilers for expanding suspicious regions experience of programmers, effects of finding defects 2nd fixing defects guessing history of hypothesis testing 2nd incremental approach ineffective approach to key points line numbers from compilers lint tool listing possibilities locating error sources logic checking tools multiple compiler messages narrowing code searches obvious fixes performance variations project-wide compilers settings psychological considerations quality of software, role in quotation marks, misplaced readability improvements recommended approach reexamining defect-prone code resources for Satan's helpers scaffolding for scientific method of self-knowledge from source-code comparators stabilizing errors superstitious approaches symbolic debuggers syntax checking 2nd 3rd system debuggers test case creation testing, compared to time for, setting maximums tools for 2nd 3rd 4th [See also debugging aids] understanding the problems unit tests varying test cases warnings, treating as errors debugging aids C++ preprocessors [See debugging, aids to; debugging, defensive] case statements early introduction recommended offensive programming planning removal of pointers, checking preprocessors production constraints in development versions purpose of stubs version control tools decision tables declarations 2nd 3rd [See variables, declaring] const recommended declare and define near first use rule define near first use rule final recommended formatting implicit declarations multiple on one line numerical data, commenting order of placement of pointers 2nd using all declared Decorator pattern defects in code classes prone to error [See errors, coding] classifications of clerical errors (typos) Code Complete example construction, proportion resulting from cost of detection cost of fixing databases of detection by various techniques, table of distribution of ease of fixing defects error checklists expected rate of finding, checklist intermittent misunderstood designs as sources for opportunities presented by outside of construction domain percentage of, measurement performance issues programmers at fault for readability improvements refactoring after fixing scope of self-knowledge from size of projects, effects on sources of, table stabilizing defensive programming assertions assumptions to check, list of barricades checklist debugging aids defined error handling for exceptions 2nd friendly messages guideline graceful crashing guideline guidelines for production code hard crash errors guideline important errors guideline key points for logging guideline problems caused by quality improvement techniques, other robustness vs. correctness security issues trivial errors guideline validating input defined data state defining variables Delphi, recoding to assembler DeMorgan's Theorems, applying dependencies, code-ordering checker tools [See sequences, code, order of] circular clarifying concept of documentation error checking hidden initialization order naming routines non-obvious organization of code parameters, effective design abstractions, forming consistent accidental problems BDUF beauty bottom-up approach to design business logic subsystem capturing work central points of control change, identifying areas of changes, management of characteristics of high quality checklists 2nd classes, division into collaboration communications among subsystems completion of, determining complexity management construction activity, as contract, by coupling considerations database access subsystem defined diagrams, drawing discussion, summarizing divide and conquer technique documentation overkill documentation, as emergent nature of encapsulation enough, determining essential problems extensibility goal formality of, determining formalizing class contracts goals checklist good practices table for hierarchies for high fan-in goal IEEE standards information hiding 2nd inheritance iteration practice key points leanness goal level of detail needed levels of loose coupling goal low-to-medium fan-out goal maintenance goals mental limitations of humans metrics, warning signs from nondeterministic nature of 2nd object-oriented, resource for objects, real world, finding packages level performance tuning considerations portability goal practices 2nd prioritizing during prototyping resources for restrictive nature of reusability goal routines, of sloppy process nature of software system level standard techniques goal standards, IEEE stratification goal strong cohesion subsystem level system dependencies subsystem testing for implementation tools for top-down approach tradeoffs UML diagrams user interface subsystem visual documentation of wicked problem nature of Wikis, capturing on destructors, exceptions with detailed-design documents developer testing development processes development standards, IEEE diagrams heuristic design use of UML Diff tools 2nd direct access tables advantages of [See table-driven methods, direct access] arrays for case statement approach days-in-month example defined design method for flexible-message-format example fudging keys for insurance rates example keys for object approach transforming keys disassemblers discipline, importance of discourse rules disposing of objects divide and conquer technique division Do loops [See also loops] documentation abbreviation of names ADTs for bad code, of Book Paradigm for capturing work checklists 2nd classes control structures CRC cards for dependencies, clarifying design as 2nd detailed-design documents external Javadoc 2nd key points names as 2nd 3rd organization of data parameter assumptions pseudocode, deriving from resources on routine parameter assumptions routines SDFs self-documenting code size of projects, effects of source code as standards, IEEE style differences, managing UDFs visual, of designs why vs. how dog tag fields dog-and-pony shows DoNothing() macros DRY (Don't Repeat Yourself) principle duplication avoiding with routines code as refactoring indicator |
< Free Open Study > |