SE-Chapter-1 Software Engineering Overview

Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

CHAPTER – I

SOFTWARE ENGINEERING OVERVIEW

1. INTRODUCTION

a) What is software?
Computer programs and associated documentation. Software products may develop for a
particular customer or may be developed for a general market.

b) What is software engineering?


Software engineering is an engineering discipline which is concerned with all aspects of
software production.

c) What is the difference between software engineering and computer science?


Computer science is concerned with theory and fundamentals; software engineering is
concerned with the practicalities of developing and delivering useful software.

d) 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.

e) What is a software process?


A set of activities whose goal is the development or evolution of software.

f) What is a software process model?


A simplified representation of a software process, presented from a specific perspective.

g) What are software engineering methods?


Structured approaches to software development which include system models, notations, rules,
design advice and process guidance.

h) 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.
Software Engineering Overview
i) What are the key challenges facing software engineering?
Coping with legacy systems, coping with increasing diversity and coping with demands for
reduced delivery times.

2. FAQs ABOUT SE

a) What is software engineering?

Software engineering is an engineering discipline which is concerned with all aspects of


software production from the early stages of system specification through to maintaining the
system after it has gone into use.

b) What’s the difference between software engineering and computer science?

Essentially, computer science is concerned about theories and methods which underlie
computers and software systems whereas software engineering is concerned with the practical
problems of producing software.

Some knowledge of computer science is essential for software engineers in the same way that
some knowledge of physics is essential for electrical engineers.

Ideally, all of software engineering should be underpinned by theories of computer science but
in reality this is not the case.

Software engineers must often use ad hoc approaches to develop the software.

Elegant theories of computer science are cannot always be applied to real, complex problems
which require a software solution.

c) What is the difference between software engineering and system engineering?

System engineering or, more precisely, computer-based 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.

System engineers are involved in specifying the system, defining its overall architecture and
then integrating the different parts to create the finished system.

They are less concerned with the engineering of the system components. System engineering
is an older discipline than software engineering.

MTU,ECE,2024 1
Software Engineering Overview
People have been specifying and assembling complex industrial systems such as aircraft and
chemical plants for more than 100 years.

However, as the percentage of software in systems has increased, software engineering


techniques such as use-case modeling, configuration management, etc. are being used in the
systems engineering process.

d) What is Software Process?

A software process is the set of activities and associated results which produce a software
product. These activities are mostly carried out by software engineers.

There are four fundamental process activities which are common to all software processes.
These activities are:

Software specification: The functionality of the software and constraints on its operation must
be defined.
Software development: The software to meet the specification must be produced. Software
validation: The software must be validated to ensure that it does what the customer wants.
Software evolution: The software must evolve to meet changing customer needs.

Different software processes organize these activities in different ways and are described at
different levels of detail.

The timing of the activities varies as does the results of each activity. Different organizations
may use different processes to produce the same type of product.

However, some processes are more suitable than others for some types of application.

If an inappropriate process is used, this will probably reduce the quality or the usefulness of the
software product to be developed.

e) What is a software process model?

A software process model is a simplified description of a software process which is presented


from a particular perspective.

Some examples of the types of software process model which may be produced are:

A workflow model: This shows the sequence of activities in the process along with their inputs,
outputs and dependencies. The activities in this model represent human actions.

A dataflow or activity model: This represents the process as a set of activities each of which
carries out some data transformation. It shows how the input to the process such as a
specification is transformed to an output such as a design. The activities here may be at a lower-

MTU,ECE,2024 2
Software Engineering Overview
level than activities in a workflow model. They may represent transformations carried out by
people or by computers.

A role/action model: This represents the roles of the people involved in the software process
and the activities for which they are responsible.

There are a number of different general models or paradigms of software development:

The waterfall approach

This takes the above activities and represents them as separate process phases such as
requirements specification, software design, implementation, testing and so on.

Evolutionary development

This approach interleaves the activities of specification, development and validation. An initial
system is rapidly developed from very abstract specifications. This is then refined with
customer input to produce a system which satisfies the customer’s needs. The system may then
be delivered. Alternatively, it may be re-implemented using a more structured approach to
produce a more robust and maintainable system.

Formal transformation

This approach is based on producing a formal mathematical system specification and


transforming this specification, using mathematical methods to a program.

System assembly from reusable components

This technique assumes that parts of the system already exist. The system development process
focuses on integrating these parts rather than developing them.

f) 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.

g) 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

MTU,ECE,2024 3
Software Engineering Overview
Rules - Constraints applied to system models
Recommendations - Advice on good design practice
Process guidance - What activities to follow

h) 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

i) 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

j) What are the key challenges facing software engineering?

Coping with legacy systems, coping with increasing diversity 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.

3. 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 responsible way if they are
to be respected as professionals

• Ethical behaviour is more than simply upholding the law.

MTU,ECE,2024 4
Software Engineering Overview
3.1. Issues of professional responsibility

Confidentiality

Engineers should normally respect the confidentiality 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. They should not knowingly
accept work which is out with their competence.
Intellectual property rights

Engineers should be aware of local laws governing the use of intellectual property such
as patents, 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 of viruses).

4. COMPUTER BASED SYSTEMS ENGINEERING

a) What is a system?

• A purposeful collection of inter-related components working together towards some


common objective.
• A system may include software, mechanical, electrical and electronic hardware and be
operated by people.
• System components are dependent on other system components
• The properties and behaviour of system components are inextricably inter-mingled.

b) Problems of Systems Engineering

• Large systems are usually designed to solve ’wicked' problems


• Systems engineering requires a great deal of co-ordination across disciplines
• Almost infinite possibilities for design trade-offs across components
• Mutual distrust and lack of understanding across engineering disciplines
• Systems must be designed to last many years in a changing environment

c) Software and Systems Engineering

• The proportion of software in systems is increasing. Software-driven general purpose


electronics is replacing special-purpose systems

MTU,ECE,2024 5
Software Engineering Overview
• Problems of systems engineering are similar to problems of software engineering
Software is (unfortunately) seen as a problem in systems engineering.
• Many large system projects have been delayed because of software problems.

d) Emergent Properties

• Properties of the system as a whole rather than properties that can be derived from the
properties of components of a system
• Emergent properties are a consequence of the relationships between system
components
• They can therefore only be assessed and measured once the components have been
integrated into a system

e) Examples Of Emergent Properties

The overall weight of the system


This is an example of an emergent property that can be computed from individual
component properties.

The reliability of the system

This depends on the reliability of system components and the relationships between the
components.
The usability of a system
This is a complex property which is not simply dependent on the system hardware and
software but also depends on the system operators and the environment where it is used.

MTU,ECE,2024 6

You might also like