se updated

Upload: desireharsha

Post on 10-Apr-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 SE Updated

    1/31

    1

    SOFTWAREENGINEERING

  • 8/8/2019 SE Updated

    2/31

    2

    Objectives To introduce software engineering and to

    explain its importance.

    To set out the answers to key questions aboutsoftware engineering.

    To introduce professional issues and to explain

    why they are concern to software engineers.

  • 8/8/2019 SE Updated

    3/31

    3

  • 8/8/2019 SE Updated

    4/31

    4

    Roles of people in software people involved in software production

    customer / client: wants software

    often doesn't know what he/she wants

    managers / designers: plan software difficult to predict all problems and issues in

    advance

    developers: write code to implement software

    it is hard to write complex code for large systems

    testers: perform quality assurance (QA) it is impossible to test every combination of actions

    users: purchase and use software product

    users can be inconsistent and can misunderstand theproduct

  • 8/8/2019 SE Updated

    5/31

    5

    Problems with software

    today Example: Space shuttle software

    cost: $10 Billion, millions of dollars.

    time: 3 years quality: first launch of space shuttle was cancelled

    because of a synchronization problem .

  • 8/8/2019 SE Updated

    6/31

    6

    The economies of ALL developed nations are

    dependent on software.

    More and more systems are software controlled.

    Software engineering is concerned with theories, methods

    and tools for professional software development.

    Software engineering expenditure represents a

    significant fraction in all developed countries.

    Software engineering

  • 8/8/2019 SE Updated

    7/31

    7

    Software costs often dominate system costs.

    The costs of software on a PC are often greater

    than the hardware cost Software costs more to maintain than it does to

    develop. For a long life, maintenance costs may

    be several times development costs

    Software engineering is concerned with cost-

    effective software development

    Software costs

  • 8/8/2019 SE Updated

    8/31

    8

    FAQs about software

    engineering Scope and necessity of software engineering?

    Causes of and solutions for software crisis?

    What is software? What is software engineering?

    What is the difference between softwareengineering and system engineering?

    What is a software process?

    What is a software process model?

  • 8/8/2019 SE Updated

    9/31

    9

    FAQs about software

    engineering What are the costs of software?

    What are software engineering methods?

    What is CASE (Computer-Aided SoftwareEngineering)

    What are the attributes of good software?

    What are the key challenges facing softwareengineering?

  • 8/8/2019 SE Updated

    10/31

    10

    Scope and necessity ofsoftware

    engineering Software engineering is an engineering approach for software

    development. We can alternatively view it as a systematic

    collection of past experience.

    The experience is arranged in the form of methodologies andguidelines.

    A small program can be written without using software engineering

    principles. But if one wants to develop a large software product,

    then software engineering principles are essential to achieve a good

    quality software cost effectively. Example(1): Suppose you have a friend who asked you to build a small

    wall as shown in fig. 1.1. You would be able to do that using your

    common sense. You will get building materials like bricks; cement etc.

    and you will then build the wall.

  • 8/8/2019 SE Updated

    11/31

    11

    But what would happen if the same friend asked you to build a large

    multistoried building as shown in fig. 1.2?

  • 8/8/2019 SE Updated

    12/31

    12

    If you don't have a very good idea about building such ahuge complex. Even if you tried to build a large building, itwould collapse because you would not have the requisiteknowledge about the strength of materials, testing,

    planning, architectural design, etc.

    Building a small wall and building a large building areentirely different ball games.

    So building a large building requires knowledge of civil,architectural and other engineering principles.

  • 8/8/2019 SE Updated

    13/31

    13

    Example(2): Without using software engineering principles it would be difficult to

    develop large programs. In industry it is usually needed to develop largeprograms to accommodate multiple functions. A problem with developingsuch large commercial programs is that the complexity and difficulty levelsof the programs increase exponentially with their sizes as shown in fig. 1.3.

  • 8/8/2019 SE Updated

    14/31

    14

    For example, a program of size 1,000 lines of code has

    some complexity. But a program with 10,000 LOC is not

    just 10 times more difficult to develop, but may as well turn

    out to be 100 times more difficult unless softwareengineering principles are used.

  • 8/8/2019 SE Updated

    15/31

    15

    Important Techniques to ReduceProblem Complexity:

    Abstraction: The principle of

    abstraction (in fig.1.4) implies

    that a problem can be

    simplified by omitting

    irrelevant details.

    In other words, the main

    purpose of abstraction is to

    consider only those aspects of

    the problem that are relevant

    for certain purpose andsuppress other aspects that are

    not relevant for the given

    purpose.

  • 8/8/2019 SE Updated

    16/31

    16

    Decomposition:

    In this technique, a complexproblem is divided into severalsmaller problems and then thesmaller problems are solved

    one by one. However, in this technique any

    random decomposition of aproblem into smaller parts willnot help.

    The problem has to be

    decomposed such that eachcomponent of the decomposedproblem can be solvedindependently and then thesolution of the differentcomponents can be combined

    to get the full solution.

  • 8/8/2019 SE Updated

    17/31

    17

    Causes ofand solutions forsoftware crisis

    Causes of software crisis: software products are difficultto alter, debug, and enhance; use resources non optimally;often fail to meet the user requirements; are far from beingreliable; frequently crash; and are often delivered late.Among these, the trend of increasing software costs is

    probably the most important symptom of the presentsoftware crisis.

    solutions for software crisis:

    It is believed that the only satisfactory solution to thepresent software crisis can possibly come from a spread ofsoftware engineering practices among the engineers,coupled with further advancements to the software

    engineering discipline itself.

  • 8/8/2019 SE Updated

    18/31

    18

    What is software? Computer programs and associated documentation

    Software products may be developed for a particular

    customer or may be developed for a general market

    Software products may be

    Generic - developed to be sold to a range of different

    customers

    Custom - developed for a single customer according to

    their specification

  • 8/8/2019 SE Updated

    19/31

    19

    What is software engineering? Software engineering: the profession, practiced by

    developers, concerned with creating and maintainingsoftware applications by applying technologies and

    practices from computer science, project management, andother fields.

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

    Software engineers should adopt a systematic andorganised approach to their work and use appropriate toolsand techniques depending on the problem to be solved.

  • 8/8/2019 SE Updated

    20/31

    20

    What is a software process? A set of activities whose goal is the development or

    evolution of software.

    Generic activities in all software processes are:

    Specification - what the system should do and its

    development 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/8/2019 SE Updated

    21/31

    21

    What is a software process model?

    A simplified representation of a software process,

    presented from a specific perspective.

    Generic process models Waterfall

    Evolutionary development

    Formal transformation

    Integration from reusable components

  • 8/8/2019 SE Updated

    22/31

    22

    What are the costs ofsoftware? Roughly 60% of costs are development costs, 40%

    are testing costs. For custom software, evolution costsoften exceed development costs.

    Costs vary depending on the type of system beingdeveloped and the requirements of system attributessuch as performance and system reliability.

    Distribution of costs depends on the developmentmodel that is used.

  • 8/8/2019 SE Updated

    23/31

    23

    What are software engineering

    methods? Structured approaches to software development which include system

    models, notations, rules, design advice and process guidance

    Model descriptions

    Descriptions of graphical models which should be produced Rules

    Constraints applied to system models

    Recommendations

    Advice on good design practice

    Process guidance

    What activities to follow

  • 8/8/2019 SE Updated

    24/31

    24

    What is CASE (Computer-Aided

    Software Engineering) Software systems which are intended to provide automated

    support for software process activities. CASE systems are

    often used for method support.

    Upper-CASE Tools to support the early process activities of

    requirements and design.

    Lower-CASE

    Tools to support later activities such as programming,debugging and testing.

  • 8/8/2019 SE Updated

    25/31

    25

    What are the attributes ofgood

    software? The software should deliver the required

    functionality and performance to the user and

    should be maintainable and usable.

    Maintainability

    Software must evolve to meet changing needs.

    Efficiency

    Software should not make wasteful use of

    system resources.

    Usability

    Software must be usable by the users for which

    it was designed.

  • 8/8/2019 SE Updated

    26/31

    26

    What are the key challenges facing

    software engineering? Coping with legacy systems, coping with increasing

    diversity and coping with demands for reduced delivery

    times.

    Legacy systems Old, valuable systems must be maintained and updated.

    Heterogeneity

    Systems are distributed and include a mix of hardware

    and software. Delivery

    There is increasing pressure for faster delivery of

    software.

  • 8/8/2019 SE Updated

    27/31

    27

    P

    rofessional Responsibility Software engineering involves wider responsibilities than

    simply the application of technical skills.

    Software engineers must behave in an honest and

    responsible way if they are to be respected as professionals.

  • 8/8/2019 SE Updated

    28/31

    28

    Issues OfProfessional Responsibility Confidentiality

    Engineers should normally respect the

    confidentiality of their employers or clients

    irrespective of whether or not a formal

    confidentiality agreement has been signed.

    Competence

    Engineers should not misrepresent their level ofcompetence. They should not intentionally accept

    work which is outside their competence.

  • 8/8/2019 SE Updated

    29/31

    29

    Issues ofprofessional responsibility 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 theintellectual property of employers and clients is

    protected.

    Computer misuse

    Software engineers should not use their technical skillsto misuse other peoples computers.

  • 8/8/2019 SE Updated

    30/31

    30

    Key Points Software engineering is an engineering discipline which is

    concerned with all aspects of software production.

    Software products consist of developed programs andassociated documentation. Essential product attributes aremaintainability, efficiency and usability.

    The software process consists of activities which areinvolved in developing software products. Basic activitiesare software specification, development, validation andevolution.

    Methods are organised ways of producing software. Theyinclude suggestions for the process to be followed, thenotations to be used, rules governing the systemdescriptions which are produced and design guidelines.

  • 8/8/2019 SE Updated

    31/31

    31

    Key points CASE tools are software systems which are designed to

    support routine activities in the software process such asediting design diagrams, checking diagram consistency andkeeping track of program tests which have been run.

    Software engineers have responsibilities to the engineeringprofession and society. They should not simply beconcerned with technical issues.