Menus

Sep 21, 2015

Introduction To Software Engineering

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

Contact Form

Name

Email *

Message *