Virtual Environments and Human Depth Perception
Download
Report
Transcript Virtual Environments and Human Depth Perception
Software Engineering
Introduction (The Product)
James Gain
([email protected])
Objectives
To explain the nature of software
To debunk some widely held myths about software
To introduce ethical and professional issues and to
explain why they are of concern to software
engineers
To give an overview of the Software Engineering
practical component
The Nature of Software
Software is a set of items or objects that form a
“configuration” that includes:
Programs
Documents
Data
Software products may be developed for a particular
customer (bespoke) or for a general market (generic)
Software Characteristics:
Software is developed or engineered, rather than being
manufactured
Although the industry is moving toward component-based
assembly, most software continues to be custom built.
Software doesn’t wear out
Software is complex
The Life of Software
Beyond the Ivory Tower
Real software projects are not like practical
exercises at university:
The real world:
People can be bankrupted and even die (with safety
critical systems) if your software fails
You must almost always work within a team
Poor performance means losing your job (not just a
poor mark)
You are part of a larger environment of customers, team
members, and managemers
The cost, complexity and time span of software projects
are much larger.
Software Applications
Approaches to developing software depend on the
application:
System software
Real-time software
Business software
Engineering and scientific software
Embedded software
Personal computer software
Web-based software
Software Poses Challenges
The economies of ALL developed nations are
dependent on software
More and more systems are software controlled
There are several challenges in the meetings these
demands:
How do we ensure the quality of the software that we produce?
How do we meet growing demand and still maintain budget
control?
How do we upgrade an aging “software plant” (deal with legacy
systems)?
How do we avoid disastrous time delays?
How do we successfully institute new software technologies?
Software Costs
Software costs often dominate system costs. The
costs of software on a PC are often greater than
the hardware cost
Software costs more to maintain than it does to
develop. For systems with a long life, maintenance
costs may be several times development costs
Software engineering is concerned with costeffective software development
Software Quality
The software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable
Maintainability
Software must evolve to meet changing needs
Dependability
Software must be reliable
Efficiency
Software should not make wasteful use of system resources
Usability
Software must be usable by the target users
Software engineering is concerned with producing quality
software.
Management Myths
Managers are under pressure, tend to grasp at
myths.
Myth: Having books full of standards is enough
Reality: Not unless they are used
Myth: Having the latest computers is enough
Reality: The right software (e.g. CASE) is more
important than the latest hardware
Myth: Mongolian Horde approach works
Reality: Adding people to a late software project
makes it later
Customer Myths
Myths held by customers often lead to false
expectations and, ultimately, dissatisfaction.
Myth: A general statement of objectives is sufficient
to start coding
Reality: A poor up-front definition is the major cause
of failed software
Myth: Changing requirements can be easily
accommodated because software is flexible
Reality: Impact depends on the lateness of the
change. Cost – during definition (1x), after release
(60-100x)
The Cost of Change
Practitioner Myths
Early attitudes to programming have become entrenched.
Myth: Once the program is written and it works our job is
done
Reality: 60-80% of effort occurs after software is first
delivered
Myth: The only deliverable work product for a successful
project is the working program
Reality: Software is only one component of a system
Myth: Software engineering produces piles of documents and
slows everything down.
Reality: Software is about creating quality not documents.
Better quality leads to reduced rework.
Professional and ethical responsibility
Software engineering involves wider
responsibilities than simply the application of
technical skills
Software engineers must behave in an honest and
ethically responsible way if they are to be respected
as professionals
Ethical behaviour is more than simply upholding
the law.
Issues of professional responsibility
Confidentiality
Engineers should normally respect the confidentiality of their
employers or clients irrespective of whether or not a formal
confidentiality agreement has been signed.
Competence
Engineers should not misrepresent their level of competence. They
should not knowingly accept work which is beyond their
competence.
Intellectual property rights
Engineers should be aware of local laws governing the use of
intellectual property such as patents, copyright, etc. They should be
careful to ensure that the intellectual property of employers and
clients is protected.
Issues of professional responsibility
Computer misuse
Software engineers should not use their technical skills
to misuse other people’s computers. Computer misuse
ranges from relatively trivial (game playing on an
employer’s machine, say) to extremely serious
(spreading of viruses).
The professional societies in the US (ACM/IEEE)
have cooperated to produce a code of ethical
practice. Members who join these societies sign up
to this code of conduct.
Ethical dilemmas
Sometimes ethical principles are in conflict
Examples:
Your employer acts in an unethical way and releases a
safety-critical system without finishing the testing of the
system
Participation in the development of military weapons
systems or nuclear systems
Software Engineering Project
1. User requirements (1 week)
Produce: 4-10 Use Case narratives and diagrams
Hand in: Wed 25/7 Return: Mon 30/7
2. Analysis (1.5 weeks)
Produce: Requirements Specification
Hand in: Fri 3/8 Return: Tue 7/8
3. Design (2 weeks)
Produce: Class, Object, Message and Responsibility designs, a
Human Interface design and a test plan
Hand in: Fri 17/8 Return: Tue 21/8
4. Coding and Testing (5 weeks)
Produce: code and test results.
Final Hand in: Mon 1/10.