An Introduction to Software Engineering by Prof. Mark Ramsey - PowerPoint PPT Presentation

1 / 19
About This Presentation
Title:

An Introduction to Software Engineering by Prof. Mark Ramsey

Description:

... that in 1985 software costs $140 Billion ... was trying to address the 'software crisis' as a result of ... made large software systems possible(needed) ... – PowerPoint PPT presentation

Number of Views:105
Avg rating:3.0/5.0
Slides: 20
Provided by: markdr
Category:

less

Transcript and Presenter's Notes

Title: An Introduction to Software Engineering by Prof. Mark Ramsey


1
An Introduction to Software Engineeringby Prof.
Mark Ramsey
  • Introductions
  • Introduction to Software Engineering
  • Software Specification
  • Software Design
  • Software Validation
  • Software Management

2
An Introduction to Software EngineeringIntroducti
on
  • How Did We Get Here?
  • Well-Engineered Software
  • The Software Process
  • Management Process Models

3
An Introduction to Software EngineeringHow Did
We Get Here?
  • Computer Hardware is decreasing while computer
    systems are being incorporated in more more
    products.
  • Boehm states that in 1985 software costs 140
    Billion
  • Growing at a rate of 12 per year - 763 Billion
    in 2000
  • What is Software Engineering
  • Software Systems built by teams rather than
    individuals.
  • Includes Engineering Principles in development of
    these systems.
  • Technical as well as Non-Technical Aspects

4
An Introduction to Software EngineeringHow Did
We Get Here?
  • Term Software Engineering first introduced in
    the late 1960s at a conference.
  • Industry was trying to address the software
    crisis as a result of the introduction of 3rd
    Generation computer hardware.
  • This new hardware made large software systems
    possible(needed).
  • New techniques were needed to control the
    complexity inherent in large software systems
  • Industry well ahead of Academia
  • Computer Science vs Mathematics
  • Information Systems vs Computer Science
  • Software Engineering vs Computer Engineering

5
An Introduction to Software Engineering
Well-Engineered Software
  • Like all engineering, Software Engineering is not
    just about producing products, but producing
    products is a cost-effective way.
  • Four key attributes which a well-engineered
    software system should possess
  • Should be maintainable
  • Should be reliable
  • Should be efficient
  • Should offer an appropriate User interface

6
An Introduction to Software Engineering The
Software Process
  • In 1970 the notion that software development is
    like other engineering processes resulted in
    Royce developing a model for Software
    Development. The first being the Waterfall Model
    (Software Life Cycle)

Requirements analyst and definition
System and Software Design
Implementation and Unit Testing
Integration and System Testing
7
An Introduction to Software Engineering The
Software Process
  • Detailed software process models are still the
    subject of research. But there are a number of
    different models or paradigms of software
    development
  • The Waterfall Approach number of stages
  • Exploratory Programming develop a working system
    as quickly as possible and modify as needed
  • Prototyping Establish system requirements
  • Formal transformation developing a formal
    specification of the software system and
    transforming into a program
  • System assembly from reusable components
    assembling already existing software components
  • The first 3 are used currently for all practical
    systems development

8
An Introduction to Software Engineering The
Software Process
  • Software Development Life Cycle
  • Requirements Analysis and Definitions
  • System and Software Design
  • Implementation and Unit Testing
  • Integration and System Testing
  • Operations and Maintenance

9
An Introduction to Software Engineering The
Software Process
  • An aim of software engineering is to reduce
    overall software costs so the cost distribution
    across the software process must be known.
  • System Type Req/Design Impl Testing
  • Control Systems 46 20
    34
  • Spaceborne Systems 34 20
    46
  • Operating Systems 33 17 50
  • Scientific Systems 44 26 30
  • Business Systems 44 28 28

10
An Introduction to Software Engineering
Management Process Models
  • Project Management is one thing which
    distinguishes professional software engineering
    and no process model can be acceptable if it
    results in an unmanageable process.
  • Activity Output documents
  • Requirements Analysis Feasibility Study/ Outline
    Requirements
  • Requirements Definition Requirements
    Specification
  • System Specification Functional Specs/Acceptance
    Test Specs/Draft User Manual
  • Architectural Design Design Architecture
    Specs/System Test Specs
  • Interface Design Interface Specs/Integration
    Test Specs
  • Detailed Design Design Specs/Unit Test Specs
  • Coding Program Code
  • Unit Testing Unit Test Result Report
  • Module Testing Module Test Result Report
  • Integration Testing Integration Test
    Report/Final User Manual
  • System Testing System Test Report
  • Acceptance Testing Final System

