introduction to se

Upload: balaram-papana

Post on 05-Apr-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/2/2019 Introduction to SE

    1/23

    AN INTRODUCTION TO SOFTWARE

    ENGINEERING

    PresenterAmbili P K

  • 8/2/2019 Introduction to SE

    2/23

    Objectives

    Understand what Software Engineering is,and why it is important

    Answer fundamental questions aboutSoftware Engineering

    Introduce ethical and professionalresponsibility issues as they relate tocomputer scientists and software engineers

  • 8/2/2019 Introduction to SE

    3/23

    Questions about Software

    Engineering What is software?

    Software includes source code, executable, andassociated documentation such as requirementsdocuments, design models, and user manuals

    May be targeted for some general purpose (webbrowser, word processor, etc), or for a specificcustom need

    New software can be produced from scratch, byconfiguring generic software systems, or byreusing existing software

  • 8/2/2019 Introduction to SE

    4/23

    Questions about Software

    Engineering What is Software Engineering?

    Software engineering is an engineering disciplinethat applies theories, methods, and tools to solveproblems related to software production andmaintenance

    Software engineers strive to deliver high-qualitysoftware, on time and within budget

  • 8/2/2019 Introduction to SE

    5/23

    Questions about Software

    Engineering Why is Software Engineering Important?

    Financial, security, and safety critical systems relyon software

    Software mediates every aspect of our Internetexperience

    The economies of all developed nations are

    dependent on software There is an increasing need to cost effectively

    develop high-quality software

  • 8/2/2019 Introduction to SE

    6/23

    Questions about Software

    Engineering What is the difference between Software Engineering

    and Computer Science?

    Software engineering is concerned with producingusable software for today; computer science is

    concerned with finding fundamental truths abouttheoretical problems for posterity

    Software engineering projects have fixed budgetsand schedules; computer science projects haveopen-ended budgets and schedules

    Software created by software engineers mustevolve as users needs change; solutions createdby Computer Scientists never change

  • 8/2/2019 Introduction to SE

    7/23

    Questions about Software

    Engineering What is the difference between Software Engineering

    and Computer Science?

    Software engineers require domain knowledge tofunction; computer scientists rely on

    mathematical principles to function Unlike physics and electrical engineering,

    software engineers often rely on methods andprinciples borrowed from other engineeringdisciplines instead of computer science

  • 8/2/2019 Introduction to SE

    8/23

    Questions about Software

    Engineering What is the difference between Software

    Engineering and System Engineering? System Engineering is concerned with all aspects

    of computer based systems, including hardware,software and process engineering; applies testedand known principles; the discipline is thousandsof years old

    Software Engineering is concerned with

    developing the software infrastructure, control,applications, and databases in the system; oftenapply new and untested elements in softwareprojects; the discipline is about 50 years old

  • 8/2/2019 Introduction to SE

    9/23

    Questions about Software

    Engineering What is a Software Process?

    A software process is a set of activities and theiroutput, which result in a software product

    Four fundamental process activities are: Specification: Defines what the software should do, and its

    operational constraints

    Design and implementation: Designs the solutions, andproduces the source code to meet the specification

    Validation: Checks that the software produced is what thecustomer wants

    Evolution: Changes made to the software that meet userschanging needs

  • 8/2/2019 Introduction to SE

    10/23

    Questions about Software

    Engineering What is a Software Process model?

    An abstract representation of a software process,presented from a particular perspective; for

    example, workflow (sequence of activities), data-flow (information flow), or role/action (who doeswhat)

    These process models explain different

    approaches to software development; forexample, Waterfall, Iterative, and ComponentBased Software Engineering

  • 8/2/2019 Introduction to SE

    11/23

    Questions about Software

    Engineering What is the cost of Software?

    Software costs often dominate computer systemcosts.

    Software costs more to maintain than to developfrom scratch. The maintenance costs for systemswith a long-life, may be several times itsdevelopment costs

  • 8/2/2019 Introduction to SE

    12/23

    Questions about Software

    Engineering What are the costs of Software Engineering?

    Roughly 60% of costs are development costs, and40% are testing costs. Evolution costs often

    exceed development costs in custom software Costs vary depending on the type and

    requirements of system under development

    The distribution of costs depend on the

    development model used

  • 8/2/2019 Introduction to SE

    13/23

    Questions about Software

    Engineering What are Software Engineering methods?

    Structured approaches to software development, including:

    Model descriptions: Describes graphical models (i.e.object, data-flow, state machine models, etc)

    Rules: Constraints applied to system models (i.e.entities must have unique names)

    Recommendations: Best practices for designingsoftware (i.e. include no more than nine processes in

    a data flow diagram) Process guidance: what activities to follow (i.e.

    document object attributes before defining itsoperations)

  • 8/2/2019 Introduction to SE

    14/23

    Questions about Software

    Engineering What is CASE?

    Computer Assisted Software Engineering, used toprovide automated support for software process

    activities

    Often used for method support

    Upper-CASE tools support requirements

    gathering and design activities Lower-CASE tools support implementation,

    debugging, and testing activities

  • 8/2/2019 Introduction to SE

    15/23

    Questions about Software

    Engineering What are the attributes of good software?

    Software should deliver the functionality requiredby the user. In addition, it should deliver non-

    functionalrequirements such as:

    Maintainability: Must be easy to evolve to addresschanging needs

    Dependability: Must be trustworthy

    Efficiency: Should not waste system resources

    Acceptability: Users must be able to use thesoftware

  • 8/2/2019 Introduction to SE

    16/23

    Questions about Software

    Engineering

    What are the key challenges facing softwareengineering? Heterogeneity: How to build software that works

    on different platforms, that can integrate witholder legacy systems which are written in differentprogramming languages

    Delivery: How to shorten the time it takes to

    deliver a finished software product, withoutcompromising its quality

    Trust: How to develop techniques to demonstratethat software can be trusted by its users

  • 8/2/2019 Introduction to SE

    17/23

    Professional and Ethical

    Responsibility

    Software engineering involves widerresponsibilities than just the application oftechnical skills

    Software engineers must behave in honestand ethically responsible ways to berespected as professionals

    Ethical behavior is more than simplyupholding the law

  • 8/2/2019 Introduction to SE

    18/23

    Issues of Professional

    Responsibility

    Confidentiality

    Always respect confidentiality of employers orclients, even when there is no formal

    confidentiality agreement

    Competence

    Never misrepresent ones level of competence.

    Never accept work beyond ones level ofcompetence

  • 8/2/2019 Introduction to SE

    19/23

    Issues of Professional

    Responsibility

    Intellectual property rights

    Ensure that the intellectual property of employersand clients is protected

    Be aware of local laws governing use ofintellectual property such as patents andcopyright

    Computer misuse Never use technical skills to misuse other peoples

    computers

  • 8/2/2019 Introduction to SE

    20/23

    ACM/IEEE Software Engineering Code

    of Ethics and Professional Practice

    The commitment of software engineers tomake their discipline a respected profession,and to adhere to the eight principles for the

    health, safety, and welfare of the public.

  • 8/2/2019 Introduction to SE

    21/23

    Code of Ethics Eight

    Principles

    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 of their client and employerconsistent with the public interest.

    Product: Software engineers shall ensure that their

    products and related modifications meet thehighest professional standards possible.

  • 8/2/2019 Introduction to SE

    22/23

    Code of Ethics Eight

    Principles

    Judgment:

    Software engineers shall maintain integrity andindependence in their professional judgment.

    Management:

    Software engineering managers and leaders shallsubscribe to and promote an ethical approach to

    the management of software development andmaintenance.

  • 8/2/2019 Introduction to SE

    23/23

    Code of Ethics Eight

    Principles

    Profession: Software engineers shall advance the integrity

    and reputation of the profession consistent withthe 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 their professionand shall promote an ethical approach to thepractice of the profession.