class 1 introduction 1 introduction

Upload: edo

Post on 03-Jun-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/12/2019 Class 1 Introduction 1 Introduction

    1/32

    Software Engineering, 2006 Introduction 1

    Software Engineer ing

    Introduction

    Mira Balaban

    Department of Computer Science

    Ben-Gurion university

    Based on slides of Igor Potapov: http://www.csc.liv.ac.uk/~igor/COMP201

    Ian Sommerville:http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentations/index.html

    Alexander Borgida: http://www.cs.rutgers.edu/~borgida/431/

    http://www.csc.liv.ac.uk/~igor/COMP201http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentations/index.htmlhttp://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentations/index.htmlhttp://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentations/index.htmlhttp://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentations/index.htmlhttp://www.csc.liv.ac.uk/~igor/COMP201http://www.csc.liv.ac.uk/~igor/COMP201
  • 8/12/2019 Class 1 Introduction 1 Introduction

    2/32

    Software Engineering, 2006 Introduction 2

    What is software?

    Computer programsand associated documentation

    Software productsmay be developed for a particularcustomer or may be developed for a general market

    Software productsmay be

    Generic- developed to be sold to a range of differentcustomers

    Bespoke(custom) - developed for a single customeraccording to their specification

  • 8/12/2019 Class 1 Introduction 1 Introduction

    3/32

    Software Engineering, 2006 Introduction 3

    What is Engineering?

    Application of a systematic, disciplined,

    quantifiable approach to

    structures,machines,

    products,

    systems,

    processes.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    4/32

    Software Engineering, 2006 Introduction 4

    What is Software Engineering?

    That form of engineering that applies a systematic disciplined quantifiable approach

    the principles of computer science, design, engineering, management,mathematics, psychology, sociology, and other disciplines as necessary

    and sometimes just plain invention

    to creating, developing, operating and maintaining costeffective,

    reliably correct, high-quality solutions tosoftware problems[Berry 92]

    SE requires the identification of a problem, a computer to carryexecute a software product, and a user environment (composed

    of people, tools, methodologies, etc.)

  • 8/12/2019 Class 1 Introduction 1 Introduction

    5/32

    Software Engineering, 2006 Introduction 5

    The task of software engineers?

    Software engineersshould

    adopt a systematic and organised approach to their work

    use appropriate tools and techniquesdepending on the problem to be solved,

    the development constraints and

    the resources available

  • 8/12/2019 Class 1 Introduction 1 Introduction

    6/32

    Software Engineering, 2006 Introduction 6

    Origin of Software Engineering?

    Software engineering deals with the development ofhigh-quality software systems.

    Software engineering isabstractno physicallimitations:

    leads tounlimited complexity.

    Software engineeringcoined in 1968: withindiscussion of software crisis.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    7/32

    Software Engineering, 2006 Introduction 7

    What is the software crisis?

    Major projects are meaningfully late.

    Software costs more than predicted.

    Software is unreliable.

    Software is difficult to maintain. Poor performance.

    While hardware costs were decreasing, softwarecosts were rising.

    requires techniques to control thecomplexity of large software systems.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    8/32

    Software Engineering, 2006 Introduction 8

    Why Software Engineering is Needed?

    Software development is hard!

    Important to distinguish easy systems(onedeveloper, one user, experimental use only) fromhard systems (multiple developers, multiple users,

    products).

    Experience with easy systems is misleading:

    One person techniques do not scale up.

    Analogy with bridge building:

    Over a stream= easy, one person job.

    Over a big River ? (the techniques do not scale)

  • 8/12/2019 Class 1 Introduction 1 Introduction

    9/32

    Software Engineering, 2006 Introduction 9

    Why is SE hard?

    Different kinds of problems: we are used to problems where there are pre-stated specifications

    (e.g. ,write a program to find the shortest path...), where it makessense to talk about the correctness of a solution

    real world problems: (e.g., software to help people controlnuclear reactors): acceptability is defined by user satisfaction(validation vs verification). Implies evolut ion is intrinsic

    wicked problems:

    define and solve concurrently

    no unique definition or solution always room for improvement in defn and soln

    new problem, not previously encountered

    many stakeholders, with different goals

  • 8/12/2019 Class 1 Introduction 1 Introduction

    10/32

    Software Engineering, 2006 Introduction 10

    Essential Difficulties of SE: [Brooks]

    COMPLEXITY: software is more complex for its size than any other human construct;

    no two parts are alike (vs. car, microchips,...);

    science advances by simplifying, while software cannot ignore/simplify details of real world

    CONFORMITY:

    among {hardware, software, people, organizations} it is software which is chosen to bend oradaptbecause it is more malleable, last to arrive on the scene, usually only one developed onsite,...

    CHANGEABILITY: once delivered, most engineered products (hardware, cars, buildings) are rarely changed because

    the cost to change would be a large fraction of the cost to make. The (unfortunate)perceptionis that software is cheap to change. And pressure to change comes from successful use, and

    aging hardware platform. INVISIBILITY: since it has no physical reality, software is not properly visualizable with diagrams, etc. in the

    way in which houses, circuits, etc are.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    11/32

    Software Engineering, 2006 Introduction 11

    Why Software Engineering Is Hard?

    The main problem is complexity

    Many sources, but sizeis key:

    UNIXcontains 4 million linesof codeWindows 2000contains 108linesof code

    Software engineering is about managingthis complexity.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    12/32

    Software Engineering, 2006 Introduction 12

    What will (not) make a big difference: [Brooks1987]

    Minor Ada or Java or C# or Python or ...

    Object-Oriented Programming

    Artificial Intelligence

    Automatic Programming

    Graphical programming Program verification

    Environments and tools

    Workstations

    Major Buy vs build

    Requirements refinement and prototyping

    Incremental development

    Great designers (Unix, Pascal,Smalltalk vs Cobol,PL/I.Ada,MS-DOS)

  • 8/12/2019 Class 1 Introduction 1 Introduction

    13/32

    Software Engineering, 2006 Introduction 13

    Software engineeringas a discipline

    withincomputer science

    Computer Science Software Engineering

    is concerned with

    Computer science theoriesare currently insufficient to act asa complete underpinning for software engineering, BUT it is

    a foundation for practical aspects of software engineering

    theory

    fundamentals

    the practicalities of developing

    delivering useful software

  • 8/12/2019 Class 1 Introduction 1 Introduction

    14/32

    Software Engineering, 2006 Introduction 14

    What is the differencebetween software

    engineering and system engineering?

    Software engineeringis part of System engineering

    System engineeringis concerned with all aspects ofcomputer-based systems development including

    hardware,

    softwareand

    process engineering

    System engineersare involved in

    systemspecification,

    architectural design,

    integrationand deployment

  • 8/12/2019 Class 1 Introduction 1 Introduction

    15/32

    Software Engineering, 2006 Introduction 15

    SE: Processes, Models, and Tools

    Processes:

    Systematic ways of organizing teams and tasks so that there is a clear, traceablepath from customer requirements to the final product. (e.g.,:Waterfall,Prototyping, Spiral etc.) Processes help organize and co-ordinate teams, preparedocumentation, reduce bugs, manage risk, increase productivity, etc.

    Models:

    Well-defined formal or informal languages and techniques for organizing andcommunicating arguments and decisions about software. e.g:specification languages (Z, etc),

    design models (UML, etc)

    Models help stake-holders communicate: customers with developers, designersand developers, developers and testers etc. If they are formal, they also can helpsupport automation

    Tools:

    Programs which automate or otherwise support software development tasks: e.g.,

    Eclipse, Make, CVS, etc.

    Tools increase productivity, quality and can reduce costs

  • 8/12/2019 Class 1 Introduction 1 Introduction

    16/32

    Software Engineering, 2006 Introduction 16

    Software Engineering Activities

    1. Problem statement needs analysis

    requirements specification: functional, non-functional

    2. Design architectural

    detailed

    (communication, database)3. Implementation

    coding

    testing:

    module

    integration

    documentation

    4. Maintenance corrective

    adaptive

    enhancement

  • 8/12/2019 Class 1 Introduction 1 Introduction

    17/32

    Software Engineering, 2006 Introduction 17

    What is asoftware process?

    A set of activitieswhose goal is thedevelopment or evolution of software.

    Generic activities in all software processes are:

    Specification- what the system should do and itsdevelopment constraints.

    Development-production of the software system

    Validation- checking that the software is what the

    customer wants.Evolution- changing the software in response to

    changing demands.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    18/32

    Software Engineering, 2006 Introduction 18

    What is a software process model?

    An abstraction of a software process, presented from a specificperspective.

    Examples of process perspectives:Workflow perspective represents inputs, outputs and dependencies.

    Data-flow perspective represents data transformation activities.Role/action perspectiverepresents the roles/activities of thepeople involved in software process.

    Generic process models: Waterfall

    Iterative development Formal transformation

    Integration from reusable components

  • 8/12/2019 Class 1 Introduction 1 Introduction

    19/32

  • 8/12/2019 Class 1 Introduction 1 Introduction

    20/32

    Software Engineering, 2006 Introduction 20

    What isCASE?

    (Computer-Aided Software Engineering)

    Upper-CASE

    Tools to support the early processactivities of requirements and design.

    Lower-CASETools to support activities such as programming,

    debugging and testing.

    Software systems which are intended to provideautomated support for software process activities, suchas requirements analysis, system modelling, debuggingand testing.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    21/32

    Software Engineering, 2006 Introduction 21

    What are the attributes of good software?

    Maintainability

    Software must evolve to meet changing needs.

    Dependability

    Software must be trustworthy.

    Efficiency

    Software should not make wasteful use of system resources.

    Usability

    Software must be usable by the users for which it was designed.

    The software should deliver the required functionalityand performance to the user and should be

    maintainable, dependable, efficientand usable

  • 8/12/2019 Class 1 Introduction 1 Introduction

    22/32

    Software Engineering, 2006 Introduction 22

    What are the key challenges

    facing software engineering?

    Software engineering in the 21stcentury faces threekey challenges:

    Heterogeneity

    Systems are distributed and include a mix of hardware and software.

    Legacy systems (old valuable systems) must be maintained, updatedand integrated into new systems.

    Delivery

    There is an increasing pressure

    for faster delivery of software. Trust

    Software must be trusted by its nave users.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    23/32

    Software Engineering, 2006 Introduction 23

    Professional and ethical responsibi l i ty (1)

    Software engineering involves wider

    responsibilities than simply the application of

    technical skills.

    Software engineers must behave in an honest

    and ethically responsible way if they are to be

    respected as professionals.

    Ethical behaviour is more than simplyupholding the law.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    24/32

    Software Engineering, 2006 Introduction 24

    I ssues of professional responsibil i ty (2)

    Confidentiality

    Engineers should normally respect theconfidentiality of their employers or clients

    irrespective of whether or not a formalconfidentiality agreement has been signed.

    Competence

    Engineers should not misrepresent their level of

    competence. They should not knowingly acceptwork which is out with their competence.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    25/32

    Software Engineering, 2006 Introduction 25

    I ssues of professional responsibil i ty (3)

    Intellectual property rights

    Engineers should be aware of local laws governing the use

    of intellectual property such as patents, copyright, etc.

    They should be careful to ensure that the intellectual

    property of employers and clients is protected. Computer misuse

    Software engineers should not use their technical skills to

    misuse other peoples computers. Computer misuse

    ranges from relatively trivial (game playing on anemployers machine, say) to extremely serious

    (dissemination of viruses).

  • 8/12/2019 Class 1 Introduction 1 Introduction

    26/32

    Software Engineering, 2006 Introduction 26

    ACM /IEEE Code of Ethics

    The professional societies in the US have cooperatedto produce a code of ethical practice.

    Members of these organisations sign up to the code of

    practice when they join. The Code contains eight Principles related to the

    behaviour of and decisions made by professionalsoftware engineers, including practitioners, educators,managers, supervisors and policy makers, as well astrainees and students of the profession.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    27/32

    Software Engineering, 2006 Introduction 27

    Code of ethics - principles

    1. PUBLIC Software engineers shall act consistently with the public

    interest.

    2. CLIENT AND EMPLOYER

    Software engineers shall act in a manner that is in the bestinterests of their client and employer consistent with the

    public interest.

    3. PRODUCT

    Software engineers shall ensure that their products andrelated modifications meet the highest professional

    standards possible.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    28/32

    Software Engineering, 2006 Introduction 28

    Code of ethics - principles

    4. JUDGMENT

    Software engineers shall maintain integrity and independence

    in their professional judgment.

    5. MANAGEMENT

    Software engineering managers and leaders shall subscribe to

    and promote an ethical approach to the management of

    software development and maintenance.

    6. PROFESSION

    Software engineers shall advance the integrity and reputationof the profession consistent with the public interest.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    29/32

    Software Engineering, 2006 Introduction 29

    Code of ethics - principles

    7. COLLEAGUES

    Software engineers shall be fair to and supportive

    of their colleagues.

    8. SELF

    Software engineers shall participate in lifelong

    learning regarding the practice of their profession

    and shall promote an ethical approach to thepractice of the profession.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    30/32

    Software Engineering, 2006 Introduction 30

    Ethical di lemmas

    Disagreement in principle with the policies of

    senior management.

    Your employer acts in an unethical way and

    releases a safety-critical system without

    finishing the testing of the system.

    Participation in the development of military

    weapons systems or nuclear systems.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    31/32

    Software Engineering, 2006 Introduction 31

    Summary: Key points (1)

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

    Software products consist of developed programs andassociated documentation. Essential product attributes are

    maintainability, dependability, efficiency and usability. The software process consists of activities that are involved in

    developing software products. Basic activities are softwarespecification, development, validation and evolution.

    Methods are organised ways of producing software. They

    include suggestions for the process to be followed, thenotations to be used, rules governing the system descriptionswhich are produced and design guidelines.

  • 8/12/2019 Class 1 Introduction 1 Introduction

    32/32

    Software Engineering, 2006 Introduction 32

    Summary: Key points (2)

    CASE tools are software systems which are designed to

    support routine activities in the software process such as

    editing design diagrams, checking diagram consistency and

    keeping track of program tests which have been run.

    Software engineers have responsibilities to the engineering

    profession and society. They should not simply be concerned

    with technical issues.

    Professional societies publish codes of conduct which set out

    the standards of behaviour expected of their members.