1.2 Related Disciplines to Software Engineering


Software engineering is considered an area of computer science by some scholars and book authors.
Developing a software system is a project which need project management.
Hence project management is a field that relates to software engineering.
Software engineering is related to the several other disciplines and fields in computer science.
These disciplines and fields both influence and are influenced by software engineering.
There are many problems that are common to software engineering and other disciplines.
Many of these problems have been solved in other fields. Their solutions can be adapted by software
engineering.
Thus, there is no need to re-create every solution.
Related disciplines to software engineering include the following:
Web engineering.
Programming languages.
Operating systems.

1.2 Related Disciplines to Software Engineering


Database management systems.
Artificial intelligence.
Theoretical models.
Management science.
Systems engineering.

Web engineering
Web engineering is a recent and new discipline for development of Web-based systems.
It has emerged lately to address a process and a systematic approach to development of high quality
Web-based systems.
Web engineering objective is to establish and use of sound scientific, engineering and management principles
and disciplined and systematic approaches to the successful development, deployment and maintenance of
high quality Web-based systems and applications.
Web engineering uses the methods, tools, models, paradigms, principles and concepts of software
engineering to develop Web-based applications in addition to using other elements that are specific to the
Web environment.

1.2 Related Disciplines to Software Engineering


Web-based system development is different from software development, and also Web engineering is
different from software engineering in the following:
Most Web-based systems are document-oriented containing static or dynamic Web pages. They are
developed using different programming languages such as PHP, XML, and .NET.
Web-based systems will continue focus on look and feel, favoring visual creativity and incorporation of
multimedia (sound, graphics, video, text, etc.) in presentation and interface.
Most Web-based systems are content-driven - often Web-based systems development include
development of the content presented.
Most Web-based systems need to be developed within a short time, making it difficult to apply the same
level of formal planning and testing as used in software development.
Web is different from software in regards to the delivery medium.

1.2 Related Disciplines to Software Engineering


Programming languages
Programming languages are used by the software programmers to develop the code of the software systems
and hence, they are the central tools used in software development.
Programming languages affect the quality and efficiency of the product.
The software process and software engineering principles also affect the development of programming
languages.
For example, the modular principle and separation of concern software engineering principles influence
the design of recent programming languages where they support the inclusion of modularity feature,
such as object oriented programming, classes and objects, separate and independent compilation, and
the separation of specification from implementation.

Operating system
The operating systems are examples of software systems and therefore they were the first instances of
software that needed to be engineered.
The development of these operating systems follows the software engineering process.

1.2 Related Disciplines to Software Engineering


The operating systems strongly affect and influence software engineering. Similarly, the software engineering
strongly affects and influences operating systems.
Software engineering benefited from the ideas and experiences originated from early attempts at building
operating systems.
Examples of the ideas and experiences gained through the development of operating systems which are used
in software engineering include virtual machines, levels of abstraction, and separation of policy of mechanism.
They are applicable to any large software system.
On the opposite, some examples of the software engineering techniques and principles that influence the
structure of operating systems are modular design and separation of concerns.
For example, UNIX contains a small protected kernel that provides a minimum of functionality for
interfacing with the hardware and a non-protected part that provides the majority of functionality
associated with operating system.

1.2 Related Disciplines to Software Engineering


Database management systems
Database management systems are large software systems.
Database management systems influence and are influenced by software engineering.
Some of the new ideas learned through the development of database management systems are the discovery
of new design techniques.
Such as data independence which is an example of separation of concern (separation of specification
from implementation).

Artificial intelligence
Artificial intelligence systems are very complex software systems.
They are built with only a vague notion of how the system is going to work.
Artificial intelligence systems use new software engineering techniques in dealing with specifications,
verification, and reasoning in the presence of uncertainty.
An example of artificial intelligence systems is expert systems.
These systems are modular systems which separate the "facts" which are known by the system and
the rules that are programmed into the system for processing these facts.

1.2 Related Disciplines to Software Engineering


Theoretical models
Theoretical models discipline is concerned with the development of a number of models.
These models are used as tools and models in software engineering.
An example of these models is the finite state machines (used as techniques for software specifications and
as models for software design and structure).
One example of software systems that use finite state machines are communication protocols and language
analyzers.
They use finite state machines as their processing model.
Another example is pushdown automata.
A pushdown automaton is used for operational specifications and for building processes for such
specifications.
It is also used for building compilers for programming languages.
A third example is the denotational semantics which is a mathematical theory developed for describing
programming language semantics.
It has been the source of recent developments in the area of specification languages.

1.2 Related Disciplines to Software Engineering


Management science
Technical management and personnel management of software projects is an essential part of the software
engineering.
Technical management includes project estimation, project scheduling, human resource planning, task
decomposition and assignment, and project tracking.
The personnel management involves hiring personnel, motivating people, and assigning the right people to
the right tasks.
We can exploit the results of many decades of study generated from management science in the software
engineering.
Software engineering is a new discipline that provided management science with a new domain in which to
test management theories and models.

1.2 Related Disciplines to Software Engineering


Systems engineering
System Engineering is the field concerned with studying complex systems.
Since software engineering is concerned with the studying of complex software system it becomes a sub-field
of systems engineering.
System Engineering tries to discover common theories that apply to diverse commercial, industrial, business,
military and other systems.