11
An Introduction to Software Engineering Review
Point
  • Software engineering involves technical
    non-technical issues. As well as knowledge of
    specification, design, and implementation
    techniques, software engineers must know
    something about human factors and software
    management.
  • Well-Engineered software is software which
    provides the services required by its users. It
    should be maintained, reliable and efficient, and
    should provide an appropriate user interface.
  • The waterfall model of software development
    suffers from inadequacies but will continue to be
    widely used because it simplifies management of
    the software process.
  • Exploratory programming is not suited to the
    development of most large, long-lifetime software
    systems because it is likely to result in systems
    which are expensive to maintain.
  • Document-driven management process models suffer
    from the disadvantage that they inhibit process
    iteration because documents are frozen and then
    become very expensive to change.

12
An Introduction to Software Engineering Exercise
1
  • A university intends to procure an integrated
    student management system holding all details of
    registered students including personal
    information, courses taken, and examination marks
    achieved. The alternative approaches to be
    adopted are
  • Buy a database management system and develop an
    in-house system based on this database.
  • Buy a comparable system from another university
    and modify it to local requirements
  • Join a consortium of other universities,
    establish a common set of requirements and
    contract a software house to develop a single
    system for all the universities in the
    consortium
  • Identify two possible risks in each of these
    strategies and suggest techniques for risk
    resolution which would help in deciding which
    approach to adopt.

13
An Introduction to Software Engineering Exercise
2
  • Write a plausible requirements definition for the
    following functions
  • An unattended petrol (gas) pump system which
    includes a credit card reader. The customer
    swipes the card through the reader then specifies
    the amount of fuel required. The fuel is
    delivered and the customers account is debited.
  • The cash dispensing function in a bank
    auto-teller machine.
  • The spell checking and correcting function in a
    word processor.

14
An Introduction to Software Engineering Software
Design
  • Design is a creative process. Although methods
    guidelines are helpful, judgement flair on the
    part of the software engineer are still required
    to design a software system.
  • The main design activities in the software
    process are architectural design, system
    specification, interface design, component
    design, data structure design and algorithm
    design.
  • Functional decomposition involves considering a
    system as a set of interacting functional units.
  • Object-oriented decomposition considers the
    system as a set of objects where an object is an
    entity with state and functions to inspect and
    modify that state.
  • A decision on whether a system should be
    implemented as a single sequential process or as
    a number of parallel processes is a detailed
    design decision. The design process should
    partition the system into logical, interacting
    units which may be realized as either sequential
    or parallel components.
  • The most important design quality attribute is
    maintainability. Maximizing cohesion in a
    component minimizing the coupling between
    components is likely to lead to maintainable
    design.
  • The use of inheritance in object-oriented systems
    can improve the quality of a design but may make
    the design more difficult to understand.

15
An Introduction to Software Engineering Exercise
3
  • Explain why sequential software designs are
    easier to validate than designs which involve
    parallel processes

16
An Introduction to Software Engineering
Verification Validation
  • Verification Validation are not the same thing.
    Verification is intended to show that a program
    meets its specification. Validation is intended
    to show that the program does what the user wants
    it to do.
  • Testing has a dual function it is used to
    establish the presence of defects in a program
    and it is used to estimate whether or not the
    program is operationally usable.
  • Testing can only be demonstrated the presence of
    errors. It cannot prove their absence.
  • The testing process involves unit testing, module
    testing, sub-system testing, integration testing
    and acceptance testing.
  • Testing should be scheduled as part of the
    project planning process. Adequate resources must
    be made available for testing.
  • Testing strategies which may be adopted include
    top-down testing, bottom-up testing, thread
    testing of real-time systems and stress testing.

17
An Introduction to Software Engineering Exercise
4
  • Describe four classes of systems encountered in
    everyday life which might be subject to stress
    testing.

18
An Introduction to Software Engineering Software
Management
  • Good software project management is essential if
    software engineering projects are to be developed
    on schedule and within budget.
  • Software management is different from other
    engineering management because software is
    intangible, because we dont understand the
    software process and because many projects are
    novel and innovative.
  • A software manager has diverse roles but the most
    significant activities are project planning,
    estimating, and scheduling.
  • Various development team organizations have been
    adopted. Democratic teams work well with
    experienced and competent staff. Chief programmer
    teams try to make best use a scarce resource,
    namely, programming skills.
  • The dominant factor in programming productivity
    is the aptitude of the individual programmer.
  • Existing measures of programming productivity do
    not take the quality of the finished product into
    account.

19
An Introduction to Software Engineering Exercise
5
  • Explain why the productivity of programmers
    working on embedded systems is usually very much
    lower than that of programmers developing
    business information systems.
Write a Comment
User Comments (0)
About PowerShow.com