Software Engineering CPCS351 - PowerPoint PPT Presentation

Loading...

PPT – Software Engineering CPCS351 PowerPoint presentation | free to download - id: 60cac6-NGI4M



Loading


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation
Title:

Software Engineering CPCS351

Description:

... they usually have an educational background in business ... Managing the process Requirements and ... Software Projects Requirements and ... – PowerPoint PPT presentation

Number of Views:28
Avg rating:3.0/5.0
Date added: 25 June 2020
Slides: 26
Provided by: Mr121
Learn more at: http://www.kau.edu.sa
Category:

less

Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Software Engineering CPCS351


1
Software Engineering CPCS351
  • Dr. Mai Fadel

2
Software and Software Engineering
  • The software engineers job is to solve problems
    economically by developing high-quality software.

3
The Nature of Software
  • Similarly to mechanical engineers who design
    mechanical systems, software engineers design
    software systems.
  • Software differs from the types of artifacts
    produced by other types of engineers (how it
    affects s/w development)
  • Software is largely intangible
  • The mass-production of duplicate pieces of
    software is trivial
  • The software industry is labour intensive
  • It is all too easy for an inadequately trained
    software developer to create a piece of software
    that is difficult to understand and modify
  • Software is physically easy to modify
  • Software does not wear out with use

4
Software Crisis
  • Software crisis is the situation of software
    development in relationship with the expectation
    of the customers decades ago.
  • Much of existing software is relatively poor
    quality, and is steadily becoming worse
  • There is strong demand for new and changed
    software, which customers expect to be of high
    quality and to be produced rapidly
  • The result of the poor development process
  • Software engineers have not been able to live up
    to the expectations of their managers and
    customers
  • Many software are either never delivered, or are
    delivered late and over budget
  • Many software systems that are delivered are
    never put to use because they have so many
    problems
  • Other systems require major modification before
    they can be used

5
Software crisis- continued
  • The challenges of developing software systems
  • The complex nature of software
  • The laws of economics (customer demands)
  • The vagaries of human psychology
  • In the authors opinion the situation is still
    going on
  • Objective is to learn how to engineer software
    so that it meets expectations and doesnt
    contribute to the crisis

6
Types of Software and their Differences
  • Classification 1 of the types of software
  • Custom software developed to meet the specific
    needs of a particular customer and tends to be of
    little use to others. e.g. web sites, air-traffic
    control systems
  • Generic software/ (COTS)/ shrink-wrapped
    software is designed to be sold on the open
    market, to perform functions that many people
    need, and to run on general purpose computers.
    e.g. word processors, spreadsheets, web browsers,
    computer games.
  • Embedded software run specific hardware devices
    which are typically sold on the open market. e.g.
    washing machines, DVD players, and automobiles
  • It is possible to take generic software and
    customize it and vise versa.

condition in market Type of software
Highest number of copies in use Embedded S/W
Highest number of copies in use on general-purpose computers Generic S/W
What most developers work on Custom S/W
7
Types of Software and their Differences -continue
  • Classification 2 of the types of software
  • Real-time software
  • it has to react immediately (i.e. in real time)
    to stimuli from the environment (e.g. the pushing
    of a button, a signal from a sensor)
  • Responsiveness must always be guaranteed- safety
    is a key concern in their design
  • e.g. many of the embedded systems, custom systems
    that run industrial plants and telephone networks
  • Data processing software
  • is used to run businesses.
  • It performs functions such as recording sales,
    managing accounts, printing bills etc.
  • The design concern here is how to organize the
    data and provide useful information gathered to
    the users so they can perform their work
    effectively
  • Accuracy and security of data are of major
    concern
  • In traditional data processing tasks, data is
    gathered together in batches to be processed
    later.
  • Some software has both real-time and data
    processing aspects.

8
What is Software Engineering?
  • Software Development and software engineering
  • Definition software engineering is the process
    of solving customers problems by the systematic
    development and evolution of large, high-quality
    software systems within cost, time and other
    constraints
  • Solving customers problems
  • The goal of every software engineering project
  • It is important to recognize activities that are
    not consistent with this goal, such as adding
    unnecessary features.
  • Recognize situations when it would be most cost
    effective not to develop s/w at all, to develop
    simpler s/w or to purchase existing s/w.
  • Software engineers must understand how people do
    their work, and understand what impact any
    proposed software may have on its users
    productivity (communicating negotiating with
    people)

