25 Pages

DesignRules

Course: CSE 784, Fall 2008
School: Syracuse
Rating:
 
 
 
 
 

Word Count: 2210

Document Preview

Guidelines Jim Design Fawcett CSE687 Object Oriented Design Excerpts from and addendums to: "Enough Rope to Shoot Yourself in the Foot", Allen Holub, McGrawHill, 1995 Prime Directive No surprises Maximize Cohesion Minimize Coupling A component, e.g., a module or class should act the way it looks like it should act. The interface should describe what it does in a way that any...

Register Now

Unformatted Document Excerpt

Coursehero >> New York >> Syracuse >> CSE 784

Course Hero has millions of student submitted documents similar to the one
below including study guides, practice problems, reference materials, practice exams, textbook help and tutor support.

Course Hero has millions of student submitted documents similar to the one below including study guides, practice problems, reference materials, practice exams, textbook help and tutor support.
Guidelines Jim Design Fawcett CSE687 Object Oriented Design Excerpts from and addendums to: "Enough Rope to Shoot Yourself in the Foot", Allen Holub, McGrawHill, 1995 Prime Directive No surprises Maximize Cohesion Minimize Coupling A component, e.g., a module or class should act the way it looks like it should act. The interface should describe what it does in a way that any competent developer can understand. Things that are grouped together should be related in function and be focused on a single objective. When a component changes, everything it's coupled to may need to change. Try to couple only to interface, not implementation. Try to minimize "assumption" coupling and "need to know" coupling as well as data coupling. Kiss Principle Keep It Small and Simple Don't solve problems that don't yet exist. Solve the specific problem, not the general case Keep the door open for extension through composition and inheritance Use polymorphism to encapsulate "need to know" in specific derived classes, allowing clients to be blissfully ignorant, knowing only the base class protocol. Design function code that it: Keep a module small enough that its structure chart fits on a single page fits on a single page has cyclomatic complexity well below 10 but don't make it needlessly inflexible either Separate Interface from Implementation Use encapsulation to force clients to program to your interface, not your implementation. Hide any complex design details inside your implementation Make your interface simple and as small as is practical. Don't return nonconstant pointers in public interfaces: For classes, use private or protected keywords: makes clients need to know your implementation Use static keyword to hide global functions that are not intended for client use. qualify all data as private or protected qualify as private or protected any methods that are complex or dangerous for client use Decompose into Smaller Tasks Break a complex operation into smaller simpler pieces. Design is a decomposition process in the application domain. Implementation is a recomposition process in the solution domain. if you can't say it well in English (Hindi, Mandarin, ...) you can't say it well it in C++ The act of writing out a description of what a program does, and what each component does, is a critical step in the thinking process. If you can't write it clearly then you probably haven't fully thought out either the problem or its solution. When you're done, you have a specification the only reasonable basis for testing. Small is Beautiful Large tasks are often best accomplished by a collection of small modular programs that use a common representation: executing task can be very flexible use the right tool for this specific job use parts of the collection in ways the designer never thought of new tools are easily added as the tasks and goals evolve UNIX tool set control system computer aided design and analysis new uses often are created if the tools are flexible and easy to use User Interface Should be Transparent Don't let easy to learn translate into awkward to use. Interfaces shouldn't look like computers, they should look like solutions to a task. The fastest editor I ever used was the DEC RT11 TECO editor. Measure productivity in the number of keystrokes it takes to complete a task. It was a line editor, not based on a GUI It was brutally hard to learn because it used control keys for all commands Once you learned it, NOTHING interrupted your typing. You didn't have to stop and grab a mouse every third sentence. After a few months of use it became invisible. There was nothing conscious between you and the words flowing out on the screen. Read Code Read a lot of code. Write a lot of code. You learn by seeing how others write code. Look at as many samples of good code as you can. Look critically at your own code. Read several of the better trade journals, e.g., C++ report, C/C++ User's Journal, IEEE Computer Magazine, IEEE Software Magazine. When you're starting a big job, write small prototypes to try out your ideas and be prepared to throw them away or rebuild them before launching the final construction. Use an editor's red pencil on your code. Strike out unnecessary code, simplify, reword, repartition, until you're reasonably satisfied. Be prepared to throw the first one away. Write for Maintenance The maintenance programmer is you! Any software that is useful is written once, but read many times. a lot less effort is expended over the lifetime of the program if the designer takes the time to document, design, and implement carefully as you build a module, the first functions built are reread many times as you build later functions that depend on them. careful unit test of a module will probably take more time than its initial construction. You will spend far more time reading your code than writing it. Others will read your code to understand when, where, and how to use it. Performance is very Important, But... Less important than correctness: Less important than robustness: no point in generating errors very quickly no one will trust your code if it crashes often as soon as a program is put into service, if it's useful, users want more functionality. adding new features to unmaintainable code takes us back to the first two points we won't be in business very long if we're not as productive as our competitors. in a labor intensive business like software development, that means reuse Less important than maintainability: Less important than reusability: Formatting and Documentation Software should be selfdescribing: Uncommented code has no value: Unlike most other engineering disciplines, software has the ability, if well written, to capture, store, and disclose on demand, the technology used for its construction. if you use specialized algorithms or technology place citations to references you used so others can understand how your code works. uncommented code is unmaintainable manual and maintenance information should accompany every module every function should have a (brief) prologue perhaps only a single line and comments to describe any subtle code. Documentation Style Let code describe that which code describes best. Reduce clutter: make comments as brief as possible don't put descriptive comments in class declarations, save them for member function definitions don't put inline functions inside class declarations. put them in the header file just after their class declaration and use the inline keyword Diagrams Use diagrams in requirements and design documents: data flow diagrams to describe the basic abstractions and the information flows necessary to sustain them class diagrams to describe the static logical structure of your design event trace and activity diagrams to describe dynamic behavior structure charts to show calling relationships always provide one per module there if is significant function layering data structure diagrams show the organization of your data Words are much less effective without diagrams, but ... A diagram may be worth a thousand words, but only if it is accompanied by a paragraph or two of discussion. Comments Don't comment the obvious. Do put comments where they are needed: Once per module: Briefly state purpose, operation, and public interface. Briefly list maintenance history Briefly state build process including file dependencies provide prologue: state name of file, brief phrase describing contents, state language, platform, application, and author state action discuss inputs and outputs only if type and format are not obvious put brief comments in code only if semantics are not obvious Once per file: Once per function: White Space is Important Show scope level with indentation. Set editor to replace tabs with spaces you want tabs to be three or four spaces every printer on earth will make them eight spaces unless it is programmed to do otherwise Use page breaks between functions that would otherwise be split across pages: if your editor does not support page breaks, e.g., VC++, you can create one from the command line by copying a ^L from the key board to a file: copy con >ff //^L ^Z Then load the ff file into the editor, copy its contents, and paste it, inside a comment, wherever you need it. Replace Tabs with Spaces Names are Important Well chosen names make code nearly self documenting. names should be common words, describing what the file, class, function, argument, or variable does. use one character names only for indices declared, defined, and used locally use names just long enough to be descriptive. use a consistent style of separation, e.g.: severalWordName vs. several_word_name use typedefs, but use them sparingly typedefs are quite useful, especially with templatebased identifiers. if typedefs are exported as part of the public interface, then describe them in the user documentation included in the module. avoid redefining standard types Data Types are Important Don't use global data except for constants that should be universally known throughout a module. Don't return nonconstant pointers as part of a public interface they give access to memory, not objects clients have to understand your design to use them properly global names shared between components destroy their reusability nonconstant global data makes code maintenance very difficult It is acceptable to return a reference to a welldesigned object: the reference provides access to object only through its interface if you do, the object type referred to should be described in the documentation of your user interface both cause problems in recursive and multithreaded code Minimize use of static data and try not to use global data at all. Minimize Dependencies Don't make unnecessary dependencies only include header files that are needed in the file where included program to abstract interfaces wherever that makes sense never declare using namespace statements in header files that minimizes compiletime dependencies and needtoknow try very hard not to require preconditions for clients to use your code that declares the using statement in any client's code that includes your header file when you have to, make sure the conditions are documented as part of your user interface silent assumptions by one component about the behavior of another component cause a lot of grief during integration and maintenance of your code Handling Errors Test routines should not be interactive. Every module should have a test stub. An error message should help the user fix the error. Don't display error messages if your code can recover from the error It is often very useful to provide error trace functions that are easily adapted to different environments: use synchronization of output stream in multithreaded code use message boxes in GUI applications use streams which can be standard I/O or logging files a noninteractive test routine can be exhaustive users providing inputs will not be nearly as complete Always flush the output stream if more than one thre...

