Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
135 views

Chapter 1 Introduction To Software Engineering

This document provides an introduction to software engineering. It defines software engineering as the systematic application of engineering principles to software development. It discusses what software is, different types of software, characteristics of good software, and the importance of methods, processes, tools, and principles in software engineering. The document is copyrighted and requires approval for reproduction.

Uploaded by

Peter Koroma
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
135 views

Chapter 1 Introduction To Software Engineering

This document provides an introduction to software engineering. It defines software engineering as the systematic application of engineering principles to software development. It discusses what software is, different types of software, characteristics of good software, and the importance of methods, processes, tools, and principles in software engineering. The document is copyrighted and requires approval for reproduction.

Uploaded by

Peter Koroma
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 27

WEEK 1

Introduction to Software
Engineering
ALL RIGHTS RESERVED
No part of this document may be reproduced without written approval from Engineer Milton Mansaray
What is Software?

• “Software is a set of instructions to acquire inputs and to manipulate them


to produce the desired output in terms of functions and performance as
determined by the user of the software. It also include a set of documents,
such as the software manual , meant for users to understand the software
system.”

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Description of the Software
• A software is described by its capabilities:

– functions it executes

– the features it provides

– the facilities it offers

• Software written for University enrollment processing would have different


functions to process different types of programs from different semester.
The features for example, would be to handle enroll modules, drop modules
and deferment. The facilities could be printing of registered modules,
broadcasting notification by email and creating different kind of reports.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Classes of Software
• Software is classified into two classes:

• Generic Software:

– Designed for broad customer market whose requirements are very


common, fairly stable and well understood by the software engineer.
Example: office software, OS, adobe

• Customized Software:

– Developed for a customer where domain , environment and


requirements are being unique to that customer and cannot be satisfied
by generic products.

– Example: Limkokwing student and lecture portal

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
What is Good Software?
• Software has number of attributes which decide whether it is a good or
bad. The definition of a good software changes with the person who
evaluates it.

• The software is required by the customer, used by the end users of an


organization and developed by software engineer. Each one will evaluate
the different attributes differently in order to decide whether the software is
good.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
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

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Software - Characteristics
• Software has a dual role. It is a product, but also a vehicle for delivering a
product.

• Software is a logical rather than a physical system element.

• Software has characteristics that differ considerably from those of


hardware.

• Software doesn’t “wear out”.

• Many software can be built from existing engine / framework.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Types of Software
• System Software

– A collection of programs written to service other programs at system


level. For example, compiler, operating systems.

• Real-time Software

– Programs that monitor/analyze/control real world events as they occur.

• Business Software

– Programs that access, analyze and process business information.

• Engineering and Scientific Software

– Software using “number crunching” algorithms for different science and


applications. System simulation, computer-aided design.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Types of Software
• Embedded Software:

– Embedded software resides to control machines or devices that are not


typically thought of as computers. It is typically specialized for the
particular hardware that it runs on and has time and memory
constraints.

• Artificial Intelligence (AI) Software:

– Programs make use of AI techniques and methods to solve complex


problems. Active areas are expert systems, pattern recognition, games

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Types of Software
• Internet Software :

– Programs that support internet accesses and applications. For example,


search engine, browser, e-commerce software, authoring tools.

• Software Tools and CASE environment :

– Tools and programs that help the construction of application software


and systems. For example, test tools, version control tools, DBMS.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Software Engineering
• “A systematic approach to the analysis, design, implementation and maintenance
of software.”

(The Free On-Line Dictionary of Computing)


• “ The systematic application of tools and techniques in the development of
computer-based applications.”

(Sue Conger in The New Software Engineering)


• “ Software Engineering is about designing and developing high-quality software.”

(Shari Lawrence Pfleeger in Software Engineering -- The Production of Quality


Software)

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
What is Software Engineering?
• Although hundreds of authors have developed personal definitions of software
engineering, a definition proposed by Fritz Bauer[NAU69] provides a basis:
“[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.”

• The IEEE [IEE93] has developed a more comprehensive definition when it


states:
“Software Engineering: (1) The application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of
software; that is, the application of engineering to software. (2) The study of
approaches as in (1).”

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
What is Software Engineering?
• Software methods:

– Software engineering methods provide the technical “how to” (detail


recipe) for building software.

• Methods --> how to encompass a broad array of tasks:

– Requirements analysis, design, coding, testing, and maintenance

• Software engineering methods rely on a set of basic principles.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
What is Software Engineering?
• Software engineering process is the glue that holds:

– technology together

– enables rational and timely development of computer software.

• Software engineering process is a framework of a set of key process areas.

– project management, budget and schedule control

– applications of technical methods

– product quality control

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
What is Software Engineering?
• Software tools:

– programs provide automated or semi-automated support for the


process and methods.

– programs support engineers to perform their tasks in a systematic


and/or automatic manner.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Why Software Engineering?
• Objectives:

– Identify new problems and solutions in software production.

– Study new systematic methods, principles, approaches for system


analysis, design, implementation, testing and maintenance.

– Provide new ways to control, manage, and monitor software process.

– Build new software tools and environment to support software


engineering.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Why Software Engineering?
• Major Goals:

– To increase software productivity and quality.

– To effectively control software schedule and planning.

– To reduce the cost of software development.

– To meet the customers’ needs and requirements.

– To improve the current software engineering practice.

– To support the engineers’ activities in a systematic and efficient


manner.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Programming versus Software Engineering
• Programming

1. The process of translating a problem from its physical environment into a


language that a computer can understand and obey. (Webster’s New World
Dictionary of Computer Terms)

2. The art of debugging a blank sheet of paper.

3. A pastime similar to banging one's head against a wall, but with fewer
opportunities for rewards. (2 and 3 from The New Hacker’s Dictionary)

• Software Engineering (according to Fritz Bauer)

– “The establishment and use of sound engineering principles in order to obtain


economically software that is reliable and works efficiently on real machines.”

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
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

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

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
What is the difference between software
engineering and system engineering?
• Software engineering is part of System engineering

• System engineering is concerned with all aspects of computer-based systems


development including

– hardware,

– software and

– process engineering

• System engineers are involved in

– system specification

– architectural design

– integration and deployment

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Components of Software Engineering
• Software development engineering is carried out in two ways:

– Structured System Analysis and Design (SSAD)

– Object Oriented System Analysis and Design (OOSAD)

• Structured System Analysis and Design (SSAD)

– The SSAD approach in which the system and its requirements are
decomposed in structured manner. Software development is carried out
using sub-system structure, tested and integrated and implemented.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Components of Software Engineering
• Object Oriented System Analysis and Design (OOSAD)

– OOSAD development approach recommended the analysis of domain


and builds objects of model independent of the system under
consideration.

– The object could represents a function, process or document evolved


for the organization. Each object has attributes that describes the
methods to perform and relationship to other objects.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Comparison between SSAD And OOSAD
• In SSAD the focus is on the functions and the data structure designed for
those functions. Functions, data and processing methods are closely
coupled. In OOSAD, however, objects and processing methods are
decoupled from the data.

• In SSAD, skill lies in decomposing the system whereas in OOSAD skill lies in
modeling the organization and its business in the objects.

• SSAD and OOSAD are dissimilar in focus but similar in that both propose a
problem solving methodology and a set of techniques and tools to assist the
S/W engineer analyze, model, design and develop the system.

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Frequently asked questions about software engineering

Question Answer

What is software? Software is a set of instructions to acquire inputs and to


manipulate them to produce the desired output in terms
of functions and performance as determined by the user
of the software. It also include a set of documents, such
as the software manual , meant for users to understand
the software system
What are the attributes of good software? Good software should deliver the required functionality
and performance to the user and should be
maintainable, dependable, efficient and usable.
What is software engineering? The establishment and use of sound engineering
principles in order to obtain economically software that
is reliable and works efficiently on real machines.
What are the fundamental software Software specification, software development, software
engineering activities? validation and software evolution.
What is the difference between software Computer science focuses on theory and fundamentals;
engineering and computer science? software engineering is concerned with the practicalities
of developing and delivering useful software.

Chapter 1 Introduction ALL RIGHTS RESERVED 24


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Frequently asked questions about software engineering

Question Answer
What are the key challenges facing Coping with increasing diversity, demands for reduced
software engineering? delivery times and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs,
engineering? 40% are testing costs. For custom software, evolution
costs often exceed development costs.
What are the best software engineering While all software projects have to be professionally
techniques and methods? 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 differences has the web made to The web has led to the availability of software services
software engineering? and the possibility of developing highly distributed
service-based systems. Web-based systems
development has led to important advances in
programming languages and software reuse.

Chapter 1 Introduction ALL RIGHTS RESERVED 25


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
Essential attributes of good software
Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to


meet the changing needs of customers. This is a critical attribute
because software change is an inevitable requirement of a
changing business environment.
Dependability and Software dependability includes a range of characteristics
security including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or
damage the system.
Efficiency Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is


designed. This means that it must be understandable, usable and
compatible with other systems that they use.

Chapter 1 Introduction ALL RIGHTS RESERVED 26


No part of this document may be reproduced without written approval from Engineer Milton Mansaray
End of Lecture

ALL RIGHTS RESERVED


No part of this document may be reproduced without written approval from Engineer Milton Mansaray

You might also like