INFM 700: Session 13 System Building IssuesToday’s TopicsThe System Life CycleDecisions, DecisionsDifferent ArchitecturesRequirementsThe Waterfall ModelSlide 8The Spiral ModelSlide 10Unpleasant RealitiesA Hybrid ModelSlide 13TestingManagement IssuesThings will go wrong…TCOWhat is open source?Basic DefinitionsProprietary SoftwareOpen Source PrinciplesOpen Source vs. ProprietaryOpen Source is already here…ExamplesServer vs. DesktopOpen Source: ProsPros in DetailSlide 28Slide 29Cons of Open SourceCons in DetailSlide 32Open Source Business ModelsMature? YesSustainable? YesOpen Source in GovernmentIt comes down to cost…The TCO DebateIs open source right for you?How much data?How do you crunch all that?Data Centers: CentralizationChallengesGoogle’s SolutionIt’s just divide and conquer!Why should you care?Utility ComputingUtility Computing IssuesSlide 49INFM 700: Session 13System Building IssuesJimmy LinThe iSchoolUniversity of MarylandMonday, April 28, 2008This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United StatesSee http://creativecommons.org/licenses/by-nc-sa/3.0/us/ for detailsiSchoolToday’s TopicsDevelopment ModelsManaging SystemsOpen source softwareCloud ComputingDevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolThe System Life CycleUnderstanding user needsFormative evaluation: figuring out what to buildGoing out to build it (and other options)Making sure it addresses user needsSummative evaluation: does it work as intended?Keeping it runningDevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolDecisions, Decisions“Buy” or “Build”“Off-the-shelf” or “Custom”“In-house” or “Out-source”“Integrated Solution” or “Best of Breed”“Proprietary” or “Open Source”DevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolDifferent ArchitecturesDesktop applicationsWhat we normally think of as softwareBatch processing (e.g., recall notices)Save it up and do it all at onceTimesharing (e.g., OPAC)Everyone uses the same machineClient-Server (e.g., databases)Some functions done centrally, others locallyPeer-to-Peer (e.g., Kazaa)All data and computation is distributedWeb service (e.g., Gmail)DevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolRequirementsAvailabilityMean Time Between Failures (MTBF)Mean Time To Repair (MTTR)Measured for each component and for entire systemCapacityNumber of users (typical and maximum)Response time (typical and maximum)FlexibilityUpgrade pathInteroperability with other applicationsDevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolThe Waterfall ModelKey idea: upfront investment in designAn hour of design can save a week of debugging!Five stages:Requirements: figure out what needs to be builtDesign: figure out how the software will workImplementation: actually build the softwareVerification: makes sure that it worksMaintenance: makes sure that it keeps workingDevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolThe Waterfall ModelRequirementsDesignImplementationVerificationMaintenanceDevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolThe Spiral ModelKey idea: iteratively build prototypesEach prototype is closer to the final productSteps:Define requirementsDevelop first prototype quicklyRevaluate requirements based on prototypeBuild second prototype based on lessons learnedIterate (until you run are happy or run out of money)DevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolThe Spiral Model1.00.52.03.01.11.22.12.22.3DevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolUnpleasant RealitiesThe waterfall model doesn’t work wellRequirements usually incomplete or incorrectThe spiral model is expensiveRedesign leads to recoding and retestingDevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolA Hybrid ModelGoal: explore requirementsRecognizing that they will change laterStart with part of the functionalityThat will (hopefully) yield insight on the requirementsBuild a prototypeFocus on functionalitySave for later: efficiency, making it “pretty”Use the prototype to refine the requirementsRepeat the process, expanding functionalityDevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolA Hybrid ModelUpdateRequirementsChooseFunctionalityBuildPrototypeInitialRequirementsWriteSpecificationCreateSoftwareWriteTest PlanDevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolTestingComponent testingEnd-to-end testingFormal verificationUser testingDevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolManagement IssuesMaintenance and administrationBeware of recurring costsRetrospective conversionMoving from “legacy systems”Even converting electronic information is expensive!Management informationLog data, audit trails, etc.Sometimes costs more to collect than it is worth!Sometimes easy to collect, difficult to analyzeTrainingStaff, end usersPrivacy, SecurityDevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolThings will go wrong…No software is defect-free. Why?Sheer sizeExample: Windows XP (2002) was ~40M lines of codeAlmost impossible to predict all possible use contextsExample: driver incompatibilitiesConcurrencyExample: lots of applications running at the same timeThe importance of disaster recoveryBackups (periodicity, storage location)Tradeoffs between “safety” and “being close by”DevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolTCOTCO = “Total cost of ownership”Buying/developing software isn’t the only cost!Other (hidden) costs:Planning, installation, integrationDisruption and migrationOngoing support and maintenanceTraining (of staff and end users)DevelopmentModelsManagingSystemsOpen SourceSoftwareCloud ComputingiSchoolWhat is open source?Proprietary vs. open source softwareOpen source used to be a crackpot idea:Bill Gates on Linux (3/24/1999):“I don’t really think in the commercial market, we’ll see it in any significant way.”MS 10-Q quarterly filing
View Full Document