Sie sind auf Seite 1von 30

Week-4

Introduction to Software
Engineering

Slide 1
Objectives
● To introduce software products, software
engineering and to explain their importance
● To set out the answers to several key questions
about software engineering
● To introduce ethical (principled) and professional
issues (matters) and to explain why they are of
concern to software engineers

Slide 2
Software engineering
● The economies of all developed nations are
dependent on software
● More and more systems are software controlled
● Software engineering is concerned with theories,
methods and tools for professional software
development

Slide 3
History of Software Engineering
● Software engineering has evolved steadily from
its founding days in the 1940s until today in the
2000s.
● Applications have evolved continuously. The
ongoing goal to improve technologies and
practices, seeks to improve the productivity of
practitioners and the quality of applications to
users.

Slide 4
The Pioneering Era
● The most important development was that new computers were coming out
almost every year or two, rendering existing ones obsolete.
● Software people had to rewrite all their programs to run on these new
machines. Programmers did not have computers on their desks and had to go to
the "machine room".
● Jobs were run by putting punched cards for input into the machine's card
reader and waiting for results to come back on the printer.
● The field was so new that the idea of management by schedule was non-
existent. Making predictions of a project's completion date was almost
impossible.
● Computer hardware was application-specific. Scientific and business tasks
needed different machines. Due to the need to frequently translate old software
to meet the needs of new machines, high-order languages like FORTRAN and
COBOL etc were developed.
● Hardware vendors gave away systems software for free as hardware could not
be sold without software.
● A few companies sold the service of building custom software but no software
companies were selling packaged software. The notion of reuse flourished.
● As software was free, user organizations commonly gave it away. Groups like
IBM's scientific user group SHARE offered catalogs of reusable components.

Slide 5
1945 to 1965: The origins
● The term software engineering first appeared in the late
1950s and early 1960s.
● Programmers have always known about civil, electrical,
and computer engineering and debated what engineering
might mean for software.
● The NATO Science Committee sponsored two
conferences on software engineering in 1968 and 1969 in
Germany, which gave the field its initial boost.
● Many believe these conferences marked the official start
of the profession of software engineering.

Slide 6
1965 to 1985: The software crisis
● Software engineering was provoked (inflamed) by the so-
called software crisis of the 1960s, 1970s, and 1980s,
which identified many of the problems of software
development.
● Many software projects ran over budget and schedule.
Some projects caused property damage. A few projects
caused loss of life.
● The software crisis was originally defined in terms of
productivity, but evolved to emphasize quality.
● Some used the term software crisis to refer to
organization inability to hire enough qualified
programmers.

Slide 7
1965 to 1985: The software crisis
(cont)
● Cost and Budget Overruns: The OS/360 operating
system was a classic example. This decade-long project
from the 1960s eventually produced one of the most
complex software systems at the time. OS/360 was one of
the first large (1000 programmers) software projects.
• Property Damage: Software defects can cause property
damage. Poor software security allows hackers to steal
identities, costing time, money, and reputations.
● Life and Death: Software defects can kill. Some
embedded systems used in radiotherapy machines failed
so catastrophically that they administered lethal doses of
radiation to patients.

Slide 8
1985 to 1989: No silver bullet
● For decades, solving the software crisis was
dominant to researchers and companies
producing software tools.
● Seemingly, they announced and boost every new
technology and practice from the 1970s to the
1990s as a silver bullet to solve the software
crisis.

Slide 9
1985 to 1989: No silver bullet (cont)
● Tools, discipline, formal methods, process, and professionalism were touted
(plug) as silver bullets:
● Tools: Especially emphasized were tools: Structured programming, object-
oriented programming, CASE tools, Java, documentation, and standards
were touted as silver bullets.
● Discipline: Some experts argued that the software crisis was due to the lack
of discipline of programmers.
● Formal methods: Some believed that if formal engineering methodologies
would be applied to software development, then production of software
would become as predictable an industry as other branches of engineering.
They advocated proving all programs correct.
● Process: Many advocated the use of defined processes and methodologies
like the Capability Maturity Model.
● Professionalism: This led to work on a code of ethics, licenses, and
professionalism.

Slide 10
1990 to 1999: Prominence of the
Internet
● The rise of the Internet led to very rapid growth in the demand for international
information display/e-mail systems on the world wide web. Programmers were
required to handle illustrations, maps, photographs, and other images, plus simple
animation, at a rate never before seen, with few well-known methods to optimize image
display/storage (such as the use of thumbnail images).
● The growth of browser usage, running on the HTML language, changed the way in
which information-display and retrieval was organized.
● The wide-spread network connections led to the growth and prevention of international
computer viruses on MS Windows computers, and the vast explosion of spam e-mail
became a major design issue in e-mail systems, flooding communication channels and
requiring semi-automated pre-screening.
● Keyword-search systems evolved into web-based search engines, and many software
systems had to be re-designed, for international searching, depending on Search Engine
Optimization (SEO) techniques.
● Human natural-language translation systems were needed to attempt to translate the
information flow in multiple foreign languages, with many software systems being
designed for multi-language usage, based on design concepts from human translators.
Typical computer-user bases went from hundreds, or thousands of users, to, often,
many-millions of international users.