9
What is Software Engineering?-continue
  • Systematic development and evolution
  • Developing software by applying well-understood
    techniques in an organized and disciplined way.
  • Software engineering is a young field
  • There are many accepted practices that have been
    formally standardized by bodies such as IEEE, ISO
  • Ensuring that the maintenance and evolution of
    existing systems is done in a systematic way is
    an integral part of software engineering
  • Large, high-quality software systems
  • Large systems with many functions and components
    , and thousands lines of code are too complex,
  • difficult to understand, take too long to develop
    by one person, and challenging in dividing up the
    work among teams
  • Software engineering techniques are essential for
    large system, and may be useful for small systems
  • The end product must be of sufficient quality
    (there are techniques for improving quality and
    ensuring the product is of sufficient quality)

10
What is Software Engineering?-continue
  • Cost, time and other constraints
  • One of the essential characteristics of
    engineering is that you have to consider economic
    constraints as you try to solve each problem
  • There are 3 main economic constraints
  • Software engineers must ensure their systems can
    be produced within a limited budget and by a
    certain due date
  • Achieving this requires careful planning and
    sticking to the plan in a disciplined way, and
    creating a realistic plan in the first place
  • Why many software engineering projects fail to
    stick to the specified time and cost constraints?

11
Software Engineering as a Branch of the
Engineering Profession
  • People have talked about software engineering
    since 1968 when the term was coined at a NATO
    conference
  • Only since the mid-1990s has there been a shift
    towards recognizing software engineering as a
    distinct branch of the engineering profession
    (i.e. have a license to legally perform
    consulting or self-employed work)
  • How to obtain a license? Licensing agencies
  • Ensures sufficient engineering education
    experience
  • Accredits educational institutions
  • Licensed profession impose adherence to codes of
    ethics and taking responsibility for the produced
    work
  • Universities have been establishing academic
    programs that focus on software engineering
    (distinct from computer science or computer
    engineering)

12
Stakeholders in Software Engineering
  • Stakeholders are the people involved in a
    software engineering project (who are they and
    what do they look for in interacting with the
    software? Figure 1.1 page12)
  • Users people who will use the software. They
    will likely appreciate new software, but some may
    fear it would jeopardize their jobs
  • Customers/clients people who make the decisions
    about ordering and paying for the software. They
    may or may not be users.
  • Software Developers people who develop and
    maintain the software (such as software
    engineers). Special roles in a s/w engineering
    project include requirements specialists,
    database specialists, technical writers,
    configuration management specialists, etc.
  • Development Managers people who run the
    organization that is developing the software,
    they usually have an educational background in
    business administration.
  • In some cases, two, three or even all four of the
    stakeholders may be held by the same person

13
Software Quality
  • There is no single answer for the question what
    quality means? But the goal is to produce
    software with high quality
  • Attributes of software quality (what is its
    impact on the software? How to measure it? what
    to do to improve it?)
  • Software engineers try to balance the relative
    importance of these attributes towards the best
    overall quality
  • Usability, efficiency, reliability,
    maintainability, and reusability
  • The importance of these attributes varies from
    stakeholder to another and form system to system.
    (examples)
  • Often, software engineers improve one quality at
    the expense of another trade-offs
  • Good engineering practice sets objectives for
    quality that satisfies all stakeholders, and then
    designing the system to meet these objectives

14
Software Engineering Projects
  • S/w engineering work is normally divided into
    projects.
  • For small s/w systems there may be a single team
    of three or four developers working on the
    project
  • Evolutionary projects (those that involve
    modifying an existing system) corrective,
    adaptive, enhancement, re-engineering or
    perfective
  • Greenfield projects (those that involve starting
    to develop a system from scratch)
  • Projects that involve building on a framework or
    a set of existing components (those that involve
    building most of a new system from existing
    components, while developing new software only
    from missing details)

15
Evolutionary Projects
  • Most s/w projects are of this type- maintenance
  • For many people, maintenance implies keeping
    something running by simply fixing problems, but
    without adding significant new features
  • There is constant pressure from users and
    customers not only to fix problems but to make
    many other kinds of changes
  • Radical modifications/ evolution should be
    applied after several years of frequent changes
    resulting in software that barely resembles their
    original state

