SEC 308 Yazilim M - PowerPoint PPT Presentation

1 / 66
About This Presentation
Title:

SEC 308 Yazilim M

Description:

SEC 308 Yaz l m M hendisli i Software and Software Engineering * – PowerPoint PPT presentation

Number of Views:130
Avg rating:3.0/5.0
Slides: 67
Provided by: edut70
Category:

less

Transcript and Presenter's Notes

Title: SEC 308 Yazilim M


1
SEC 308 Yazilim MühendisligiSoftware and
Software Engineering
2
Lecture Plan
  • What is Software?
  • Why Software Engineering?
  • What is Software Engineering?
  • Who does Software Engineering?
  • Why does Software Fail?
  • Software Failure Examples
  • Software Myths

3
What is Software?
  • Software is (1) instructions (computer programs)
    that when executed provide desired features,
    function, and performance (2) data structures
    that enable the programs to adequately manipulate
    information and (3) documentation that describes
    the operation and use of the programs.
  • Computer programs and associated documentation
  • Software Program Documentation
  • Operating Procedures

4
Software Product
  • Software product is a product designated for
    delivery to the user

5
Documentation Manuals
  • Documentation consists of different types of
    manuals are

6
Documentation Manuals (cont.)
  • Documentation consists of different types of
    manuals are

7
Software Characteristics
  • Software is developed or engineered, it is not
    manufactured in the classical sense.
  • Software doesn't "wear out., but it does
    deteriorate.
  • Although the industry is moving toward
    component-based construction, most software
    continues to be custom-built.
  • Failure curve for hardware

8
Softwares Dual Role
  • Software is a product
  • Delivers computing potential
  • Produces, manages, acquires, modifies, displays,
    or transmits information
  • Software is a vehicle for delivering a product
  • Supports or directly provides system
    functionality
  • Controls other programs (e.g., an operating
    system)
  • Effects communications (e.g., networking
    software)
  • Helps build other software (e.g., software tools)

9
Software Product
  • 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
  • Bespoke (custom) - developed for a single
    customer according to their specification

10
Software Applications
11
Software New Categories
  • Open world computingpervasive, distributed
    computing
  • Ubiquitous computingwireless networks
  • Netsourcingthe Web as a computing engine
  • Open sourcefree source code open to the
    computing community

12
Legacy Software
  • Were developed decades ago and have been
    continually modified to meet changes in business
    requirements and computing platforms.
  • Why must it change?
  • software must be adapted to meet the needs of new
    computing environments or technology.
  • software must be enhanced to implement new
    business requirements.
  • software must be extended to make it
    interoperable with other more modern systems or
    databases.
  • software must be re-architected to make it viable
    within a network environment.

13
Some attributes of good software
The software should deliver the required
functionality and performance to the user
  • 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

14
Some Software Development Questions
  • Why does it take so long to get software
    finished?
  • Why are development costs so high?
  • Why cant we find all errors before giving
    software to customer?
  • Why do we spend so much time and effort
    maintaining existing programs?
  • Why do we have difficulty in measuring progress
    as software is being developed and maintained?

15
(No Transcript)
16
Why is Software Development Hard?
  • Millions of lines of code
  • Single failure ? entire system fails
  • Hundreds of developers
  • Many of whom enter/leave project at different
    times
  • Requirement change rapidly
  • Software may be obsolete before it is completed
  • Possibly most complex human activity ever!

17
Why Software Engineering? (cont.)
  • The problem is complexity
  • Complexity leads to failure
  • Software takes too long to develop
  • More costly than expected
  • Not reliable enough
  • Does not do what users want or need
  • Difficult to maintain/modify as needs change
  • The majority of commercial software projects
    started are never completed
  • Software engineering is about managing this
    complexity.

18
Why Software Engineering?
  • Important to distinguish easy systems (one
    developer, one user, experimental use only) from
    hard 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 River Nile ? (the techniques do not
    scale)

19
Why Software Engineering? (cont.)
20
What is Software Engineering?
  • Applying engineering principles to software
    development
  • Build software like we build bridges!
  • IEEE DefinitionSoftware Engineering is the
    application of a systematic, disciplined,
    quantifiable approach to the development,
    operation, and maintenance of software that is,
    the application of engineering to software

21
Engineering Principles
  • Systematic
  • Clear process followed by all involved
  • Only way to coordinate 100s of developers
  • Quantifiable
  • Can accurately measure/estimate key qualities
  • Cost and time to develop software
  • Correctness, reliability, usability of final
    product

