KEMBAR78
l1 Sep Introduction | PDF | Software | Software Engineering
0% found this document useful (0 votes)
64 views6 pages

l1 Sep Introduction

Uploaded by

Fact Hub
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)
64 views6 pages

l1 Sep Introduction

Uploaded by

Fact Hub
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/ 6

LECTURE ONE: INTRODUCTION TO SOFTWARE ENGINEERING PRINCIPLES

1.1 Introduction

Welcome to the first lecture on the fundamentals of Software Engineering. This lecture is
divided into two parts. We begin the first part by defining the terms software, software
engineering and defining the software attributes and explain what software engineers do. In the
second part we shall, introduce ethical and professional issues for software engineers, describe
the software crisis and the current trends in software engineering.

1.1 Specific Objectives

At the end of the lecture you should be able to:

1) Define Software , its attributes and general issues


2) Define Software Engineering and its fundamental activities
3) Distinguish between Software Engineering, Computer Science and System Engineering
4) Describe the software crisis issues
5) Identify the current trends in Software Engineering
6) Identify ethical and professional issues in Software engineering

1.1 Lecture One Part One Outline

1.1.1 Definition of Software , Software attributes and its general issues


1.1.2 Definition of Software Engineering and its fundamental activities
1.1.3 Distinction between Software Engineering, Computer Science and System Engineering

1.2 Definition of Software and Software attributes

1.2.1 What is software?


Software refers to computer programs and associated documentation such as requirements, design
models, test plans and user manuals. Software products may be developed for a particular customer
(bespoke software) or may be developed for a general market (generic software). New software can
be created by developing new programs, customising generic software systems and / or combining the
existing software. Software is usually divided into

a) application software which does the work users are directly interested in for example word-
processing

b) system software which includes operating systems and other programs that support the
application software
1.2.2 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. The software attributes can be explained as follows:

1) Maintainability: Software must evolve to meet changing customer needs

2) Dependability :Software must be trustworthy and reliable

3) Efficiency: Software should not make wasteful use of system resources. This includes system
responsiveness, processing time, memory utilization

4) Usability: Software must be usable by the users for which it was designed. Acceptable to the type of
users for which it is designed .Includes understandable, usable and compatible with other systems

1.2.3 General Issues

Some general issues that affect many different types of software:

1) Heterogeneity: systems are required to operate as distributed systems across networks and run on
general-purpose computers and mobile phones. Integrate new software with older legacy systems
written in different programming languages. The challenge is to develop techniques for building
dependable software flexible enough to cope with this heterogeneity.

2) Business and social change: Business and society are changing quickly thus requiring change in
their existing software and to rapidly develop new software. Many traditional software
engineering techniques are time consuming. They need to evolve to reduce time to adapt to
changing needs.

3) Security and trust: As software is intertwined with all aspects of our lives, we to trust the
software; especially for remote software systems accessed through a web page or web service
interface. We have to be sure malicious users cannot attack the software and that information
security is maintained.

1.3 Definition of Software Engineering and its sub disciplines

1.3.2 What is Software Engineering


Software engineering is the application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software. It applies both computer science and
engineering principles and practices to the creation, operation, and maintenance of software systems.
It is concern with the following:

1) Technical processes of software development
2) Software project management
3) Development of tools, methods and theories to support software production
4) Getting results of the required quality within the schedule and budget
5) Adopt a systematic and organized approach
6) Less formal development appropriate for the development of web-based systems
Software Engineering is important because:

1) Individuals and society rely on software systems


2) To produce reliable and trustworthy systems economically and quickly
3) It is cheaper in the long run to use software engineering methods and techniques for software
systems

1.3.3 Software engineering fundamental activities

The following activities are common to all software processes:

1) Software specification: customers and engineers define software that is to be produced and the
constraints on its operation
2) Software development: software is designed and programmed
3) Software validation: software is checked to ensure that it is what the customer requires
4) Software evolution: software is modified to reflect changing customer and market requirements

1.3.4 What do Software Engineer do?

Anyone can call themselves a software engineer, but not all programmers are software engineers (and not
all software engineers are programmers).Software engineers are responsible for the design, development,
testing and deployment of the computer software.

1.4 Distinction between Software Engineering, Computer Science and System Engineering
Software Engineering is related to computer science and systems engineering.
1) Computer science is concerned with the theories and methods that underlie computers and
software systems, whereas software engineering is concerned with the practical problems of
producing software.

2) System engineering is concerned with all aspects of the development and evolution of complex
systems where software plays a major role. System engineering is therefore concerned with
hardware development, policy and process design and system deployment, as well as software
engineering.
Lecture One Part Two Outline
1.1.4 Describe the software crisis issues
1.1.5 Identify the current trends in Software Engineering
1.1.6 Identify ethical and professional issues in Software engineering

1.5 The Software Crisis


The term ‘software engineering’ was first proposed in 1968 at a conference held to discuss the
problems being faced by software developers. This was then referred to as the ‘software crisis’.
It had became clear that individual approaches to program development did not deliver quality
large and complex software systems. The systems were unreliable, costly, and were delivered
late hence the software crisis. Throughout the 1970s and 1980s, a variety of new software
engineering techniques and methods were developed, such as structured programming,
information hiding and object-oriented development. Tools and standard notations were also
developed and are now extensively used.

1.6 The current trends in Software Engineering

The table below shows some of the current trends in software development.

September 7, 2010 COMS W4156 18

1.7 The ethical and professional issues in Software engineering

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. It involves the
following:
1. Confidentiality: Engineers should respect the confidentiality of their employers or clients
irrespective of whether or not a formal confidentiality agreement has been signed.

2. Competence : Engineers should not misrepresent their level of competence. They should not
knowingly accept work which is beyond their level of competence.

3. Intellectual property rights: Engineers should be aware the laws governing the use of intellectual
property such as patents and copyright They should be careful to ensure that the intellectual
property of employers and clients is protected.

4. Computer misuse: Software engineers should not use their technical skills to misuse other
people’s computers.

1.8 Activities

1. Identify problems and challenges that software engineering faces in the Kenyan environment

2. What are some of the professional IT societies? For each society you mention discuss their codes
of conduct.

3. Using the table provided in section 1.6 describe examples of software systems relating to each
trend

1.9 Self – Test Questions

1) Explain why professional software is not just the software programs that are developed for a
customer.
2) What led to the software crisis?
3) Differentiate between the terms Software Engineering, Computer Science and System
Engineering
4) Identify the four important attributes that all professional software should have.
1.10 Summary
Software engineering is an engineering discipline that is concerned with all aspects of software
Development

Software includes the program and its documentation.

Important software product attributes include maintainability, dependability, security, efficiency, and
acceptability.

Some general issues that affect many different types of software are heterogeneity, business and
social change, security and trust.

The fundamental activities of software engineering are software specification , software development,
software validation and software evolution. These activities are universally applicable to all types of
system development.

Software engineers are responsible for the design, development, testing and deployment of the
computer software.

Software engineers have responsibilities to the engineering profession and society. They should
not only be concerned with technical issues.

Professional societies publish codes of conduct that set out the standards of behavior expected
of their members.

You might also like