SE-Chapter-1 Software Engineering Overview
SE-Chapter-1 Software Engineering Overview
SE-Chapter-1 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.
2. FAQs ABOUT SE
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.
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.
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.
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.
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 technique assumes that parts of the system already exist. The system development process
focuses on integrating these parts rather than developing them.
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.
Structured approaches to software development which include system models, notations, rules,
design advice and process guidance
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
Software systems which are intended to provide automated support for software process
activities. CASE systems are often used for method support
The software should deliver the required functionality and performance to the user and should
be maintainable, dependable and usable.
Coping with legacy systems, coping with increasing diversity and coping with demands for
reduced delivery times.
• Software engineers must behave in an honest and ethically responsible way if they are
to be respected as professionals
MTU,ECE,2024 4
Software Engineering Overview
3.1. Issues of professional responsibility
Confidentiality
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).
a) What is a system?
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
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