22
Engineering Principles (cont.)
  • Disciplined
  • Commitment to quality by all involved
  • Developers, management, etc.
  • Ethics
  • Do not accept project that you do not have the
    skills to complete correctly
  • Do not release product until you know it meets
    standards

23
What is software engineering? (cont.)
  • Software engineering is an engineering discipline
    which is concerned with all aspects of software
    production
  • Software engineers should
  • adopt a systematic and organised approach to
    their work
  • use appropriate tools and
    techniques depending on
  • the problem to be solved,
  • the development constraints and
  • the resources available

24
What is software engineering? (cont.)
  • At the first conference on software engineering
    in 1968, Fritz Bauer defined software engineering
    as The establishment and use of sound
    engineering principles in order to obtain
    economically developed software that is reliable
    and works efficiently on real machines.
  • Stephen Schach defined the same as A discipline
    whose aim is the production of quality software,
    software that is delivered on time, within
    budget, and that satisfies its requirements.

25
What is the difference between softwareengineerin
g and computer science?
  • Computer science is concerned with theory and
    fundamentals software engineering is concerned
    with the practicalities of developing and
    delivering useful software.
  • Computer science theories are still insufficient
    to act as a complete underpinning for software
    engineering (unlike e.g. physics and electrical
    engineering).

26
Where do software engineers fit in?
  • Computer science focusing on computer hardware
    and programming languages
  • Software engineering focusing on computer as a
    problem-solving tool
  • Relationship between
    computer science and
    software
    engineering

27
What is the difference between softwareengineerin
g and system engineering?
  • System engineering is concerned with all aspects
    of computer-based systems development including
    hardware, software and process engineering.
    Software engineering is part of this process
    concerned with developing the software
    infrastructure, control, applications and
    databases in the system.
  • System engineers are involved in system
    specification, architectural design, integration
    and deployment.

28
Some Realities of Software Engineering
  • a concerted effort should be made to understand
    the problem before a software solution is
    developed
  • design becomes a pivotal activity
  • software should exhibit high quality
  • software should be maintainable

29
A Layered Technology
tools
methods
process model
a quality focus
Software Engineering
30
A Process Framework
  • Process framework
  • Framework activities applied iteratively as a
    project progresses
  • Communication
  • Planning
  • Modeling
  • Construction
  • Deployment
  • Umbrella Activities manage and control
    progress, quality, change and risk
  • Software project management
  • Formal technical reviews
  • Software quality assurance
  • Software configuration management
  • Work product preparation and production
  • Reusability management
  • Measurement
  • Risk management

31
What is a software process?
  • A set of activities whose goal is the development
    or evolution of software
  • Fundamental activities in all software processes
    are
  • Specification - what the system should do and its
    development constraints
  • Development - production of the software system
    (design and implementation)
  • Validation - checking that the software is what
    the customer wants
  • Evolution - changing the software in response to
    changing demands

32
What is a software process model?
  • Software Process Model is a simplified
    representation of a software process, presented
    from a specific perspective
  • Examples of process perspectives
  • Workflow perspective - represents inputs, outputs
    and dependencies
  • Data-flow perspective - represents data
    transformation activities
  • Role/action perspective - represents the
    roles/activities of the people involved in
    software process
  • Generic process models
  • Waterfall
  • Iterative development
  • Agile Development
  • Component-based software engineering

33
What are the costs of software engineering?
  • Roughly 60 of costs are development costs, 40
    are testing costs. For custom software, evolution
    costs often exceed development costs
  • Costs vary depending on the type of system being
    developed and the requirements of system
    attributes such as performance and system
    reliability
  • Distribution of costs depends on the development
    model that is used

34
Aspects of Software Engineering
  • Problem solving process as a team
  • Software products are large and complex
  • Development requires analysis and synthesis
  • Analysis decompose a large problem into smaller,
    understandable pieces
  • abstraction is the key
  • Synthesis build (compose) software from smaller
    building blocks
  • composition is challenging

35
Two aspects of Software EngineeringThe analysis
process
36
Two aspects of Software EngineeringThe
synthesis process
37
The Essence of Software Engineering Practice
  • Understand the problem (communication and
    analysis).
  • Plan a solution (modeling and software design).
  • Carry out the plan (code generation).
  • Examine the result for accuracy (testing and
    quality assurance).

38
Understand the Problem
  • Who has a stake in the solution to the problem?
    That is, who are the stakeholders?
  • What are the unknowns? What data, functions, and
    features are required to properly solve the
    problem?
  • Can the problem be compartmentalized? Is it
    possible to represent smaller problems that may
    be easier to understand?
  • Can the problem be represented graphically? Can
    an analysis model be created?