16
Types of Evolutionary Project
  • Corrective projects involve fixing defects
  • Adaptive projects involve changing the system in
    response to changes in the environment in which
    the software runs (a new version of Operating
    system, database, a new set of tax laws)
  • Enhancement projects involves adding new features
  • Re-engineering/ perfective projects involve
    changing the system internally so that it is more
    maintainable, without making significant changes
    that the user will notice
  • Most evolutionary projects involve more than one
    of the above
  • Legacy systems are software systems that require
    maintaining when a lot of the design information
    is missing

17
Greenfield Projects
  • Green projects are less common than evolutionary
  • Developers have a wider freedom to be creative
    about the design no constraints of design
    decisions errors made by predecessors
  • Take a lot of work to build

18
Projects that involve reusing design/ code
  • Starts with a framework or involves plugging
    together several components that are already
    developed and provide significant functionality
  • A framework is a software system especially
    designed to be reused in different projects, or
    in various products in product line. A framework
    contains important functionality, but must be
    adapted to handle the requirements of particular
    customers or products
  • e.g. framework for ticketing
  • Basic functionality for reserving and printing
    tickets
  • It can be used for theatres, cinema, sports
    events, a holiday package
  • e.g. of the use of components (gluing an
    accounting package and a package for tracking
    meetingsgt a product for a lawyers office to
    create bills for clients meetings)
  • Advantages
  • Benefit from software that has been shown to be
    reliable, since the framework is tested
  • Gives the freedom to innovate as with the case
    with Greenfield projects

19
Activities Common to Software Projects
  • Requirements and specification
  • Design
  • Modeling
  • Programming
  • Quality assurance
  • Deployment
  • Managing software configuration
  • Managing the process

20
Requirements and Specification
  • It is important to, first, understand the
    problems, the customers business environment,
    and the available technology which can be used to
    solve the problems
  • After that, meet with the customers and users to
    decide on a course of action that will solve the
    problems (development or modification)
  • Then decide in detail what facilitates the
    software should provide
  • Involved activities domain analysis, defining
    the problem, requirement gathering, requirement
    analysis, requirement specification (pp. 16-17)
  • Important principle of requirement is to separate
    the what from the how i.e. requirements
    from design and implementation

21
Design
  • Design is the process of deciding how the
    requirements should be implemented using the
    available technology
  • Some of the important activities during design
    system engineering, determining the software
    architecture, detailed designs, user interface
    design, etc.
  • For large systems, software engineers work on
    architectural design in conjunction with
    high-level requirements to effectively divide the
    system into subsystems
  • For small systems, requirement precede design to
    avoid re-doing the design if requirements change

22
Modeling
  • Modeling is the process of creating a
    representation of the domain or the software
  • Various modeling approaches can be used during
    both requirements analysis and design.
  • e.g. Use case, structural, and dynamic/
    behavioural modeling
  • Modeling can be performed visually, using
    diagrams, or else using semi-formal or formal
    languages that express the information in a
    systematically or mathematically.
  • e.g. UML with a semi-formal notation diagrams

23
Programming
  • It involves the translation of higher-level
    designs into particular programming languages
  • The final stage of design since it involves
    making decisions about the appropriate
    constructs, variable declarations, etc.
  • Programmers people who do higher-design
    activities and programming
  • Coders perform only programming with no design
  • Research is done on automating programming, e.g.
    code generators. However there will still be a
    need for manual programming

24
Quality Assurance (QA)
  • QA encompasses all the processes needed to ensure
    that the quality objectives discussed in Section
    1.5 are met
  • Occurs throughout the project
  • Involved activities reviews and inspection, and
    testing
  • Validation and Verification (V V)
  • Validation the process of determining whether
    the requirements will solve the customers
    problem
  • Verification the process of making sure the
    requirements have been adhered to

25
Other activities
  • Deployment involves distributing and installing
    the software and any other components of the
    system such as databases, special hardware, etc.
  • Managing software configurations involves
    identifying all the components that compose a
    software system, including files containing
    requirements, design, and source code.
  • Managing the Process managers lead the other
    activities, and undertake the following task
  • Estimating the cost of the system
  • Planning
  • Periodically Revising the expected estimates and
    planning
About PowerShow.com