This preview shows page 1-2-3-4-5-6-7-8-9-10-11-75-76-77-78-79-80-81-82-83-84-150-151-152-153-154-155-156-157-158-159-160 out of 160 pages.
Software Engineering and Object-Oriented Design and DevelopmentOverview of PresentationWhat is Software?What is Software Engineering?Why Software Engineering?Software Engineering A Historical PerspectiveInfluences on Software EngineeringProgrammer vs. Software EngineerHow is Software Engineered? Waterfall Process ModelSoftware Lifecycle of Waterfall ModelSlide 11Relating Software Engineering and Computer Science DisciplinesSlide 13Slide 14Slide 15Relating Software Engineering to Other DisciplinesInformation SourcesMotivation and Background ConceptsInformation Engineering Challenge for 21st CenturyHow is Information Engineered?Future Design EmphasisAbstract Data Types (ADTs)Slide 23ADT Design GuidelinesObject-Oriented ParadigmCore Object-Oriented ConceptsAn Example Employee ClassModules vs. ADTs/ClassesAdvanced Object-Oriented ConceptsA Quick Look at InheritanceWhat Can Be a Class?Slide 32Client/Server Concepts and ClassesBenefits of OO ParadigmSoftware Engineering QualitiesWhat is a Software Quality?The Correctness Software QualityThe Reliability Software QualityThe Robustness Software QualityThe Performance Software QualityThe Maintenance Software QualityThe Reusability Software QualityThe Repairability Software QualityThe Evolvability Software QualityThe Portability Software QualityThe Interoperability Software QualitySoftware Engineering PrinciplesWhat are Software Principles?Separation of ConcernsModularityAbstractionAnticipation of ChangeGeneralityIncrementalityPrinciples and OO ParadigmObject-Oriented ConceptsAbstraction and ComplexityHistory of Abstraction Procedures and ModulesSlide 59Slide 60Slide 61Slide 62Slide 63Slide 64Slide 65Concepts of Transitional DesignTransitional Design - PracticeThoughts From Fred BrooksLaw of Demeter (Leiberherr, Northeastern University)Responsibility-Driven Design (Wirfs-Brock & Wilkerson, OOPSLA89)Objects vs. ADTsChoosing Objects and ClassesChoosing Objects for BlackJackObject-Oriented Design IssuesHigh-Tech Supermarket System (HTSS)The HTSS Software ArchitectureProgramming with ModulesModules in HTSSAdvantages/Drawbacks of ModulesProgramming with ADTsADTs in HTSSSlide 82Advantages/Drawbacks of ADTsSlide 84CRC Cards Class, Responsibility, CollaboratorsA CRC Card for HTSSAnother CRC Card for HTSSFlight Management ExampleCRC Cards for Flight Example One SolutionSlide 90CRC Cards for Flight Example Critiquing First SolutionAnother Solution Combine Reserve, Cancel, and IssueYet Another Solution Combine Schedule and FlightCRC Cards for Health CareCategories of Classes (See Budd, Section 3.2, pg. 48)Slide 96Categories of ClassesSlide 98Slide 99Responsibility-Driven Design Methodological IssuesEarly Stage of CRC DesignSlide 102Later Stage of CRC DesignCommon Design FlawsSlide 105Slide 106Slide 107Motivating Inheritance ConceptsMotivating InheritanceSlide 110Slide 111Defining InheritanceSlide 113The Role of InheritanceSpecialization and Generalization InheritanceExamples from HTSS Specialization and GeneralizationSpecification Inheritance & ExampleConstruction Inheritance & ExampleVariance Inheritance & ExampleCombination Inheritance & ExampleExtension Inheritance & ExampleLimitation Inheritance & ExampleBenefits of InheritanceSlide 124The Cost of InheritanceSlide 126OverloadingOverloading in a Stack ExampleOverloading in HTSImportant Implementation ConceptsSlide 131Slide 132Remaining Object-Oriented ConceptsDefining PolymorphismDefinition of Polymorphism/DispatchingIllustrating Polymorphism/DispatchingSlide 137Slide 138Slide 139Achieving Polymorphism/DispatchingSlide 141Slide 142Execution/Runtime Sequence of Polymorphism/DispatchingBenefits of Polymorphism/DispatchingGenericsA Generic Stack ClassA Generic Set ClassBenefits of GenericsFundamentals of OO Databases Article by Zdonik and MaierEssential and Frequent FeaturesThe Threshold ModelFour Critical OO ConceptsThe Reference ModelFinal Comment on Typing IssuesSlide 155SubstitutabilityMutabilityOther FeaturesHow Does Contradiction Occur?Concluding RemarksSW&OO-1.1CSE300Software Engineering andSoftware Engineering andObject-Oriented Design and DevelopmentObject-Oriented Design and DevelopmentProf. Steven A. Demurjian, Sr.Computer Science & Engineering DepartmentThe University of Connecticut371 Fairfield Road, Box U-255Storrs, CT [email protected]://www.engr.uconn.edu/~steve(860) 486 - 4818Copyright © 2000 by S. Demurjian, Storrs, CT.SW&OO-1.2CSE300Overview of PresentationOverview of PresentationMotivation and Background ConceptsMotivation and Background ConceptsSoftware Engineering Qualities and PrinciplesSoftware Engineering Qualities and PrinciplesExtensibility, Correctness, Reliability, etc.Abstraction, Modularity, Incrementality, etc.Revisiting Core Object-Oriented ConceptsRevisiting Core Object-Oriented ConceptsEncapsulation, Hiding, Inheritance, etc.Advanced Object-Oriented ConceptsAdvanced Object-Oriented ConceptsPolymorphism, Dispatching, Generics, etc.OO Design, Programming, and DatabasesOO Design, Programming, and DatabasesAssessing Available TechnologiesPredicting the FutureSummary and DiscussionSummary and DiscussionSW&OO-1.3CSE300What is Software?What is Software?Software is the Definition and Organization of a Software is the Definition and Organization of a Set of Tasks and Functionality Encapsulated into a Set of Tasks and Functionality Encapsulated into a Form that is Executable on a Computer Form that is Executable on a Computer What are Different Types of Software?What are Different Types of Software?Commercial-Off-the-Shelf (COTS)Legacy: Written in an “Old” Programming LanguageCobol, PL/1 (Y2k/SNET), Fortran, etc.C and C++!Customized New SoftwareClient vs. Server SoftwareDatabase Management Systems/ApplicationsSW&OO-1.4CSE300What is Software Engineering?What is Software Engineering?Engineering: The Application of Science to the Engineering: The Application of Science to the Solution of Practical ProblemsSolution of Practical ProblemsSoftware Engineering: The Application of CS to Software Engineering: The Application of CS to Building Practical Software Systems Building Practical Software Systems ProgrammingProgrammingIndividual Writes Complete ProgramOne Person, One ComputerWell-Defined ProblemProgramming-in-the-SmallSoftware EngineeringSoftware EngineeringIndividuals Write Program ComponentsTeam Assembles Complete
View Full Document