39
Plan the solution
  • Have you seen similar problems before? Are there
    patterns that are recognizable in a potential
    solution? Is there existing software that
    implements the data, functions, and features that
    are required?
  • Has a similar problem been solved? If so, are
    elements of the solution reusable?
  • Can subproblems be defined? If so, are solutions
    readily apparent for the subproblems?
  • Can you represent a solution in a manner that
    leads to effective implementation? Can a design
    model be created?

40
Carry out the plan
  • Does the solution conform to the plan? Is source
    code traceable to the design model?
  • Is each component part of the solution provably
    correct? Has the design and code been reviewed,
    or better, have correctness proofs been applied
    to algorithm?

41
Examine the Result
  • Is it possible to test each component part of the
    solution? Has a reasonable testing strategy been
    implemented?
  • Does the solution produce results that conform to
    the data, functions, and features that are
    required? Has the software been validated against
    all stakeholder requirements?

42
Who Does Software Engineering?
  • Participants (stakeholders) in a software
    development project

43
What does Software Engineer do?
  • Spend less than 10 of their time writing code
  • Other 90 of their time (partial list)
  • Eliciting requirements
  • Analyzing requirements
  • Writing software requirements documents
  • Building and analyzing prototypes
  • Developing software designs
  • Writing software design documents
  • Researching software engineering techniques or
    obtaining information about the application
    domain

44
What does Software Engineer do? (cont.)
  • Other 90 of their time (cont.)
  • Developing test strategies and test cases
  • Testing the software and recording the results
  • Isolating problems and solving them
  • Learning to use or installing and configuring new
    software and hardware tools
  • Writing documentation such as user manuals
  • Attending meetings with colleagues, customers,
    and supervisors
  • Archiving software and readying it for
    distribution

45
Members of the Development Team
  • Requirement analysts work with the customers to
    identify and document the requirements
  • Designers generate a system-level description of
    what the system us supposed to do
  • Programmers write lines of code to implement the
    design
  • Testers catch faults
  • Trainers show users how to use the system
  • Maintenance team fix faults that show up later
  • Librarians prepare and store documents such as
    software requirements
  • Configuration management team maintain
    correspondence among various artifacts

46
Members of the Development Team (cont.)
  • Typical roles played by the members of a
    development team

47
Why does Software Fail?
  • Software is too expensive
  • Software takes too long to build
  • Software quality is low
  • Software is too complex to support and maintain
  • Software does not age gracefully
  • Not enough highly-qualified people to design and
    build software

48
Software Cost
  • The cost of Change
  • Software projects often go over budget
  • Hurts the company and the customer
  • Bad for the project/company
  • Many projects are cancelled
  • People may get fired or may quit
  • Bad for the final product
  • Features are not implemented
  • Bad quality not enough money to get it right
  • Expensive in the long run

49
Software Time
  • Software projects often take too long
  • Loss of revenue and market share
  • Both for the vendor and for the client
  • E.g. baggage system at Denver airport
  • Cost 1 million per day
  • Projects may become obsolete
  • Technology changes rapidly
  • Competing products already on the market
  • Not enough time to implement all features and to
    ensure quality

50
Some Questions
  • Studies of IT projects by the Standish Group
  • 80000 applications
  • What percentage of projects were
  • What was the cost/time overrun?

Year 2009 Year 2006 Year 2004 Year 2002 Year 2000 Year 1998 Year 1996 Year 1994
Successful 32 35 29 34 28 26 27 16
Challenged 44 19 53 15 23 28 40 31
Failed 24 46 18 51 49 46 33 53
51
Success Rate
  • 2009/2010 Standish Chaos Report, Standish Group,
    indicating

52
Overruns and Deficiencies
  • Cost overruns 189 of original estimate
  • Time overruns 222 of original estimate
  • Feature deficiencies
  • only 61 of the originally
  • specified features were
  • implemented

53
Some ideas of Failure
  • The application doesnt work catastrophic
    failure
  • The delivery overruns the schedule
  • Project costs exceed budget
  • Insufficient functionality
  • Dissatisfied users
  • Poor performance
  • Lacks scalability
  • Fails to deliver an appropriate Return on
    Investment (ROI)

54
Some ideas for Challenged
  • Exceeds budget, but within manageable tolerances
  • Overruns, but within manageable tolerances
  • Non-essential functionality is defective
  • Non-essential functionality is missing
  • Flaws have workarounds
  • Fewer features and functions than originally
    specified