Find millions of documents on Course Hero - Study Guides, Lecture Notes, Reference Materials, Practice Exams and more. Course Hero has millions of course specific materials providing students with the best way to expand their education.

Below is a small sample set of documents:

Syracuse - CSE - 784
Managing the Project LifecycleJim Fawcett CSE784 Software Studio Fall 2001 Reference Software Project Survival Guide Steve McConnell Microsoft Press, 1998 Customer's Bill of Rights To set objectives for the project and have them
Middle Tennessee State University - DOCS - 4980
Sheet1<?xml version="1.0" encoding="UTF-8"?> <Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message><Key>385a8fa9d8f43ba05e23dPage 1
Syracuse - CSE - 784
Handouts/CSE681/Code/ADAMWrapperPrototypeProject #4 Component ConfigurationsPurpose:Demonstrate how prototype Executive, Wrapper, ToolUI, and ToolLib work together to handle messages. This handout also illustrates the value of using UML diagram
Syracuse - CSE - 784
Handouts/CSE784/Code/ADAMWrapperPrototypeADAMWrapperandMessageMakerVersion2.1Purpose:Illustratehowtohandlemessages.Everycomponentthathandlesmessages inheritsfromAWrapper,definedhere,implementstheIMsgPassinterface,also definedhere,andbuilds/par
Syracuse - CSE - 784
Total UI&Rep Scripting Comm+FT MBE Common Registry 19 7 18 2 5 12IssuesWaiting on Reg TP Done TP Run 5 12 0 7 14 0 2 5 1 11 11 2 0 4 012 7 14 2 5 0TP Success 12 5 14 2 2 0Actuals Totals: Target TP Run: %63716 28.57%51 91.07%40 44.
Syracuse - CSE - 784
A-SPECIFICATION TO B-SPECIFICATION TO TEST PROCEDURE ASpecification Req # Derived Req. in B-Spec satisfying 3.2.1.1.1.2.c: It shall allow users to select files based upon single or multiple patterns or manually in local and remote machine. 3.2.1.1.1.
Syracuse - CSE - 784
Macro Name MachineA IP MachineB IP Machine B Machine A XX InstallDir BaseDirMacro Value 128.230.208.233 128.230.208.144C:\CLONER C:\Test
Syracuse - CSE - 784
Activity Description Project Start Program and Architecture Review Draft B-Spec Inter-team Interaction Review of B-Spec by Test Team Members Review of Comm Team B-Spec Review of Registry Team B-Spec Review of UI Team B-Spec Review of Scripting Team B
Syracuse - CSE - 784
Activity Description Project Start Program and Architecture Review Draft B-Spec Inter-team Interaction Review of B-Spec by Test Team Members Review of Comm Team B-Spec Review of Registry Team B-Spec Review of UI Team B-Spec Review of Scripting Team B
Syracuse - CSE - 784
BasicSQLDemosConnecting
Middle Tennessee State University - ASSIGN - 3040
Design an Experiment Example The hypothesis I am evaluating is whether playing violent video or computer games makes children more aggressive and violent. The independent variable in the hypothesis is playing violent video games. The dependent variab
Syracuse - CSE - 784
BasicSQLDemosCommands
Los Angeles Southwest College - MISC - 0604
Draft Not for public distribution (15 April 2006) Figure 1. Regional Data Flow (InSitu Data, Model Output)20. Further products, websites, analysis, conversion tools16. Data / Data Sharing Data Access/Web Services *OGC SWE services (SensorML,
Syracuse - CSE - 784
Action Item #Responsible Action Item Description Ids RG Decision on method of making communication reusable - Delegates, COMM 5 Queues MIKE Delete data flow arrow going from Reporting to Scripting which says 7 Error/status messages. MIKE Some of co
Syracuse - CSE - 784
Action Item #Action Item DescriptionResponsible IdsDecide on whether to encoding to XML string is done by MBE or if 1 the other modules give XML strings 2 Give Dr. Fawcett a CD of previous year's stuff 3 Shall show error and status messages in
Syracuse - CSE - 784
Action Item #Action Item Description 1 Structure Charts on C-Spec - Synchronizing problem 2 Port to be added in KeyObj 3 Rename to KeyObj from keyObj 4 All class names should start with Capital case 5 Add screen shot in C-Specs 6 Last script used a
Syracuse - CSE - 784
<?xml version="1.0" encoding="UTF-8"?> <Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message><Key>8db4dc48158db8f9f140e61dd3bd01c6fdac1917.doc</Key><RequestId>2 348CBA06BFDD3AB</RequestId><HostId>F4Y63aEgBQrOzbh72XzZK0A3YN4
Syracuse - CSE - 784
Test Procedure Appendix # 1 for Project CentralProject Center Installation StepsDOCUMENT NAME Documents Version Author Author Role Creation DatePROJECT CENTER INSTALLATION STEPS 1.0 Avinash Kadaji Test Team Leader 11/27/2004Pre Conditions: 1.
Syracuse - CSE - 784
Test Procedure Appendix # 3 for Project CentralRemote Login to ServerDOCUMENT NAME Documents Version Author Author Role Creation DateREMOTE LOGIN TO SERVER 1.0 Avinash Kadaji Test Team Leader 11/27/2004Pre Conditions: 1. The user needs to hav
Syracuse - CSE - 784
Procedure #Module CommunicationB Spec Requirement #A Spec Requirement Type1.3.2.2 b 1.1.2.2b COM-1 1.1.1.2a 1.1.2.2a 1.2.1.2a 1.3.2.2 a COM-2 1.2.1.2b 1.2.2.2a 1.2.1.2 c COM-3 1.1.1.2b 1.1.1.2c 1.3.1.2a 1.3.1.2b COM-4 Database 3.1.2dDerived
Syracuse - CSE - 784
<?xml version="1.0" encoding="UTF-8"?> <Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message><Key>1e3a47ae05716c851303de4b2ede29f861d44c7e.doc</Key><RequestId>4 F3805E6E8749998</RequestId><HostId>OyrQDzwIFtm5kE3Ym/BYxVqF8Is
Syracuse - CSE - 784
5.2.1.1.2.g (3.1.7.2) The process shall support a match command for local and remote registries The process shall supoprt a match command from local to remote registries 5.2.1.2.2.c (3.1.12.3) Rollback information shall be saved in a .rbk file fo
Syracuse - CSE - 784
Commands for NAnt:=NAnt is a command line utility for .NET build. It reads the build.xml file to build the project, create exe and dll files.Basic usage command and different options for NAnt are as under:==Usage : NAnt [options] <target> <ta
Syracuse - CSE - 784
<html><head> <META content="free email groups, mailing lists, communities, majordomo, e-mail, bounce handling, mlm software, listserv, Yahoo! Groups, newletters, announcement, email lists, list hosting" name=keywords> <META
Syracuse - CSE - 784
NUNITNavaneeth Rajkumar Open Source Tools Team Project Central.Net Something about nUnit.NUnit is a unittesting framework for all .Net languages. It has been written entirely in C#. Important nUnit Links http:/www.nunit
Middle Tennessee State University - ASSIGN - 3040
Dear Aging Studies Alumnus: In an effort to improve the Aging Studies Program at Middle Tennessee State University, a survey of alumni is being conducted to assess their opinions of and attitudes towards the program. As alumnus with either an undergr
Los Angeles Southwest College - MISC - 0708
MBEI Taking Mobile Entertainment Industry By Storm! Mobile Entertainment Inc. (MBEI) $0.64 Read up at freerealtime.com, on these guys! Big news is expected this coming week! Take the time to read up over the weekend and get on MBEI first thing Monday
Syracuse - CSE - 784
Handouts/CSE784/FinalProj2006_RSA/ADAMWrapperPrototypeADAM Wrapper and Message MakerPurpose:Illustrate how to handle messages. Every component that handles messages inherits from AWrapper, defined here, uses IMsgPass interface, also defined he
Syracuse - CSE - 784
Peer-To-Peer Cloning SystemArchitectural Concept Architect: Mike WoodruffTable of ContentsExecutive Summary.4 Use Cases..5Users.5 File Transfer..5 Registry Transfer.6 Script Execution..6 Script Editing.6 Favorite Machines.6Module Partitioning.
Syracuse - CSE - 784
TestHarnessPrototypeTestHarnessPrototype
Syracuse - CSE - 784
PeerToPeer Cloning SystemALevel Specificationversion 1.3Mike Woodruff 10/11/03Requirements:The PeerToPeer Cloning System is a tool designed to help manage the configuration of machines on a network. The requiremen
Syracuse - CSE - 784
Handouts/CSE784/FinalProjFall2007/ AdamWrapperPrototypeSocketbasedmessagepassing communicatorPurpose:Illustratehowtousesocketstosendandreceivemessagesusing theADAMprotocol,e.g.,byderivingfromAWrapper. JimFawcett CSE784SoftwareStudio Fall2007
Syracuse - CSE - 784
Project Center SystemArchitecture Review 10/11/2004IntroductionThe Project Test Center System is a tool designed to help manage the code development tasks of a large project. Project Center has facilities for Integrating a series of too
Syracuse - CSE - 784
Sheet1Sl #Module name (Comm)Req # (3.1.2a)Requirement Abstract (Comment)Type (Derived/A-Spec)Page 1Sheet1Procedure Status Execution Status (DescOnly/Complete) ExecutedPage 2
Syracuse - CSE - 784
Sheet1Sl #Module name (Comm)Req # (3.1.2a)Requirement Abstract (Comment)Type (Derived/A-Spec)Page 1Sheet1Procedure Status Execution Status (DescOnly/Complete) ExecutedPage 2
Syracuse - CSE - 784
B Spec Number Testable (Y/N)Kind of Test (By Demo, Test, Inspection, Analysis) Inspection Inspection Inspection Inspection Test/Ins Inspection DemonstrationCheck is the control module accepts commands, options and path Demonstration3.1.1.2.a. 3.1
Syracuse - CSE - 784
B-Spec 3.1.1.2a 3.1.1.2b 3.1.1.2c 3.1.1.2d 3.1.1.2e 3.1.1.2f 3.1.2.2a 3.1.2.2b 3.1.2.2c 3.1.2.2d 3.1.2.2e 3.1.2.2f 3.1.3.2a 3.1.3.2b 3.1.3.2c 3.1.3.2d 3.1.3.2e 3.1.3.2f 3.1.3.2g 3.1.3.2h 3.1.4.2a 3.1.4.2b 3.1.4.2c 3.1.4.2d 3.1.4.2e 3.1.5.2a 3.1.5.2b
Syracuse - CSE - 784
B Spec NumberTestable (Y/N)Kind of Test (By Demo, Test, Inspection, Analysis)Comment about TestB Spec Number TestableKind of Test omment about Test C
Syracuse - CSE - 784
B Spec NumberTestable (Y/N)Kind of Test (By Demo, Test, Inspection, Analysis) Demonstration Demonstration3.1.2a 3.1.2bY Y3.1.2cYDemonstration3.1.2dYDemonstration3.1.2eYDemonstrationComment about TestWe can simulate the a
Syracuse - CSE - 784
Sheet1Sl # 1 2 2 3 3 4 5 6 7 7 8 8 8 9 9 9 10Module name (Comm) Winforms Client Winforms Client Winforms Client Winforms Client Winforms Client Winforms Client Winforms Client Winforms Client Winforms Client Winforms Client Winforms Client Winfor
Syracuse - CSE - 784
Syracuse - CSE - 784
CSE 784 Software Engineering StudioFall 2003Peer-to-Peer ClonerProject Timeline29 September 6 October 11 October 12 October 13 October 16 October 18 October 20 October 23 October 24 October 27 October 31 October 03 November 10 November 14 Nove
Syracuse - CSE - 784
Activity Description Project Start Program and Architecture Review Draft B-Spec Inter-team Interaction Review of B-Spec by Test Team Members Review of Comm Team B-Spec Review of Registry Team B-Spec Review of UI Team B-Spec Review of Scripting Team B
Syracuse - CSE - 784
Test Procedure Document # SEC - 1 for Security ModuleDemonstrate the use of the security module to add, delete, and modify user logins.DOCUMENT NAMEDocuments Version Author Author Role Creation Date Document Reviewer Document Reviewed Date Stat
Syracuse - CSE - 784
Test Procedure Document # 1 for Security ModuleDemonstrate the use of the security module to validate User Logins into the system.DOCUMENT NAMETEST TO DEMONSTRATE THE USE OF SECURITY MODULE TO VALIDATE USER LOGINS . 1.0 Ramanathan Rajagopalan T
Los Angeles Southwest College - MISC - 0506
IDF No. (assigned by USCRF): Disclosure Date (date recv'd by USCRF): INVENTION DISCLOSURE FORMUNIVERSITY OF SOUTH CAROLINA RESEARCH FOUNDATIONIn addition to their significant academic and scientific value, many of the inventions, creations, and/
Syracuse - CSE - 784
Test Procedure Document COM- 1 for Communication ModuleDemonstrate that an error message will be displayed if the Web Service is not present.DOCUMENT NAME Documents Version Author Author Role Creation Date Document ReviewerTEST TO DEMONSTRATE P
Syracuse - CSE - 784
Test Procedure Document COM-2 for Communication ModuleDemonstrate the use of Web Service to send messagesDOCUMENT NAME Documents Version Author Author Role Creation Date Document Reviewer Document Reviewed Date Status Dr. James Fawcett (Client/ P
Syracuse - CSE - 784
<?xml version="1.0" encoding="UTF-8"?> <Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message><Key>1905f841040bf56bbc2d015f12a6dda50a08c4ea.doc</Key><RequestId>2 CCF460CE7DFEC27</RequestId><HostId>6wkx09+C6QVGxd9SeKYle1OpZ5J
Syracuse - CSE - 784
Test Procedure Document COM- 4 for Communication ModuleDemonstrate that the PC Server and Client Chunks large messages into smaller blocks and assemble them at the receiver end.DOCUMENT NAMETEST TO DEMONSTRATE THAT THE PC SERVER AND CLIENT CHUN
Purdue - VM - 204
SCHOOL OF VETERINARY MEDICINE PURDUE UNIVERSITY CLASS ORGANIZATION INFORMATIONCourse No.: Course Names: Credit hours: This course meets: VM 204 Semester: Spring 2005 Laboratory Animal Health Management 2 credit hours Lecture: Laboratory: Other: 1 3
Purdue - VM - 204
INTRODUCTION TO LABORATORY ANIMAL SCIENCEOBJECTIVES Upon completion of this module the student will be able to: 1. Explain why knowledge of laboratory animal health is important to veterinary technicians that work in small animal practice and resear
Purdue - VM - 204
ANIMAL WELFARE ISSUESOBJECTIVES Upon completion of this module the student will be able to: 1. Identify and describe the four different philosophies concerning man's relationship to animals. 2. Identify the organizations associated with animal welfa
Purdue - VM - 204
REGULATORY COMPLIANCE ISSUESOBJECTIVES Upon completion of this module the student will be able to: 1. Identify Federal laws, rules, and regulations that govern animal care and use in the United States and the entity responsible for enforcing them. 2
Purdue - VM - 204
GENETICS AND BREEDINGOBJECTIVES Upon completion of this module the student will be able to: 1. Describe the different breeding schemes and their appropriate use. 2. Describe the different mating systems and their appropriate use. 3. Identify the fac
Purdue - VM - 204
Purdue - VM - 204
BIOHAZARDS & SAFETYOBJECTIVES Upon completion of this module the student will be able to: 1. Define terms associated with containment of biohazards. 2. Identify government departments and regulations that oversee safety and management of biohazards.
Purdue - VM - 204
EXPERIMENTAL METHODOLOGYOBJECTIVES Upon completion of this module the student will be able to: 1. Identify the various parts of a research plan. 2. Identify the variables which affect animal research projects. 3. Discuss how variables may influence
Purdue - VM - 204
ANIMAL PROCUREMENTOBJECTIVES Upon completion of this module the student will be able to: 1. Describe the different parts of the procurement process. 2. Discuss quarantine and conditioning and the role each plays in the animal procurement process. 3.
Purdue - VM - 204
SANITATION AND PEST CONTROLOBJECTIVES Upon completion of this module the student will be able to: 1. Define terms associated with the processes of sanitation. 2. Explain advantages and disadvantages of the chemicals associated with sanitation. 3. Ex
Purdue - VM - 204
ANESTHESIA FOR LABORATORY ANIMALS AND EXOTICSSusan K. Cutter, BS, RVT, RLATG Anesthesia is a state of unconsciousness induced in an animal. The Three Components of Anesthesia: General Considerations: Some exotics have been used extensively to