Slide 11
2000 to Present: Lightweight
Methodologies
● With the expanding demand for software in many smaller organizations,
the need for inexpensive software solutions led to the growth of simpler,
faster methodologies that developed running software, from requirements
to deployment, quicker & easier.
● The use of rapid-prototyping evolved to entire lightweight methodologies,
such as Extreme Programming (XP), which attempted to simplify many
areas of software engineering, including requirements gathering and
reliability testing for the growing, vast number of small software systems.
● Very large software systems still used heavily-documented
methodologies, with many volumes in the documentation set; however,
smaller systems had a simpler, faster alternative approach to managing the
development and maintenance of software calculations and algorithms,
information storage/retrieval and display.

Slide 12
Prominent Figures in the History of
Software Engineering
● Ken Thompson (inventor of Unix)
● Dennis Ritchie (inventor of C)
● Brian Kernighan (co-author of the first book on the C programming language
with Dennis Ritchie, coauthor of the AWK and AMPL programming
languages)
● Bill Joy (inventor of vi, early author of BSD Unix, and originator of SunOS,
which became Solaris)
● Anders Hejlsberg (developer of Turbo Pascal)
● John Von Neumann (originator of the operating system concept)
● John Backus (inventor of Fortran)
● Bjarne Stroustrup (developer of C++)
● Alan Kay (pioneering work on object-oriented programming: Originator of
Smalltalk)
● James Gosling (developer of Oak, the precursor of Java)
● Alan Cooper (developer of Visual Basic)
● Tony Williams (co-inventor of COM - interesting interview)

Slide 13
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 cost-
effective software development

Slide 14
What is software?
● Computer programs and associated
documentation (plus configuration data and user
training)

Software products may be developed for a particular


customer or developed for a general market
• Generic (general) - developed to be sold to a range of different
customers
• Bespoke (custom-built) - developed for a single customer
according to their specification

Slide 15
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
• Software must be trustworthy
● Efficiency
• Software should not make wasteful use of system resources
● Usability
• Software must be usable by the users for which it was designed

Slide 16
...attributes of good software
(these two are not always required)
● Robustness
• Software should fail only under extreme conditions
● Portability
• Should be possible to move from one environment to another

Slide 17
The software crisis
● Advances in hardware technologies made it possible
to build powerful computers
• This allowed building of more complex and powerful software
● Existing software development methodologies were
not capable of handling such large projects.
● Hence projects had many problems:
• Over budget
• Late delivery
• Requirements not met
• Poor usability

Slide 18
What is software engineering?
● Software engineering is an engineering discipline
which is concerned with all aspects of software
production (Sommerville, 2001).
● Software engineers should adopt a systematic and
organised approach to their work and use
appropriate tools and techniques depending on
the problem to be solved, the development
constraints and the resources available.

Slide 19
What is the difference between software
engineering and system engineering?
● System engineering is concerned with all aspects
of computer-based systems development
including hardware, software and process
engineering. Software engineering is part of this
process
● System engineers are involved in system
specification, architectural design, integration and
deployment

Slide 20
Why does a software engineer need to
understand system engineering aspects?
● Many software systems are part of a larger
system
● System engineering decisions have direct impacts
on software
● Many systems now have lots of software parts

Slide 21
What is a software process?
● A set of activities and associated results whose
goal is the development or evolution of a
software product
● Generic (general) activities in all software
processes are:
• Specification - what the system should do and its development
constraints
• Development - production of the software system
• Validation - checking that the software is what the customer
wants
• Evolution - changing the software in response to changing
demands

Slide 22
What are software engineering methods?
● Structured approaches to software development which
include system models, notations, rules, design advice and
process guidance
● Model descriptions
• Descriptions of graphical models which should be produced
● Rules
• Constraints applied to system models
● Recommendations
• Advice on good design practice
● Process guidance
• What activities to follow

Slide 23
What is CASE ?
(Computer-Aided Software Engineering)
● Software systems which are intended to provide
automated support for software process activities.
CASE systems are often used for method support
● 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

Slide 24
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

Slide 25
What are the key challenges facing
software engineering?
● Coping with legacy (old) systems, coping with
increasing diversity (variety) and coping with
demands for reduced delivery times
● 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

Slide 26
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 (moral, principled) responsible way if
they are to be respected as professionals.

Slide 27
Issues of professional responsibility
● Confidentiality
• Engineers should normally respect the confidentiality (privacy)
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
(capability). They should not knowingly accept work which is
outside their competence.

Slide 28
Issues of professional responsibility
● Intellectual property rights
• Engineers should be aware of local laws governing the use of
intellectual (scholar) property such as patents (exclusive rights),
copyright, etc. They should be careful to ensure that the
intellectual property of employers and clients is protected.
● 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 (dissemination (distribution) of
viruses).

Slide 29
Ethical dilemmas
● Disagreement in principle with the policies of
senior management
● 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 and leaking
out confidential information to the others.

Slide 30

Das könnte Ihnen auch gefallen