KEMBAR78
Lecture 1 - Introduction | PDF | Software | Engineering
0% found this document useful (0 votes)
5 views30 pages

Lecture 1 - Introduction

introduction to software engineering

Uploaded by

pitilosibrian
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views30 pages

Lecture 1 - Introduction

introduction to software engineering

Uploaded by

pitilosibrian
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

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!!!!!!

You might also like