Purdue CS307 Software Engineering

Embed Size (px)

Citation preview

  • 8/11/2019 Purdue CS307 Software Engineering

    1/30

    Object-Oriented Software EngineeringPractical Software Development using UML and Java

    Chapter 1:

    Software and Software Engineering

    1

  • 8/11/2019 Purdue CS307 Software Engineering

    2/30

    2

    Prologue

    "By the year 2000 all software will contain allfunctions imaginable and will be delivered bug-

    free", unknown Software Engineering manager

    approximately 1990

    By now we expected that software development

    would be flawless and that software testing would

    be unnecessary

  • 8/11/2019 Purdue CS307 Software Engineering

    3/30

    3

    Prologue

    Reality -- Software is frequently missing necessaryfunctionality and errors are a more serious problem

    today than ever before!

    The more computers have to do, the more complex

    their software has to be, and therefore the more

    difficult it is for software engineers to create high

    quality software

  • 8/11/2019 Purdue CS307 Software Engineering

    4/30

    4

    1.1 The Nature of Software...

    Software is intangible Hard to understand (or even explain) the development

    effort required

    Software is easy to reproduce

    Cost is in its development

    in some other engineering products manufacturing

    is the costly stage

    Software industry is labor-intensive

    Hard to automate

  • 8/11/2019 Purdue CS307 Software Engineering

    5/30

    5

    The Nature of Software ...

    Untrained people can hack something together Quality problems are hard to determine

    Software is easy to modify

    People make changes without fully understanding their

    effects

    Software does not wear out

    It deterioratesby having its design changed:

    erroneously, or

    in ways that were not anticipated

  • 8/11/2019 Purdue CS307 Software Engineering

    6/30

    The Nature of Software

    Conclusions Much software has poor design

    Demand for software is high and rising

    We are in a perpetual software crisis

    We have to learn to engineer software

    6

  • 8/11/2019 Purdue CS307 Software Engineering

    7/30

    7

    Types of Software...

    Custom For a specific customer

    Generic

    Sold on open market

    Often called

    COTS (Commercial Off The Shelf)

    Shrink-wrapped

    Embedded Built into hardware

    Harder to modify

  • 8/11/2019 Purdue CS307 Software Engineering

    8/30

    9

    Types of Software

    Real time software Control and monitoring systems

    Must react immediately

    Performance and Safety are major concerns

    Data processing software

    Used to run businesses

    Correctness and Security of data are major concerns

    Some software has both aspects

  • 8/11/2019 Purdue CS307 Software Engineering

    9/30

    10

    1.2 What is Software Engineering?...

    The process of solving customers problems by thesystematic development and evolution of large, high-

    quality software systems within cost, time, and other

    constraints

    Other definitions:

    IEEE: (1) the application of a systematic, disciplined, quantifiable approach

    to the development, operation, maintenance of software; that is, the

    application of engineering to software. (2) The study of approaches as in (1).

    The Canadian Standards Association: The systematic activities involved inthe design, implementation and testing of software to optimize its production

    and support.

  • 8/11/2019 Purdue CS307 Software Engineering

    10/30

    11

    What is Software Engineering?

    Solving customers problems This is thegoalof software engineering

    Sometimes the solution is to assemble from existing

    components, not build from scratch

    Sometimes the solution is to buy, not assemble or build

    Adding unnecessary features does not help solve

    problems

    Software engineers must communicate effectivelyto

    identify and understand problems

  • 8/11/2019 Purdue CS307 Software Engineering

    11/30

    12

    What is Software Engineering?

    Systematic development and evolution An engineering process involves applying well-

    understood techniquesin an organized and disciplined

    way

    Many well-accepted practices have been formallystandardized

    Most development work is evolutionary

  • 8/11/2019 Purdue CS307 Software Engineering

    12/30

    13

    What is Software Engineering?

    Large, high-quality software systems Software engineering techniques are needed because large

    systems cannot be completely understoodand developed

    by one person (within time constraints)

    Teamwork and coordination are required Key challenge: Dividing up the work and ensuring that the

    parts of the system will work properly together

    The end-product must be of high quality

  • 8/11/2019 Purdue CS307 Software Engineering

    13/30

    14

    What is Software Engineering?

    Cost, time, and other constraints Finite resources

    Usually a deadline

    The benefits must outweigh the cost

    Inaccurate estimates of cost and time have caused many

    project failures

  • 8/11/2019 Purdue CS307 Software Engineering

    14/30

    15

    1.3 Software Engineering and the

    Engineering Profession

    The term Software Engineering was coined in 1968 People began to suggest that the principles of

    engineering should be applied to software development

    Engineering is a licensed profession

    In order to protect the public

    Engineers design artifacts following well-acceptedpractices which involve the application of science,mathematics, economics, .

    Ethical practice is also a key tenet of the profession

    In most countries, software engineering does not (yet)require an engineering exam or license

  • 8/11/2019 Purdue CS307 Software Engineering

    15/30

    16

    Software Engineering and the Engineering

    Profession

    Ethics in Software Engineering:

    Ethics refers to the concern that humans have for figuring out

    how best to live

    Like medical, legal and business ethics, engineering ethics is

    a well-developed area of professional ethics

    Professional engineers today are expected to both learn aboutand live up to ethical standards as a condition of their

    membership in the profession

  • 8/11/2019 Purdue CS307 Software Engineering

    16/30

    17

    Software Engineering and the Engineering

    Profession

    Ethics in Software Engineering:

    Software engineering is a relatively young practice and,

    compared with other engineering disciplines, its culture of

    professionalism is still developing

    Software Engineering Code of Ethics and Professional

    Practice (Version 5.2) as recommended by the ACM/IEEE-

    CS Joint Task Force is the standard for teaching and

    practicing software engineering

    Software engineers shall adhere to these eightprinciples

  • 8/11/2019 Purdue CS307 Software Engineering

    17/30

    18

    Software Engineering and the Engineering

    Profession

    Ethics in Software Engineering:

    Software engineers shall

    1. Act consistently with public interest

    2. Act in the best interests of their clients3. Develop and maintain systems using the highest

    standards possible

    4. Maintain integrity and independence

    5. Promote an ethical approach in management

    6. Advance the integrity and reputation of the profession

    7. Be fair and supportive to colleagues

    8. Participate in lifelong learning

  • 8/11/2019 Purdue CS307 Software Engineering

    18/30

    19

    1.4 Stakeholders in Software Engineering

    1. Users Those who use the software

    2. Customers (Project Owners)

    Those who pay for the software

    3. Software Developers (Software Engineers)

    Those who create and maintain the software

    4. Development Managers (Project Coordinators)

    Those who supervise the software development process

  • 8/11/2019 Purdue CS307 Software Engineering

    19/30

    20

    1.5 Software Quality...

    Availability Concerned with system failure and its associated

    consequences

    Modifiability

    The cost of change

    Performance

    How long it takes the system to respond when

    an event occurs

    Scalability

    Can the software handle larger volumes of data?

  • 8/11/2019 Purdue CS307 Software Engineering

    20/30

  • 8/11/2019 Purdue CS307 Software Engineering

    21/30

  • 8/11/2019 Purdue CS307 Software Engineering

    22/30

    23

    Software Quality and the Stakeholders

    QUALITY

    SOFTWARE

    Developer:

    easy to design;

    easy to maintain;

    easy to reuse its parts

    User:

    easy to learn;

    efficient to use;

    helps get work done

    Customer:

    solves problems atan acceptable cost in

    terms of money paid and

    resources used

    Development manager:

    sells more and

    pleases customerswhile costing less

    to develop and maintain

  • 8/11/2019 Purdue CS307 Software Engineering

    23/30

    24

    Software Quality: Conflicts and Objectives

    Some software qualities can conflict Increasing efficiency can affect maintainability and/or

    reusability

    Increasing usability can affect efficiency

    Increasing security can affect performanceSetting objectives for quality is a key engineeringactivity

    You then design to meet the objectives

    Optimizing is always necessary

    for example, obtain the highest possible reliability usinga fixed budget

  • 8/11/2019 Purdue CS307 Software Engineering

    24/30

    25

    Internal Quality Criteria

    Characterize aspects of the designof thesoftware

    Have an effect on the external quality attributes

    e.g.The amount of commenting of the code

    The complexity of the code

    The use of well-understood software patterns

  • 8/11/2019 Purdue CS307 Software Engineering

    25/30

    26

    Short Term Vs. Long Term Quality

    Short term: Does the software meet the customers immediate needs?

    Is it sufficiently efficient for the volume of data we have

    today?

    Long term:

    Maintainability

    Customers future needs

    Scalability

  • 8/11/2019 Purdue CS307 Software Engineering

    26/30

    27

    1.6 Software Engineering Projects

    Most projects are evolutionaryor maintenanceprojects,involving work on legacysystems

    Corrective projects: fixing defects

    Adaptive projects: changing the system in response to

    changes inOperating system

    Database

    Organizational operations

    Enhancement projects: adding new features for users

    Reengineering or perfective projects: changing the

    system internally so that it is more maintainable

  • 8/11/2019 Purdue CS307 Software Engineering

    27/30

    28

    Software Engineering Projects

    Greenfield ProjectFrom scratch project, new development

    Lacks any constraints imposed by prior work

    Analogy is to construction on greenfield land where there

    is no need to remodel or demolish an existing structureMinority of projects

    Brownfield Project

    Development and deployment of a software system thatmust work with existing software systems

    New system must take into account and coexist withalready-existing software

  • 8/11/2019 Purdue CS307 Software Engineering

    28/30

    30

    1.7 Activities Common to Software

    Projects...

    Requirements Includes

    Domain analysis

    Defining the problem

    Requirements gathering

    - Obtaining input from as many sources as possible

    Requirements analysis

    - Organizing the information

    Requirements specification

    - Writing detailed instructions about how the software should

    behave

  • 8/11/2019 Purdue CS307 Software Engineering

    29/30

    31

    Activities Common to Software Projects...

    Design Deciding how the requirements should be implemented

    using the available technology

    Includes:

    Systems engineering: Deciding what should be inhardware and what in software

    Software architecture: Includes dividing the systeminto subsystems and deciding how the subsystemswill interact

    Detailed designof the internals of a subsystemUser interface design

    Design of databases

  • 8/11/2019 Purdue CS307 Software Engineering

    30/30