2-Large Scale Software Development

Embed Size (px)

DESCRIPTION

issues in industrial strength software development

Citation preview

  • SOFTWARE ENGINEERING*2. Large Scale Software DevelopmentThe problems associated with large scale software development

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*This CourseSoftware Engineering is the systematic approach to development, operation, maintenance, and retirement of sw.Basic Q. of SW Engg.: How to develop industrial-strength software?

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SoftwareQ : If you have to write a 10,000 line program in C to solve a problem, how long will it take?Answers: generally range from 2-4 monthsLet us analyze the productivityProductivity = output/input resourcesIn SW output is considered as LOCInput resources is effort - person months; overhead cost modeled in rate for person monthThough not perfect, some productivity measure is needed, as project has to keep it high

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Software The productivity is 2.5-5 KLOC/PMQ: What is the productivity in a typical commercial SW organization ?A: Between 100 to 1000 LOC/PMQ: Why is it low, when your productivity is so high? (people like you work in the industry)A: What the student is building and what the industry builds are two different things

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SoftwareIn a univ a student system is built while the commercial org builds industrial strength swWhat is the difference between a student program and industrial strength sw for the same problem? Software (IEEE): collection of programs, procedures, rules, and associated documentation and data

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SoftwareStudentDeveloper is the userbugs are tolerablenot importantNo documentationIndustrial StrengthOthers are the usersbugs not toleratedUI v. imp. IssueDocuments needed for the user as well as for the organization and the project

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SoftwareStudentSW not in critical useReliability, robustness not importantNo investmentDont care about portabilityIndustrial StrengthSupports important functions / businessReliability , robustness are very importantHeavy investmentPortability is a key issue here

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Industrial strength softwareStudent programs for a problem & industrial strength software are two different thingsKey difference is in quality (including usability, reliability, portability, etc.)High quality requires heavy testing, which consumes 30-50% of total development effortRequires development be broken in stages such that bugs can be detected in eachGood UI, backup, fault-tolerance, following of stds etc increase the size for the same functionality

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Industrial strength softwareIf 1/5th productivity, and increase in size by a factor of 2, industrial strength software will take 10 times effortBrooks thumb-rule: Industrial strength sw costs 10 time more than student swProblem Domain of SW Engg: Industrial strength swIn SW Engg. and in this course, software means industrial strength software

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Software is ExpensiveLet us look at costs involved If Productivity = 500 LOC/PM and Cost to the company = $10K/PMCost per LOC = $20I.e, each line of delivered code costs about $20.A simple application for a business may have 20KLOC to 50KLOCCost = $100K to $1MillionCan easily run on $10K-$20K hardwareSo HW costs in an IT solution are small as compared to SW costs.

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Software is ExpensiveThe HW/SW ratio for a computer system has shown a reversal from the early years.In 50s , HW:SW :: 80:20In 80s , HW:SW :: 20:80So , SW is very expensiveImportance of optimizing HW is not muchMore important to optimize SW

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Late & Unreliable20-25% of SW projects never completeBecause after some time they realize that the final cost will be much higherMany companies report runawaysbudget & cost out of controlconsulting companies to help control themOne defence survey found that 70% of the equipment problems are due to SWMany examples of software project failures

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*UnreliableSW failures are different from failures of mechanical or electrical systemsIn software, failures are not due to aging related problemsFailures occur due to bugs or errors that get introduced during developmentI.e. the bug that causes a failure exists from start, only manifests later

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*MaintenanceOnce sw delivered, it enters maintenance phaseWhy is maintenance needed for sw when it does not wear with age?Residual errors requiring corrective maintUpgrades and environment changes adaptive maintOver sw life, maint can cost more than the development cost of sw

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SE ChallengesProblem domain discussed before, now we discuss the area of SESE (IEEE): systematic approach to development,., of softwareSystematic approach: methodologies and practices that can be used to solve a problem from problem domain

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Basic Problem

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SE ChallengesThe problem of producing software to satisfy user needs drives the approaches used in SESoftware is Industrial strength swBut there are other factors that drive the selection of approachesThese factors include considerations of scale, quality, productivity, consistency, change, These factors drive SE for large scale devmt

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*ScaleSE must deal with problem of scale methods for solving small problems do not scale up for large problemsindustrial strength SW problems tend to be largeSE methods must be scalableTwo clear dimensions in thisengineering methodsproject managementFor small, both can be informal or ad-hoc, for large both have to be formalized

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Scale

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*ScaleAn illustration of issue of scale is counting the number of people in a room vs taking a censusBoth are counting problemsMethods used in first not useful for censusFor large scale counting problem, must use different techniques and modelsManagement will become critical

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Scale: Examples

    Gcc(compiler collection for C, C++, Objective-C, Fortran, Java, Ada, and Go)980KLOCC, C++, yaccPerl(Family of programming languages320 KLOCC, perl, shAppache(Http web server application)100 KLOCC, shLinux(Operating System)30,000 KLOCC, c++Windows XP(Operating System)40,000 KLOCC, C++

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*ProductivityAn engg project is driven by cost and scheduleIn sw cost is mainly manpower cost, hence measured in person-monthsSchedule is in months/weeks very important in business contextProductivity capture both of theseIf P is higher, cost is lowerIf P is higher, time taken can be lesserApproaches used by SE must deliver high P

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*QualityQuality is the other major driving factorDeveloping high Q sw is a basic goalQuality of sw is harder to defineApproaches used should produce a high Q software

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Quality Attributes ISO standard

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Quality ISO stdISO std has six attributesFunctionalityReliabilityUsabilityEfficiencyMaintainabilityPortability

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*QualityMultiple dimensions mean that not easy to reduce Q to a single numberConcept of Q is project specificFor some reliability is most importantFor others usability may be more importantReliability is generally considered the main Q criterion

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*QualityReliability = Probability of failure hard to measureapproximated by no. of defects in softwareAlso includes securityTo normalize Quality = Defect densityQuality = No. of defects delivered / SizeDefects delivered - approximated with no. of defects found in operationCurrent practices: less than 1 def/KLOCWhat is a defect? Project specific!

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Consistency and repeatabilitySometimes a group can deliver one good software systemKey SE challenge: how to ensure that success can be repeatedSE wants methods that can consistently produce high Q sw with high PA sw org, wants to deliver high Q&P consistently across projectsFrameworks like ISO and CMM focus on this aspect a lot

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*ChangeOnly constant in business is change!Software must change to support the changing business needsSE practices must accommodate changeMethods that disallow change, even if high Q and P, are of little use

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SE ApproachWe understand the problem domain, the factors that drive SEConsistently develop sw with high Q&P for large scale problems and under changesQ&P are the basic objectives to be achieved under large scale and changesQ&P governed by people, processes, and technology

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*Iron TriangleQ&P governed by people, processes, and technology

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SE ApproachSE focuses mostly on processes for achieving the goalsSystematic approach is really about processes being usedSE separates process for developing sw from the developed product (i.e sw)Premise: Process largely determines Q&P, hence suitable processes will lead to high Q&P

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SE ApproachDesign of proper processes and their control is a key challenge SE facesThis focus on process makes SE different from many CS coursesSw process is the equivalent of manufacturing process

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SE ApproachThe development process used in SE is typically phasedPhases separate concerns with each phase focusing on some aspectRequirements, architecture, design, coding, testing are key phasesThis phased process has to be properly managed to achieve the objectivesMetrics and measurement important for this

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SummaryThe problem domain for SE is industrial strength softwareSoftware comprises programs, documentation, and dataSE aims to provide methods for systematically developing SWMain goal achieve high quality and productivity (Q&P)

    SOFTWARE ENGINEERING

  • SOFTWARE ENGINEERING*SummaryMust have high Q&P with consistency, under large scale and changesBasic approach of SE is to separate process from products and focus on process and managing the process

    SOFTWARE ENGINEERING