![]() |
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. |
![]() |
Database management systems. | |
![]() |
Artificial intelligence. | |
![]() |
Theoretical models. | |
![]() |
Management science. | |
![]() |
Systems 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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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 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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |