View
232
Download
0
Category
Preview:
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
Recommended