Inroduction to Software Engineering

Embed Size (px)

Citation preview

  • 8/14/2019 Inroduction to Software Engineering

    1/39

    SOFTWAREENGINEERING

    11

    Introduction

  • 8/14/2019 Inroduction to Software Engineering

    2/39

    SOFTWAREENGINEERING

    22

    This Course

    SE is unlike other CS topicsOS , DBMS , Compilers etc talk about

    specific types of software productSW Engg. focuses on general softwareSoftware Engineering is the systematic

    approach to development, operation,maintenance, and retirement of sw.Basic Q. of SW Engg.: How to developindustrial-strength software?

  • 8/14/2019 Inroduction to Software Engineering

    3/39

    SOFTWAREENGINEERING

    33

    What this course will give ?

    Main objective: Give an idea of how industrial-strength software gets developed

    At the end you should have the ability to plan,

    execute, and manage small software projectsLectures will discuss how to perform differenttasks in a project

    In the project , the techniques will be applied

  • 8/14/2019 Inroduction to Software Engineering

    4/39

    SOFTWAREENGINEERING

    44

    Project

    A group project with 3-5 peopleWill develop software for some

    customer to solve some real problemsApproximately 10 hours per week perstudent

    Will start from 3rd week and last tillthe semester endExtra lectures in start to kick-start theproject

  • 8/14/2019 Inroduction to Software Engineering

    5/39

    SOFTWAREENGINEERING

    55

    Evaluation and Grading

    Project will have a weight of 50-60%a poor project cannot get a good grade

    One mid sem exam and an end sem exam.Project group grade; marks equally dividedunless the team specifies a diff distribution(based on contribution)

    Review by a group of some other groups workproducts

  • 8/14/2019 Inroduction to Software Engineering

    6/39

    SOFTWAREENGINEERING

    66

    Software

    Q : If you have to write a 10,000 line programin C to solve a problem, how long will it take?

    Answers: generally range from 2-4 months

    Let us analyze the productivityProductivity = output/input resources

    In SW output is considered as LOC

    Input resources is effort - person months; overheadcost modeled in rate for person month

    Though not perfect, some productivity measure isneeded, as project has to keep it high

  • 8/14/2019 Inroduction to Software Engineering

    7/39

    SOFTWAREENGINEERING

    77

    Software

    The productivity is 2.5-5 KLOC/PM

    Q: What is the productivity in a typical

    commercial SW organization ?A: Between 100 to 1000 LOC/PM

    Q: 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 theindustry builds are two different things

  • 8/14/2019 Inroduction to Software Engineering

    8/39

    SOFTWAREENGINEERING

    88

    Software

    In a univ a student system is built while thecommercial org builds industrial strength sw

    What is the difference between a studentprogram and industrial strength sw for thesame problem?

    Software (IEEE): collection of programs,procedures, rules, and associateddocumentation and data

  • 8/14/2019 Inroduction to Software Engineering

    9/39

    SOFTWAREENGINEERING

    99

    Software

    Student

    Developer is the

    userbugs are tolerable

    UI not important

    No documentation

    IndustrialStrength

    Others are the usersbugs not tolerated

    UI v. imp. issue

    Documents needed forthe user as well as forthe organization and theproject

  • 8/14/2019 Inroduction to Software Engineering

    10/39

    SOFTWAREENGINEERING

    1010

    Software

    Student

    SW not in critical use

    Reliability, robustnessnot important

    No investment

    Dont care aboutportability

    Industrial Strength

    Supports importantfunctions / business

    Reliability , robustnessare very important

    Heavy investment

    Portability is a key issuehere

  • 8/14/2019 Inroduction to Software Engineering

    11/39

    SOFTWAREENGINEERING

    1111

    Industrial strength software

    Student programs for a problem & industrialstrength software are two different things

    Key difference is in quality (includingusability, reliability, portability, etc.)High quality requires heavy testing, which consumes30-50% of total development effort

    Requires development be broken in stages such thatbugs can be detected in each

    Good UI, backup, fault-tolerance, following of stds etcincrease the size for the same functionality

  • 8/14/2019 Inroduction to Software Engineering

    12/39

    SOFTWAREENGINEERING

    1212

    Industrial strengthsoftware

    If 1/5th productivity, and increase in size bya factor of 2, industrial strength software willtake 10 times effort

    Brooks thumb-rule: Industrial strength swcosts 10 time more than student sw

    Domain of SW Engg: Industrial strength sw

    In SW Engg. and in this course, softwaremeans industrial strength software

  • 8/14/2019 Inroduction to Software Engineering

    13/39

    SOFTWAREENGINEERING

    1313

    Software is Expensive

    Let us look at costs involvedProductivity = 500 LOC/PM

    Cost to the company = $10K/PM

    Cost per LOC = $20I.e, each line of delivered code costs about $20.

    A simple application for a business may have20KLOC to 50KLOCCost = $100K to $1Million

    Can easily run on $10K-$20K hardware

    So HW costs in an IT solution are small as compared to SWcosts.

  • 8/14/2019 Inroduction to Software Engineering

    14/39

    SOFTWAREENGINEERING

    1414

    Software is Expensive

    The HW/SW ratio for a computer systemhas shown a reversal from the early years.In 50s , HW:SW :: 80:20

    In 80s , HW:SW :: 20:80

    So , SW is very expensive

    Importance of optimizing HW is not muchMore important to optimize SW

  • 8/14/2019 Inroduction to Software Engineering

    15/39

    SOFTWAREENGINEERING

    1515

    Late & Unreliable

    20-25% of SW projects never completeBecause after some time they realize that the finalcost will be much higher

    Many companies report runawaysbudget & cost out of control

    consulting companies to help control them

    One defence survey found that 70% of theequipment problems are due to SW

    Many examples of software failures

  • 8/14/2019 Inroduction to Software Engineering

    16/39

    SOFTWAREENGINEERING

    1616

    Unreliable

    SW failures are different from failures of mechanical or electrical systemsIn software, failures are not due to aging relatedproblemsFailures occur due to bugs or errors that getintroduced during developmentI.e. the bug that causes a failure exists fromstart, only manifests later

  • 8/14/2019 Inroduction to Software Engineering

    17/39

    SOFTWAREENGINEERING

    1717

    Maintenance

    Once sw delivered, it enters maintenancephase

    Why is maintenance needed for sw when itdoes not wear with age?Residual errors requiring corrective maint

    Upgrades and environment changes adaptivemaint

    Over sw life, maint can cost more than thedevelopment cost of sw

  • 8/14/2019 Inroduction to Software Engineering

    18/39

    SOFTWAREENGINEERING 1818

    SE Challenges

    Problem domain discussed before,now we discuss the area of SE

    SE (IEEE): systematic approach todevelopment,., of software

    Systematic approach: methodologiesand practices that can be used tosolve a problem from problem domain

  • 8/14/2019 Inroduction to Software Engineering

    19/39

  • 8/14/2019 Inroduction to Software Engineering

    20/39

    SOFTWAREENGINEERING 2020

    SE Challenges

    The problem of producing software tosatisfy user needs drives the approachesused in SESoftware is Industrial strength sw

    But there are other factors that drive theselection of approaches

    These factors include considerations of scale, quality, productivity, consistency,change,

  • 8/14/2019 Inroduction to Software Engineering

    21/39

    SOFTWAREENGINEERING 2121

    Scale

    SE must deal with problem of scalemethods for solving small problems do not scale up forlarge problems

    industrial strength SW problems tend to be large

    SE methods must be scalable

    Two clear dimensions in this

    engineering methodsproject management

    For small, both can be informal or ad-hoc, for largeboth have to be formalized

  • 8/14/2019 Inroduction to Software Engineering

    22/39

    SOFTWAREENGINEERING 2222

    Scale

    Click to edit Master text stylesSecond level

    Third level

    Fourth level Fifth level

  • 8/14/2019 Inroduction to Software Engineering

    23/39

    SOFTWAREENGINEERING 2323

    Scale

    An illustration of issue of scale is counting thenumber of people in a room vs taking a census

    Both are counting problems

    Methods used in first not useful for census

    For large scale counting problem, must usedifferent techniques and models

    Management will become critical

  • 8/14/2019 Inroduction to Software Engineering

    24/39

  • 8/14/2019 Inroduction to Software Engineering

    25/39

    SOFTWAREENGINEERING 2525

    Productivity

    An engg project driven by cost and scheduleIn sw cost is mainly manpower cost, hence

    measured in person-monthsSchedule is in months/weeks very importantin business contextProductivity capture both of theseIf P is higher, cost is lowerIf P is higher, time taken can be lesser

    Approaches used by SE must deliver high P

  • 8/14/2019 Inroduction to Software Engineering

    26/39

  • 8/14/2019 Inroduction to Software Engineering

    27/39

    SOFTWAREENGINEERING 2727

    Quality ISO standard

    Click to edit Master text stylesSecond level

    Third level Fourth level Fifth level

  • 8/14/2019 Inroduction to Software Engineering

    28/39

    SOFTWAREENGINEERING 2828

    Quality ISO std

    ISO std has six attributes

    Functionality

    Reliability

    Usability

    Efficiency

    Maintainability

    Portability

  • 8/14/2019 Inroduction to Software Engineering

    29/39

    SOFTWAREENGINEERING 2929

    Quality

    Multiple dimensions mean that not easyto reduce Q to a single number

    Concept of Q is project specificFor some reliability is most important

    For others usability may be more

    importantReliability is generally considered themain Q criterion

  • 8/14/2019 Inroduction to Software Engineering

    30/39

  • 8/14/2019 Inroduction to Software Engineering

    31/39

    SOFTWAREENGINEERING 3131

    Consistency andrepeatability

    Sometimes a group can deliver one goodsoftware system

    Key SE challenge: how to ensure thatsuccess can be repeatedSE wants methods that can consistentlyproduce high Q sw with high P

    A sw org, wants to deliver high Q&Pconsistently across projectsFrameworks like ISO and CMM focus on thisaspect a lot

  • 8/14/2019 Inroduction to Software Engineering

    32/39

    SOFTWAREENGINEERING 3232

    Change

    Only constant in business is change!

    Software must change to supportthe changing business needs

    SE practices must accommodatechange

    Methods that disallow change, evenif high Q and P, are of little use

  • 8/14/2019 Inroduction to Software Engineering

    33/39

    SOFTWAREENGINEERING 3333

    SE Approach

    We understand the problem domain, thefactors that drive SE

    Consistently develop sw with high Q&P forlarge scale problems and under changesQ&P are the basic objectives to be achievedunder large scale and changes

    Q&P governed by people, processes, andtechnology

  • 8/14/2019 Inroduction to Software Engineering

    34/39

    SOFTWAREENGINEERING 3434

    Iron Triangle

    Click to edit Master text stylesSecond level

    Third level

    Fourth level Fifth level

  • 8/14/2019 Inroduction to Software Engineering

    35/39

    SOFTWAREENGINEERING 3535

    SE Approach

    SE focuses mostly on processes forachieving the goals

    Systematic approach is really aboutprocesses being usedSE separates process for developing swfrom the developed product (i.e sw)

    Premise: Process largely determines Q&P,hence suitable processes will lead to highQ&P

  • 8/14/2019 Inroduction to Software Engineering

    36/39

    SOFTWAREENGINEERING 3636

    SE Approach

    Design of proper processes and theircontrol is a key challenge SE faces

    This focus on process makes SEdifferent from many CS courses

    Sw process is the equivalent of manufacturing process

  • 8/14/2019 Inroduction to Software Engineering

    37/39

    SOFTWAREENGINEERING 3737

    SE Approach

    The development process used in SE istypically phased

    Phases separate concerns with each phasefocusing on some aspectRequirements, architecture, design, coding, testingare key phases

    This phased process has to be properlymanaged to achieve the objectivesMetrics and measurement important for this

  • 8/14/2019 Inroduction to Software Engineering

    38/39

    SOFTWAREENGINEERING 3838

    Summary

    The problem domain for SE isindustrial strength software

    Software comprises programs,documentation, and dataSE aims to provide methods for

    systematically developing SWMain goal achieve high quality andproductivity (Q&P)

  • 8/14/2019 Inroduction to Software Engineering

    39/39

    Summary

    Must have high Q&P withconsistency, under large scale and

    changesBasic approach of SE is to separateprocess from products and focus on

    process and managing the process