Software Engineering 3156AdministriviaReview: ConcurrencyRPISBasic Reuse: LibrariesImpediments to ReuseSuccessful Reuse: ObjectsReuse: FrameworksReuse: Design PatternsPortability PitfallsLanguage PortabilityInteroperabilityCORBACOMScalabilityRational Development SuiteReview: XMLImportant PointWhere Is It?Software Engineering 31561-Oct-01#7: RPIS and ProjectPhil Gross2AdministriviaGroups and questionnaires are locked–Talk to Janak or me directly for changes3Review: ConcurrencyThreads (lightweight processes)Ability to run concurrent sets of code in one processJava: Class should implement Runnable–Then create new Thread on this class and start() itRace conditions (fix with locks)Deadlock (fix with timeout [or cycle detection])4RPISReusabilityPortabilityInteroperability(Scalability)Things to keep in mind early–So you’re not trying to force it in later5Basic Reuse: LibrariesLibraryAPISystem Call6Impediments to ReuseLack of trust / NIHLogistics of reuseMismatch of features (Kangaroos)Not to mention Ariane 5 (8.3.6)7Successful Reuse: ObjectsWell, that was the intention in any caseTypical language-level objects need some helpDiscovered somewhat by accident: VBXLead to JavaBeans and the COM familyWindows uses this pretty successfully8Reuse: FrameworksHigh-levelFramework gives you a generic body into which you add your particular codeExample: MFCProblems: bloat, steep learning curve9Reuse: Design PatternsChristopher Alexander in 1977Gang of Four in 1995Ways of organizing objects in order to solve frequently reoccurring problemsDesign it to be flexible, extensible, scalable, portable, etc. from the beginningGive a vocabularyAntipatterns: known bad ways of doing things10Portability PitfallsHardwareOSNumericsCompilersLibrariesBut, you have to do it: software lasts longer than hardware11Language PortabilityJava and C#Java uses a JVM–Write once, run anywhere, sorta, kindaC#: mobile data, not code–XML everywhereWinner as yet unknown, but betting against Microsoft is historically a losing proposition12InteroperabilityCOM and CorbaBoth define abstract servicesAllow programs in any language to access services in any language in any locationObject-ish13CORBAInternational standardTransport independentObject orientedGood for distributed applicationsQuite complex14COMMicrosoft proprietaryMicrosoft proprietary transportObject based (weaker than oriented)Impossibly complexWorks really, really well with Windows (surprise!)Vast quantities of off-the-shelf components15ScalabilityJust keep it in mind–Familiarity with patterns can helpDon’t worry about scaling beyond abilities of machine–Just avoid unnecessary barriers–Plus maybe graceful overload handlingFrom single connection, to forking processes, to threads, to thread pool16Rational Development SuiteName makes jokes too easyInterface is flakySoftware is incredibly bloatedPoor advertisement for software engineeringAnd yet…17Review: XMLXML Schema is like a classAn individual message is like an instance of that classSchema is itself defined with XML syntaxMade up of elements, aggregated with sequences or choices18Important PointForgot to mention this last timeXML Schema Primer 0Read itNo, really, read itRead and understand, and you have a sweet item for your resumePlus a chance of understanding the requirements…19Where Is It?http://www.w3.org/TR/xmlschema-0/ More than the textbook, this is required readingLike, right nowAn example to kick things
View Full Document