01 Ch1 Introduction

Embed Size (px)

Citation preview

  • 8/11/2019 01 Ch1 Introduction

    1/39

    Software

    Engineering

    Introduction

  • 8/11/2019 01 Ch1 Introduction

    2/39

    SE. IntroductionAug-2014

    What is software?

    Computer programand associateddocumentation.

    2

  • 8/11/2019 01 Ch1 Introduction

    3/39

    Aug-2014 SE. Introduction

    Software products may be

    developed for a particularcustomer or may be developed fora general market.

    3

  • 8/11/2019 01 Ch1 Introduction

    4/39

    SE. IntroductionAug-2014

    Attributes of good

    software?Good software should deliver therequired functionalityandperformanceto the user andshould be maintainable,dependableand usable.

    4

  • 8/11/2019 01 Ch1 Introduction

    5/39

    Aug-2014 SE. Introduction

    Essential attributes of

    good software

    5

  • 8/11/2019 01 Ch1 Introduction

    6/39

    SE. IntroductionAug-2014

    What is software

    engineering?Software engineering is an engineeringdisciplinethat is concerned with all

    aspects of software production

    Not just technical process ofdevelopment. Also project

    management and the development oftools, methodsetc. to supportsoftware production.

    6

  • 8/11/2019 01 Ch1 Introduction

    7/39SE. IntroductionAug-2014

    Fundamental software

    engineering activitiessoftware specification

    customers and engineers define the software that is to be produced and theconstraints on its operation

    software development

    software is designed and programmed

    software validation

    software is checked to ensure that it is what the customer requires

    software evolution

    software is modified to reflect changing customer and market requirements.

    7

  • 8/11/2019 01 Ch1 Introduction

    8/39SE. IntroductionAug-2014

    Fundamental software

    engineering activitiesAlternative:definingthe software developmentprocessto be used

    managingthe development project

    describingthe intended software product

    designingthe product

    implementingthe product

    testing(the parts, integrating and whole) of the product

    maintainingthe product

    8

  • 8/11/2019 01 Ch1 Introduction

    9/39

    SE. IntroductionAug-2014

    Key challenges facing

    software engineering?

    increasing diversity, demands forreduced delivery timesanddeveloping trustworthy software.

    9

  • 8/11/2019 01 Ch1 Introduction

    10/39

  • 8/11/2019 01 Ch1 Introduction

    11/39

    Aug-2014 SE. Introduction

    Other FAQs

    11

  • 8/11/2019 01 Ch1 Introduction

    12/39

    SE. IntroductionAug-2014

    Software engineering

    fundamentalsSome fundamental principles apply to all types of softwaresystem, irrespective of the development techniques used:

    Systems should be developed using a managed and understood

    development process. Of course, different processes are used fordifferent types of software.

    Dependabilityand performanceare important for all types ofsystem.

    Understanding and managing the software specificationandrequirements(what the software should do) are important.

    Where appropriate, you should reuse software that has alreadybeen developed rather than write new software.

    12

  • 8/11/2019 01 Ch1 Introduction

    13/39

    SE. IntroductionAug-2014

    Application typesStand-alone applications

    Interactive transaction-based applications

    Embedded control systems

    Batch processing systems

    Entertainment systems

    Systems for modeling and simulation

    Data collection systems

    Systems of systems

    13

  • 8/11/2019 01 Ch1 Introduction

    14/39

    SE. IntroductionAug-2014

    UML

    Why?

    Communication effectively

    Graphic annotation

    14

  • 8/11/2019 01 Ch1 Introduction

    15/39

    SE. IntroductionAug-2014

    UML

    15

  • 8/11/2019 01 Ch1 Introduction

    16/39

    SE. IntroductionAug-2014

    UML

    16

  • 8/11/2019 01 Ch1 Introduction

    17/39

    SE. IntroductionAug-2014

    Software project

    managementActivities involved in ensuring

    software is delivered on timeand onschedule and in accordance with therequirements(technical / non-

    technical / budget) of the organisationsdevelopingand procuring the software.

    17

  • 8/11/2019 01 Ch1 Introduction

    18/39

    SE. IntroductionAug-2014

    Proj. man. - success

    criteriaDeliver the software to the customer at theagreed time.

    Keep overall costs within budget.

    Deliver software that meets the customersexpectations.

    Maintain a happy and well-functioningdevelopment team.

    18

  • 8/11/2019 01 Ch1 Introduction

    19/39

    SE. IntroductionAug-2014

    Risk

    A risk is a probability that someadverse circumstance will occur

    19

  • 8/11/2019 01 Ch1 Introduction

    20/39

    SE. IntroductionAug-2014

    Risk

    20

  • 8/11/2019 01 Ch1 Introduction

    21/39

    SE. IntroductionAug-2014

    Risk

    21

    Consider each risk and develop a strategy to manage it

    Avoidance strategies

    The probability that the risk will arise is reduced;

    Minimisation strategies

    The impact of the risk on the project or product will bereduced;

    Contingency plans

    If the risk arises, contingency plans are plans to deal withthat risk;

  • 8/11/2019 01 Ch1 Introduction

    22/39

    SE. IntroductionAug-2014

    Teamwork

    22

    Any work that needs teamwork?

    Any work that needs individualwork?

    Software development?

  • 8/11/2019 01 Ch1 Introduction

    23/39

    SE. IntroductionAug-2014

    Teamwork

    23

    Most software engineering is a group activity

    The development schedule for most non-trivial software projects issuch that they cannot be completed by one person working alone.

    A good group is cohesive and has a team spirit. The peopleinvolved are motivated by the success of the group as well asby their own personal goals.

    Group interaction is a key determinant of group performance.

    Flexibility in group composition is limited

    Managers must do the best they can with available people.

  • 8/11/2019 01 Ch1 Introduction

    24/39

    SE. IntroductionAug-2014

    Cost

    24

    Cost vs. price

  • 8/11/2019 01 Ch1 Introduction

    25/39

    SE. IntroductionAug-2014

    `

    25

    Experience-based techniques

    The estimate of future effort requirements is based on themanagers experience of past projects and the applicationdomain. Essentially, the manager makes an informed

    judgment of what the effort requirements are likely to be.

    Algorithmic cost modeling

    In this approach, a formulaic approach is used tocompute the project effort based on estimates of productattributes, such as size, and process characteristics, suchas experience of staff involved.

  • 8/11/2019 01 Ch1 Introduction

    26/39

    Aug-2014 SE. Introduction

    Method 1

    A simply queue simulation 120-400 LoC

    The (first release) Encounter game

    4-15 queues + 30-90 additional components of comparable size

    => (30+4) x 120 to (90+15) x 400 = 5-42 KLoC

    Use graphics costs 1.5 to 4 times more

    => 7.5 170 KLoC

    Method 2

    A good video game required 5-20 expert programmers for 1-2 years

    We invert 1/10

    Assume 5-25 LoC/h (fully tested code)

    => 1/10 x (5-25 lines/h) x (5-20 programmers) x (1-2 years) x (48-50 weeks/year) x (35-60 hours/week) = 4.2-300 KLoC

    26

  • 8/11/2019 01 Ch1 Introduction

    27/39

    Aug-2014 SE. Introduction

    COCOMO formula - basic

    Ex:

    27

    Effort in Person-months = a!

    KLOCb

    Duration = c

    !Effort d = c! ad!KLOC bd

    Software Project a b c d

    Organic (stand-alone app.) 2.4 1.05 2.5 0.38

    Semidetached 3.0 1.12 2.5 0.35

    Embedded (integral HW-SW sys.) 3.6 1.20 2.5 0.32

  • 8/11/2019 01 Ch1 Introduction

    28/39

    SE. IntroductionAug-2014

    Software engineering

    ethics

    Ethics?

    28

  • 8/11/2019 01 Ch1 Introduction

    29/39

    Aug-2014 SE. Introduction

    Software engineering involves widerresponsibilitiesthan simply the applicationof technical skills.

    Software engineers must behavein anhonestand ethically responsible wayifthey are to be respected as professionals.

    Ethical behaviour is more than simplyupholding the lawbut involves following aset of principlesthat are morally correct.

    29

  • 8/11/2019 01 Ch1 Introduction

    30/39

    SE. IntroductionAug-2014

    ACM/IEEE Code of

    EthicsThe professional societiesin the US have cooperatedto produce acode of ethical practice.

    Membersof these organisations sign up to the codeof practice when they join.

    The Codecontains some Principlesrelated to thebehaviourof and decisionsmade by professionalsoftware engineers, including practitioners,educators, managers, supervisors and policy makers,as well as trainees and students of the profession.

    30

  • 8/11/2019 01 Ch1 Introduction

    31/39

    SE. IntroductionAug-2014

    IEEE code of ethics1. to accept responsibilityin making decisions consistent

    with the safety, healthand welfareof the public, and todisclosepromptly factors that might endangerthe publicor the environment;

    2. to avoid real or perceived conflicts of interest wheneverpossible, and to disclose them to affected parties whenthey do exist;

    3. to be honestand realisticin stating claims or estimatesbased on available data;

    4. to reject briberyin all its forms;

    31

  • 8/11/2019 01 Ch1 Introduction

    32/39

    SE. IntroductionAug-2014

    IEEE code of ethics5. to improvethe understanding of technology, its

    appropriate application, and potentialconsequences;

    6. to maintainand improveour technical competenceand to undertake technological tasks for others onlyif qualified by training or experience, or after fulldisclosure of pertinent limitations;

    7. to seek, accept, and offerhonest criticismoftechnical work, to acknowledge and correct errors,and to credit properly the contributions of others;

    32

  • 8/11/2019 01 Ch1 Introduction

    33/39

    SE. IntroductionAug-2014

    IEEE code of ethics8. to treatfairlyall persons regardlessof such

    factors as race, religion, gender, disability, age,or national origin;

    9. to avoid injuring others, their property,reputation, or employmentby false ormalicious action;

    10.to assist colleaguesand co-workers in theirprofessional development and to supportthemin following this code of ethics.

    33

  • 8/11/2019 01 Ch1 Introduction

    34/39

    SE. IntroductionAug-2014

    ACM Code of Ethics and

    Professional Conduct1.1 Contribute to society and human well-being.1.2 Avoid harm to others.

    1.3 Be honest and trustworthy.

    1.4 Be fair and take action not to discriminate.

    1.5 Honor property rights including copyrights and patent.

    1.6 Give proper credit for intellectual property.

    1.7 Respect the privacy of others.

    1.8 Honor confidentiality.34

    ACM SE C d f E hi d

  • 8/11/2019 01 Ch1 Introduction

    35/39

    SE. IntroductionAug-2014

    ACM SE Code of Ethics andProfessional Practice

    (short version)PUBLIC - Software engineers shall act consistently with the public interest.CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests oftheir client and employer consistent with the public interest.

    PRODUCT - Software engineers shall ensure that their products and related modifications meet

    the highest professional standards possible.

    JUDGMENT - Software engineers shall maintain integrity and independence in their professionaljudgment.

    MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote anethical approach to the management of software development and maintenance.

    PROFESSION - Software engineers shall advance the integrity and reputation of the professionconsistent with the public interest.

    COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.

    SELF - Software engineers shall participate in lifelong learning regarding the practice of theirprofession and shall promote an ethical approach to the practice of the profession.

    35

  • 8/11/2019 01 Ch1 Introduction

    36/39

    SE. IntroductionAug-2014

    Summary

    Software engineering is an engineering discipline that isconcerned with all aspects of software production.

    Essential software product attributes are maintainability,dependability and security, efficiency and acceptability.

    The high-level activities of specification, development,validation and evolution are part of all software processes.

    The fundamental notions of software engineering areuniversally applicable to all types of system development.

    36

  • 8/11/2019 01 Ch1 Introduction

    37/39

    SE. IntroductionAug-2014

    SummaryThere are many different types of system andeach requires appropriate softwareengineering tools and techniques for theirdevelopment.

    The fundamental ideas of softwareengineering are applicable to all types of

    software system.

    UML - language (communication effectively?)

    37

  • 8/11/2019 01 Ch1 Introduction

    38/39

    SE. IntroductionAug-2014

    SummaryProject management is to ensure thesoftware to be developed as it is

    required on schedule and withinbudget

    Risk

    Planning

    Cost estimation

    38

  • 8/11/2019 01 Ch1 Introduction

    39/39

    SummarySoftware engineers haveresponsibilities to the engineering

    profession and society. They should notsimply be concerned with technicalissues.

    Professional societies publish codes ofconduct which set out the standards ofbehaviour expected of their members.