1. Introduction
1.1 History of software engineering
1.2 Role of software engineering in system design
1.3 The software life cycle
1.4 Relationship of software engineering to other areas of
computer science and other disciplines.
1.1 What is Software Engineering?
Software engineering is an engineering discipline which is
concerned with techniques, methods and methodologies to develop high quality
software. The high quality software is that which have following
characteristics:
- Reliable
- Easy to understand
- Useful
- Modular
- Efficient
- Reusable
- Modifiable
- Delivered in cost effective and timely manner
- Good user interface
- Well documented
1.2 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.
1.3 What is the difference between software engineering and system
engineering?
System engineering is concerned with all aspects of computer-based
systems development including hardware development, policy and process design,
system development as well as software engineering. System engineers are
involved in system specification, architectural design, integration and
deployment.
Software engineering is
part of system engineering concerned with developing the software
infrastructure, control, applications and databases in the system.
1.4 Role of software engineering in system design
A software system is often a component of a much larger system.
The software engineering activity is therefore a part of a much larger system
design activity in which the requirement of the software are balanced against
the requirements of other parts of the system being designed.
Software is increasingly embedded in all systems, form television
to airplanes and software engineer requires to take a broader look at the
general problem of system engineering.
It also require software engineer for developing the requirements
for the whole system. For example, a telephone switching system consists of
computers, telephone lines, and cables, telephones, other hardware such as
satellites and finally software is needed to control all such components. The
combination of all these components must meet the requirements of the whole
system.
1.5 The software life cycle
The simplest software development life cycle model is the
waterfall model, which states that the phases are organized in a linear order.
All these steps are performed in a sequential order just like waterfall from
top to bottom. The following figure demonstrates the steps involved in
waterfall life cycle model.
Requirement analysis and Planning
Requirement analysis phase try to discover all of the user
requirements by using different methods and prepare a document which is known
as requirement specification document. This is one of the important and time
consuming phases. To identify user requirement different methods can be used
such as:
- Collection of existing documents, forms and database.
- Observation of work environments
- Interview with user and business professionals
- Using questionnaires
- Research and site visits
System Design and Specification
After finding all the user requirements, the next step in system
development is system design. This phase design a technical blue print about
how the proposed system will work. This phase will include three activities as:
1. Design the technical architecture:
In this activity the system designer identifies all the required
hardware, software, networking and telecommunication equipments for the
implementation of the software system.
2. Design the system database:
In this activity system designer design a database on the basis of
requirement of user including tables, field name, their data type and other
information like storage space requirement, security mechanism and backup and
recovery techniques.
3. Design the user interface:
User interface is the medium using which user interact with
software system. So user interface must be easy to learn. Designer design the
format of input forms and output reports.
Coding and Verification
In this phase, the engineer produces the actual code that will be
delivered to the customer as the running system. In this phase, individual
modules developed in the coding phase are verified before being delivered to
the next phase.
Testing and Integration
All the modules that have been developed before and tested
individually are put together i.e integrated in this phase and are tested as a
whole system.
Maintenance
Once the system passes all the tests, it is delivered to the
customer and enters the maintenance phase. Any modifications made to the system
after the initial deliveries are usually recognized to this phase.
1.6 Relationship of software engineering to other areas of
computer science and other disciplines.
Software engineering is emerged as an important field of computer
science and other areas. These areas both influence and are influenced by
software engineering and those areas are:
• Programming languages
Programming language are the central tools used in software
development. As a result they have a profound influence on how well we can
achieve our software engineering goals. The influence of software engineering
on programming language is the inclusion of modularity features, such as
separate and independent compilation, and the separation of specification from
implementation in order to support team development of large software.
• Operating systems
The influence of operating system on software engineering is quite
strong because operating systems ware the first really large software systems
built and they was the first instance of software to be engineered. Many of the
software design ideas originated from building operating system.
• Databases
Database is also the class of large software engineering systems
whose development has influenced software engineering through the discovery of
new design techniques. The most important influence of the database field on
software engineering is through the notion of data independence, which is yet
another instance of the separation of specification from implementation.
• Artificial intelligence
Artificial intelligence is another field that influence software
engineering. Many software system build in the artificial-intelligence
community are large and complex system and are different from one another. Many
of them were built with only a vague notion of how the system was going to
work.
Software engineering techniques are used in expert system of
artificial intelligence. These systems are modularized with clear separation
between the facts known by the system and the rules used by the system for processing
the fact.
• Management science
Software engineering is also involve management issues such as
project estimation, project scheduling, human resource planning, task
decomposition and assignment and project tracking and additional personal
issues involve are hiring personnel, motivating people and assigning right
people to the right tasks. Software engineering provides management theories
and models which are used to deal with such field of management science and
management science developed many models that can be applied to software engineering.
• Systems engineering
System engineering is concerned with the studying complex systems.
Complex system consists of thousands of the modules and subsystem. Software
engineering is used to study and monitor the large system.
No comments:
Post a Comment