55
Why Projects Fail/Succeed?
  • The bottom 10 project failure factors
  • Incomplete requirements
  • Lack of user involvement
  • Lack of resources
  • Unrealistic expectations
  • Lack of executive support
  • Changing requirements and specifications
  • Lack of planning
  • Didnt need it any longer
  • Lack of it management
  • Technology illiteracy
  • The top 10 project success factors
  • User involvement
  • Executive management support
  • Clear statement of requirements
  • Proper planning
  • Realistic expectations
  • Smaller project milestones
  • Competent staff
  • Ownership
  • Clear vision objectives
  • Hard-working, focused staff

(Source Turning Chaos into Success,"
softwaremag.com, December 1999)
56
Software Quality
  • Software defects result in failures
  • Example 1 Windows crashes while you play a game
    at home
  • Example 2 The software that controls a nuclear
    reactor crashes
  • Direct loss of life and money
  • Millions of dollars
  • Indirect loss missed opportunities
  • e.g. online purchases are down for a day
  • Loss of credibility, bad publicity

57
Software Failures Examples
  • Therac-25 (1985-1987) six people overexposed
    during treatments for cancer
  • Taurus (1993) the planned automatic transaction
    settlement system for London Stock Exchange
    cancelled after five years of development
  • Ariane 5 (1996) rocket exploded soon after its
    launch due error conversion (64-bit floating
    point into 16-bit signed integer)
  • The Mars Climate Orbiter assumed to be lost by
    NASA officials (1999) different measurement
    systems (Imperial and metric)

58
Example Ariane 5
  • Ariane 5 rocket
  • Built by the European Space Agency
  • First launch June 1996
  • Crashed 40 seconds after launch
  • Cost 500 million
  • No people on board
  • Problem software failure

59
What Happened?
  • Overflow when velocity was converted from 64-bit
    floating point to 16-bit signed integer
  • The exception was not caught
  • Inertial Reference System failed
  • Backup system failed for the same reason
  • Rocket went off course
  • Self-destruct module (correctly) activated
  • The code was OK for Ariane 4
  • Same software, different environment

60
How Has Software Engineering Changed?
  • The key factors that have changed the software
    development (Wasserman's Seven Key Factors)

61
What are the key challenges facing software
engineering?
  • Software engineering in the 21st century faces
    three key challenges
  • 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

62
Software Myths
  • Affect managers, customers (and other
    non-technical stakeholders) and developers
  • Are believable because they often have elements
    of truth,
  • but
  • Invariably lead to bad decisions,
  • therefore
  • Insist on reality as you navigate your way
    through software engineering

63
Manager Myths
  • Management may be confident about good standards
    and clear procedures of the company.
  • But the taste of any food item is in the eating
    not in the Recipe!
  • Company has latest computers and state-of-the-art
    software tools, so we shouldnt worry about the
    quality of the product.
  • The infrastructure is only one of the several
    factors that determine the quality of the
    product!
  • Addition of more software specialists, those with
    higher skills and longer experience may bring the
    schedule back on the track!
  • Unfortunately, that may further delay the
    schedule!
  • Software is easy to change
  • The reality is totally different.
  • Computers provide greater reliability than the
    devices they replace
  • This is not always true.

64
Developer Myths
  • Once the software is demonstrated, the job is
    done.
  • Usually, the problems just begin!
  • Software quality can not be assessed before
    testing.
  • However, quality assessment techniques should be
    used through out the software development life
    cycle.
  • The only deliverable for a software development
    project is the tested code.
  • Tested code is only one of the deliverable!
  • Aim is to develop working programs
  • Those days are over. Now objective is to develop
    good quality maintainable programs!

65
Customer Myths
  • A general statement of objectives is sufficient
    to get started with the development of software.
    Missing/vague requirements can easily be
    incorporated/detailed out as they get
    concretized.
  • If we do so, we are heading towards a disaster.
  • Software with more features is better software
  • Software can work right the first time
  • Both are only myths!

66
Question Answer
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.
What are the attributes of good software? Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production.
What are the fundamental software engineering activities? Software specification, software development, software validation and software evolution.
What is the difference between software engineering and computer science? Computer science focuses on theory and fundamentals software engineering is concerned with the practicalities of developing and delivering useful software.
What is the difference between software engineering and system engineering? System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this more general process.
What are the key challenges facing software engineering? Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software.
What are the costs of software engineering? Roughly 60 of software costs are development costs, 40 are testing costs. For custom software, evolution costs often exceed development costs.
Write a Comment
User Comments (0)
About PowerShow.com