Title: OOSE web page this is where your notes are:
1Introduction
- Welcome!
- OOSE web page - this is where your notes are
- http//gawain.soc.staffs.ac.uk/modules/levelm/oos
e/oose.htm - 12 week module - 2 hrs a week contact 2 hours
blended - Module team Ritchie and myself
- We are particularly interested in equipping and
selling all of you with doing OO software
engineering (SE) skills within the learning
outcomes of the module descriptor
2What is the module about?
- As you can see from the schedule this is a
practical module - New skills (see next slide)
- It must be underpinned with background reading
and wider SE practice where directed - As always we only have 12 weeks and so do not get
overwhelmed by the subject matter
3Skills include
- A summary of the software engineering skills to
impart to you- - How to program using OO software engineering
techniques - OO Web development skills
- Awareness and use of object oriented methods
(UML) - Database integration
- Good practice
4In context
- Other aspects of software engineering are covered
by other modules - Project management/Systems Analysis/Communications
/Computer hardware and software - All the above topics come under the umbrella of
software engineering - can seem confusing until you realise that
software engineering involves a set of stages and
tools
5Reference books
- Discuss refer to module pages
- Traditional SE books
- OO books
- UML books
- JSP books
6SE scope
- We need to understand what software engineering
is and how it came about - Why use it?
- How to use it - the lifecycles
- Improvements
- Future of software engineering
7What is SE?
- An approach to software development to embody the
same discipline and rigor found in the
engineering world - Advantages include
- Speed/productivity
- Re-use
- Measurable
8History 1
- The software crisis, recognised C1969. -
threatened the progress of the computer industry - People-time was and still is relatively
expensive, machine-time is cheap. - Programming was and still is very time intensive.
- Products need support - this is probably more
than ever - Software is complex imagine creating a car with
no drawings, specifications or planning. - Software lives it somewhat erodes with age
9Trends as at 2007ltdiscussgt
- The price of computer hardware is still falling
fast. - The cost of computer software is still high
- More and more products are incorporating
microprocessors (and thus software),e.g car
engines, cameras, TV sets and mobile phones - Tens of millions of personal computers are in
use, often in strategic roles.
10Trends as at 2007
- Personal, corporate, national and international
economies are increasingly dependent on computers
and their software. - Some commercial software is still written in old
COBOL (and new Object Cobol!) and has been
modified and patched by generations of engineers - Some of our most complex feats of engineering are
computer programs.
11Programming programming Development
- Programming is much more than just writing code.
- Programming involves (at least) the following
activities- - Problem analysis,
- Planning,
- Code and interface design,
- Coding, Debugging and Testing,
- Documenting each activity.
- Do you all agree?
12And incorporates documentation
- Documentation is more than just a listing of the
finished program. - Documentation involves all of the following-
- Records of the analysis of the problem,
- The time resource plan,
- Technical and User documents,
- Records of all bugs and bug fixes,
- Records of test input and output.
13The people aspect
- IT personnel now expected to have skills which
are in the top eleven demanded - 1. SQL (up 16)2. C (28)3. Office
(8)4. Java (11)5. C
(10)6. Oracle (1)7. Unix
(-3)8. SQL Server (21)9. .NET
(28)10. C (52)11. Visual Basic (4) - Different roles with a software development
project - People may join or leave a development team.
14Software Development Lifecycles.
- Software engineering helps to co-ordinate the
team so that they are on the same page - How does it help?
- Lifecycles
- Automation of tasks
- Since the software crisis of the 70s, software
developers have been looking for a solution - to increase programmer productivity
- to increase the quality of software
- to decrease software production costs
- Why? Because industry (the users) were fed up
waiting for software and because it was costly
15Software DevelopmentLife Cycle(SDLC) - Classical
- Software Engineering has identified several
classical life cycles with different
complexities, different aims and different
outcomes. - Its up to you which one you choose and can of
course be a combination of more than one - SDLCs include (see tutorial session for links)
- Cyclic
- Waterfall/Cascade
- Evolutionary
- V
- DSDM
16Nature of SDLCs
- All life cycles describe a process that you use
to produce software - They are practical and are worth employing?
ltdiscussgt - You need to have some understanding of all of
them - They all have common features - stages
- Systems Analysis and Design or Requirements
engineering module typically involves a couple of
stages in the software development life cycle
17Cyclic
- Cyclic features
- Easy to use
- Useful for bespoke/one off systems with no
maintenance - No definitive start or finish to the process
- Includes a recognition of management involvement
- Can be difficult to control
18Cyclic
Idea for a project or product
Contract for a Project
Concepts/ Feasibility
Requirements/ Specification
Management yes/no
Next version
Design and Code
Testing and Acceptance
Maintenance
19Waterfall
- One of the most famous SDLCs - a waterfall
because the stages of the lifecycle follow the
premise of one stage following another - Still shows a somewhat cyclic nature to software
development. - Shows the possibility of rework.
- Includes maintenance as a vital part of the
cycle. - No inbuilt control or management recognition (a
weakness)
20SDLC (waterfall)
System/Software Requirements
Analysis
Design
Code
Test
Release
Maintenance
21Evo
- The Evolutionary life cycle is quite different
from most other cycles. - Tom Gilb is credited with this SDLC
- Its main principle is that of the surrounding
environment and therefore the requirements
continually change!/evolve - Therefore an SDLC must reflect this position
- Evo produces many small steps/ products towards
an overall goal. - It is VERY difficult to control.
- Many people argue that it is the ONLY way to
achieve a quality product
22Evo
- Evos guiding principles are -
- Deliver something to a real end-user
- Measure the added-value to the user in all
critical dimensions - Adjust both design and objectives based on
observed realities.
23Evo
Evolutionary Life Cycle.
initial objectives
revised course towards new objectives
heading towards initial objectives
useful delivery to user steps
changed objectives
24V
- The V life cycle is an extension of the
waterfall life cycle. - It includes elements of Quality Assurance at
every stage. - Looks at the whole of the project
- No obvious management, but inbuilt control
through QA.
25V
Maintenance
Requirements Acceptance Test
Analysis System Test
High level Design
Integration Test
Low level Design
Module Test
Code Unit Test
V Life Cycle
26DSDM
- Based on RAD
- Definition
- DSDM.org
27Object-Oriented Methodology
- Object oriented technology is based on a few
simple concepts that, when combined, produce
significant improvements in software engineering. - Everything IT is now object based ltdiscussgt
- Unfortunately, the basic concepts of the
technology often get lost in the excitement of
advanced features and advantageous features. - The basic characteristics of the OOM follow but
are only meant as being introductory - It is interesting that the release of Office 2007
is built on entirely OO principles
28Object-Oriented Technology
- Characteristics cornerstones of Object Oriented
Technology - Identity
- Classification
- Polymorphism
- Inheritance
- We will be using the Unified Modelling Language
(UML) to follow on own methodology through the
module schedule - More about UML next week
29Identify modelling
- The term Object Oriented means that we organise
the software as a collection of discrete objects. - An object is a software package that contains the
related data and the procedures. - Although objects can be used for any purpose,
they are most frequently used to represent
real-world objects - ..such as products, customers and sales orders.
- The basic idea is to define software objects that
can interact with each other just as their real
world counterparts do, modelling the way a system
works and providing a natural foundation for
building systems to manage that business.
30Classification
- In principle, packaging data and procedures
together makes perfect sense. In practice, it
raises an awkward problem. - Suppose we have many objects of the same general
type- for example a thousand product objects,
each of which could report its current price. Any
data these objects contained could easily be
unique for each object. - Stock number, price, storage dimensions, stock on
hand, reorder quantity, etc would differ from one
product to the next. - But the methods for dealing with these data might
well be the same. Do we have to copy these
methods and duplicate them in every object? - No, this would be ridiculously inefficient.
- All object-oriented languages provide a simple
way of capturing these commonalties in a single
place. - That place is called a class. The class acts as a
kind of template for objects of similar nature.
31Polymorphism
- Polymorphism is a Greek word meaning (many
forms). - It is used to express the fact that the same
message can be sent to many different objects and
interpreted in different ways by each object. - For example, we could send the message "move" to
many different kinds of objects. They would all
respond to the same message, but they might do so
in very different ways. - E.g. The move operation will behave differently
for a window and differently for a chess piece.
32Inheritance
- Inheritance is the sharing of attributes and
operations among classes on a hierarchical
relationship. - A class can be defined as a generalized form and
then it specialized in a subclass. - Each subclass inherits all the properties of its
superclass and adds its own properties in it. - For example, a car and a bicycle are subclasses
of a class road vehicle, as they both inherits
all the qualities of a road vehicle and add their
own properties to it.
33Object Oriented Methodology
- By utilising object technology, a wide-range of
applications can be engineered - The aim is to produce a system that is
- robust
- easy to maintain and structured
- easy to understand hopefully!
- OOM itself is a framework by which to create
these systems. - A variety of steps can be taken to achieve these
aims. Youll be using some yourselves from next
week - Use Cases, Class Diagrams, Sequence diagrams etc
34Conclusion
- Software Development life cycles describe the
process used to produce software. - Questions to always ask
- What does it achieve?
- What doesnt it achieve?
- How could you alter it to be better?
35Insight ability to reflect
- You must identify your life cycle.
- You must identify the requirements for your life
cycle - You should look at possible ways to improve it.
- Question - Should there be one life cycle for
the team/project? - What are the benefits and problems of such a
suggestion? - What are you going to do about it?
- Anecdotes from JCW
36Conclusion contd
- As we have discussed - some of the life cycles
dont include recognition of project management
and control - Project management and control is CRUCIAL and you
will find in industry/books reference being made
to the Project Development Life Cycle(PDLC) - The SDLC fits inside a PDLC - it is the life
cycle for the software development part of the
project(of course that may be the whole of the
project)
37The complete software developer?
- A Software Engineer!
- SE includes both technical and non-technical
elements, so software engineers must be able to
communicate well, both orally and in writing. - They must have a thorough knowledge of computer
systems and must understand the importance of
project management, user feedback, documentation
and quality control - So easy .!!!
38The future
- SE still relevant in 2007 as in 1970
- Tools have changed and will continue to do so
- CASE tools have had limited success - specialised
tools tend to be used for each stage - Modelling, Design, Testing, Optimisation etc.
- UML is interesting as it is universal
- New set of challenges have appeared in the latter
part of the 1990s - web development we will
look at this later on in the module when we cover
JSP - Requirements capture as important as ever for the
success of a project.this has not changed in
being still the area most prone to getting it
wrong - Still evidence of projects failing however..why?
ltdiscussgt