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
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
What is software engineering?
Software engineering is an engineering discipline which is
concerned with all aspects of software production
Software engineering is the establishment and use of sound
engineering principles in order to obtain economically
software that is reliable and works efficiently on real
machines.
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
Why Software Engineering?
Software development is hard !
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
Why Software Engineering ?
The problem is complexity
Many sources, but size is key:
UNIX contains 4 million lines of code
Windows 2000 contains 108 lines of code
Software engineering is about managing
this complexity.
What is the difference between software
engineering and computer science?
Computer Science Software Engineering
is concerned with
theory the practicalities of developing
fundamentals delivering useful software
Algorithms, date structures, complexity SE deals with practical problems in
theory, numerical methods complex software products
Computer science theories are currently insufficient to act as
a complete underpinning for software engineering, BUT it is
a foundation for practical aspects of software engineering
SE History
SE introduced first in 1968 – conference about
“software crisis” when the introduction of third
generation computer hardware led more complex
software systems then before
Early approaches based on informal methodologies
leading to
Delays in software delivery
Higher costs than initially estimated
Unreliable, difficult to maintain software
Need for new methods and techniques to manage
the production of complex software.
Software myths
Management myths
Standards and procedures for building software
Add more programmers if behind the schedule
Customer myths
A general description of objectives enough to start coding
Requirements may change as the software is flexible
Practitioner myths
Task accomplished when the program works
Quality assessment when the program is running
Working program the only project deliverable
Software failures
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): roket exploded soon after its launch
due error conversion (16 floating point into 16-bit
integer)
Professional Responsibility
•Organizations put trust in software developers:
• Competence: Software that does not work effectively can
destroy an organization.
• Confidentiality: Software developers and systems
administrators may have access to highly confidential
information (e.g., trade secrets, personal data).
• Legal environment: Software exists in a complex legal
environment (e.g., intellectual property, obscenity).
• Acceptable use and misuse: Computer abuse can paralyze
an organization (e.g., the Internet worm).
Software engineers shall commit themselves to :-
making the analysis,
specification,
design,
development,
testing
maintenance of software a beneficial and respected profession..
In accordance with their commitment to the health, safety and
welfare of the public, software engineers shall adhere to the
following Eight Principles:
1. PUBLIC: Software engineers shall act consistently with the
public interest.
2. CLIENT AND EMPLOYER: Software engineers shall act in a
manner that is in the best interests of their client and employer
consistent with the public interest.
3. PRODUCT: Software engineers shall ensure that their products
and related modifications meet the highest professional standards
possible.
4. JUDGMENT: Software engineers shall maintain integrity and
independence in their professional judgment.
5. MANAGEMENT: Software engineering managers and leaders
shall subscribe to and promote an ethical approach to the
management of software development and maintenance.
6. PROFESSION: Software engineers shall advance the integrity
and reputation of the profession consistent with the public interest.
7. COLLEAGUES: Software engineers shall be fair to and
supportive of their colleagues.
8. SELF: Software engineers shall participate in lifelong learning
regarding the practice of their profession and shall promote an
ethical approach to the practice of the profession
However …
Important progress:
Ability to produce more complex software has
increased
New technologies have led to new SE approaches
A better understanding of the activities involved in
software development
Effective methods to specify, design and implement
software have been developed
New notations and tools have been produced
In order to build software that is ready to meet
the challenges of the twenty-first century, you
must recognize a few simple realities:
A concerted effort should be made to understand the
problem before a software solution is developed.
Design is a pivotal activity in developing software
Software should exhibit high quality.
Software should be maintainable
What are the best software engineering techniques
and methods?
While all software projects have to be professionally
managed and developed, different techniques are
appropriate for different types of system. For example, games
should always be developed using a series of prototypes
whereas safety critical control systems require a complete
and analyzable specification to be developed. You can’t,
therefore, say that one method is better than another.
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
What is CASE ?
(Computer-Aided Software Engineering)
Software systems which are intended to provide
automated support for software process activities, such as
requirements analysis, system modelling, debugging and
testing
Upper-CASE
Tools to support the early process
activities of requirements and design
Lower-CASE
Tools to support later activities such as programming,
debugging and testing
Software engineering principles use two important
techniques to reduce problem complexity:
Abstraction
The principle of abstraction implies that a problem can be
simplified by omitting irrelevant details.
Decomposition.
In this technique, a complex problem is divided into several
smaller problems and then the smaller problems are solved
one by one.
Software Engineering, COMP201 Slide 19
NEED OF SOFTWARE ENGINEERING
The need of software engineering arises because of higher
rate of change in user requirements and environment on
which the software is working.
Large software.
Scalability.
Cost.
Dynamic Nature.
Quality Management.
Software Engineering, COMP201 Slide 20
CHARACTERESTICS OF GOOD
SOFTWARE
A software product can be judged by what it offers and how
well it can be used. This software must satisfy on the
following grounds:
Operational
Transitional
Maintenance
Software Engineering, COMP201 Slide 21
Operational
This tells us how well software works in operations. It can be
measured on:
Budget
Usability
Efficiency
Correctness
Functionality
Dependability
Security
Safety Software Engineering, COMP201 Slide 22
Transitional
This aspect is important when the software is moved from
one platform to another:
Portability
Interoperability
Reusability
Adaptability
Software Engineering, COMP201 Slide 23
Maintenance
This aspect briefs about how well a software has the
capabilities to maintain itself in the ever-changing
environment:
Modularity
Maintainability
Flexibility
Scalability
Software Engineering, COMP201 Slide 24
What are the attributes of good
software?
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 & Security
Software must be trustworthy
Efficiency
Software should not make wasteful use of system resources
Usability & Acceptability
Software must be usable by the users for which it was designed
Software must be acceptable to the type of users for which it is designed.
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
Software engineering diversity
Stand-alone applications
Interactive transaction-based applications
Embedded control systems
Batch processing systems
Entertainment systems
Systems for modeling and simulation
Data collection systems
Software engineering ethics
Software engineering is carried out within a social and legal
framework that limits the freedom of people working in it
e.g.
Confidentiality You should normally respect the
confidentiality of your employers or clients irrespective of
whether or not a formal confidentiality agreemen has been
signed.
2. Competence You should not misrepresent your level of
competence. You should not knowingly accept work that is
outside your competence.
Ethics cont….
3. Intellectual property rights You should be aware of local
laws governing the use of intellectual property such as
patents and copyright. You should be careful to ensure that
the intellectual property of employers and clients is
protected.
4. Computer misuse You should not use your technical skills
to misuse other people’s computers.
Today’s task
Make a list of Software myths and state the
reality that accompanies the myth.
End!!!!!!