Sie sind auf Seite 1von 19

Software Engineering

An introduction
February 2019 2

 The art of converting a mathematical or scientific


concept into an engine
 An engine is a device that takes some input and
converts into output. The engine is thus a mapping or
conversion process
 2 as input is converted to 4, The process is squaring

Engineering  Fuel as input is converted to mechanical motion, process


is combustion

Software Engineering a Review


February 2019 3

 Generic products
 Stand-alone systems that are marketed and sold to any customer who
wishes to buy them.
 Examples – PC software such as graphics programs, project
management tools; CAD software; software for specific markets such as
appointments systems for dentists.
 The specification of what the software should do is owned by the

Software
software developer and decisions on software change are made by the
developer.

Products  Customized products


 Software that is commissioned by a specific customer to meet their
own needs.
 Examples – embedded control systems, air traffic control software,
traffic monitoring systems.
 The specification of what the software should do is owned by the
customer for the software and they make decisions on software
changes that are required.

Software Engineering a Review


February 2019 4

Software engineering is an engineering


discipline that is concerned with all
aspects of software production from
the early stages of system specification
Software through to maintaining the system after
Engineering it has gone into use.
 Not just technical process of development.
 Also project management and the
development of tools, methods etc. to
support software production.
Software Engineering a Review
Software Engineering a Review 5

 Software specification: where customers and engineers


define the software that is to be produced and the
constraints on its operation.

Software  Software development: where the software is designed


and programmed.
Process  Software validation: where the software is checked to
Activities ensure that it is what the customer requires.
 Software evolution: where the software is modified to
reflect changing customer and market requirements.

February 2019
February 2019 6

 Cost: $10 Billion, millions of dollars more than planned


 Time: 3 years late
 Quality: First launch of Columbia was cancelled
because of a synchronization problem with the Shuttle's
Software Production 5 onboard computers.
has a Poor Track  Error was traced back to a change made 2 years earlier
Record when a programmer changed a delay factor in an interrupt
Example: Space Shuttle handler from 50 to 80 milliseconds.
Software  The likelihood of the error was small enough, that the
error caused no harm during thousands of hours of
testing.

 Substantial errors still exist.

Software Engineering a Review


February 2019 7

 Analysis: Understand the nature of the


Software problem and break the problem into
Engineering: A pieces
Problem Solving  Synthesis: Put the pieces together into a
large structure
Activity

Software Engineering a Review


February 2019 8

 Computer Scientist
 Proves theorems about algorithms, designs languages, defines
knowledge representation schemes
 Has infinite time…

 Engineer
Scientist vs  Develops a solution for an application-specific problem for a
client
Engineer  Uses computers & languages, tools, techniques and methods

 Software Engineer
 Works in multiple application domains
 Has only 3 months...…while changes occurs in requirements and
available technology

Software Engineering a Review


February 2019 9

 Complexity:
 The system is so complex that no single programmer
can understand it anymore
 The introduction of one bug fix causes another bug
Factors affecting  Change:
the quality of a  As time goes on, the cost to implement a change will be
software system too high, and the system will then be unable to support its
intended task.
 This is true of all systems, independent of their application
domain or technological base.

Software Engineering a Review


February 2019 10

 The problem domain is difficult


Why are  The development process is very
software systems difficult to manage
so complex?  Software offers extreme flexibility

Software Engineering a Review


February 2019 11

Working With Objects


Classes and Objects

Software Engineering a Review


February 2019 12

 Class identification is crucial to object-oriented modelling

 Basic assumption:
1. We can find the classes for a new software system: We call
this Greenfield Engineering
2. We can identify the classes in an existing system: We call this
Reengineering
Class 3. We can create a class-based interface to any system: We call this
Interface Engineering
Identification  Why can we do this?
 Philosophy, science, experimental evidence

 What are the limitations? Depending on the purpose of the


system different objects might be found
 How can we identify the purpose of a system?

Software Engineering a Review


February 2019 13

What is this
Thing?

Software Engineering a Review


February 2019 14

 Why did we model the thing as “Briefcase”?


 Why did we not model it as a chair?
 What do we do if the SitOnIt() operation is
the most frequently used operation?
 The briefcase is only used for sitting on it. It
Questions is never opened nor closed.
 Is it a “Chair” or a “Briefcase”?
 How long shall we live with our modeling
mistake?

Software Engineering a Review


February 2019 15

 We got abstractions and decomposition


 This leads us to chunks (classes, objects) which we view
with object model

 Another way to deal with complexity is to provide


Hierarchy simple relationships between the chunks
 2 important hierarchies
 "Part of" hierarchy
 "Is-kind-of" hierarchy

Software Engineering a Review


February 2019 16

 Three ways to deal with complexity:


So where are  Abstraction
 Decomposition
we right now?  Hierarchy

Software Engineering a Review


February 2019 17

 A good software design solves a specific problem but is general


enough to address future problems (for example, changing
requirements)

 Experts do not solve every problem from first principles


 They reuse solutions that have worked for them in the past

Reusability  Goal for the software engineer:


 Design the software to be reusable across application domains and
designs

 How?
 Use design patterns and frameworks whenever possible

Software Engineering a Review


February 2019 18

 Design Pattern:
 A small set of classes that provide a template
solution to a recurring design problem
 Reusable design knowledge on a higher level than
Design Patterns data structures (link lists, binary trees, etc)
and  Framework:
Frameworks  A moderately large set of classes that collaborate
to carry out a set of responsibilities in an
application domain.
 Examples: User Interface Builder

Software Engineering a Review


February 2019 19

 Chess Master:
 Openings
 Middle games
 End games
 Writer
 Tragically Flawed Hero (Macbeth, Hamlet)

Patterns are  Romantic Novel


 User Manual

used by many  Architect


 Office Building
people  Commercial Building
 Private Home
 Software Engineer
 Composite Pattern: A collection of objects needs to be treated like a single object
 Adapter Pattern (Wrapper): Interface to an existing system
 Bridge Pattern: Interface to an existing system, but allow it to be extensible

Software Engineering a Review

Das könnte Ihnen auch gefallen