Introduction to Software Engineering

Coursera 7-Day Trail offer

What is Software Engineering?

Software engineering is the discipline that covers principles of specification, systematic development, management and evolution of software systems. It is concerned with the applications of engineering concepts, techniques, and methods to the development of software.

Not applying software engineering methods results in more expensive, less reliable software, and it can be vital on the long term, as the changes come in, the costs will dramatically increase.

Software Engineering Definition

Software Engineering is a systematization of the process of software development to ensure the best solution most economically

Dr. (Prof.) Rajendra Prasad, Prof. Govind Verma, 2016, p. 21

The systematic approach to the development, maintenance and retirement of software.

Software Engineering is the application of science and mathematics by which the capabilities of a computer are made useful to man via computer programs, procedures, associated documentation

The world can’t operate without software. Industries are controlled by software systems, as the financial systems, scientific labs, infrastructures and utilities, games, film, television, and the list goes on.

What is software?

The description of software might take the following form:

Software is

  1. instructions (computer programs) that when executed provide desired function and performance,
  2. data structures that enable the programs to adequately manipulate information, and
  3. documents that describe the operation and use of the programs.

Characteristics of Software

Software is a logical rather than a physical system element. Therefore, software has characteristics that are considerably different than those of hardware:

  1. Software is developed or engineered, it is not manufactured in the classical sense.
  2. Software doesn’t “wear out”.
  3. Most software is custom–built rather than being assembled from existing components.

Read: Full Computer Network Tutorials

Difference between Software and Program

1. Programs are small in size 1. Software products are large in size
2. Programmer himself is the sole user2. Most users are not involved with the development
3. A single developer is involved3. A large number of developers are involved
4. The user interface may not be very important, because the programmer is the sole user4. The user interface must be carefully designed and implemented because developers of that product and users of that product are totally different
5. Very little documentation is expected5. A software product must be well documented
6. A program can be developed according to the programmer’s individual style of development6. A software product must be developed using the accepted software engineering principles

Types of Software or Categories of Computer Software

  • System Software: The system software is a collection of programs written to service other programs. The system software is characterized by heavy interaction with Multiple users; heavy usage by computer hardware; a concurrent operation that requires resource sharing, scheduling, and sophisticated process management; complex data structures; and multiple external interfaces.

  • Real-time Software: The software that monitors/analyzes/controls real-world events as they occur is called real time. The elements of real-time software include a data gathering component that collects and formats information from an external environment, an analysis component that transforms information as required by a control/output component, an application that responds to the external environment, and a monitoring component that coordinates all other components so that real-time response can be maintained.

  • Business Software: Business information processing is the largest single software application area. Business software facilitates business operations or management decision-making. In addition to conventional data processing applications, business software applications also encompass interactive and client/server computing.

    Engineering and Scientific Software

  • Embedded Software: Embedded software resides in read-only memory and is used to systems and control products for the consumer and industrial markets. The examples of embedded software include keypad control for a microwave oven, digital functions in an automobile such as fuel control, dashboard displays, and braking systems, etc.

  • Personal Computer Software: Word processing, spreadsheets, computer graphics, multimedia, entertainment, database management, personal and business financial applications, external network, and database access are only a few of hundreds of personal computer software applications.

  • Artificial Intelligence Software: Artificial Intelligence (AI) software makes use of non-numerical algorithms to solve complex problems that are not amenable to straightforward analysis or computation. Expert systems, also called knowledge-based systems, artificial neural networks, pattern recognition (image and voice), theorem proving, and game playing are representative of applications within this category.

Software Quality Attributes

The international standard on software product quality suggests that software quality comprises six main attributes. These attributes can be defined as follows:

  1. Functionality: The capability to provide functions which meet stated and implied needs when the software is used.
  2. Reliability: The capability to provide a failure-free service.
  3. Usability: The capability to be learned, understood and used.
  4. Efficiency: The capability to produce appropriate performance relative to the amount of resources used.
  5. Maintainability: The capability to be modified for purposes of making improvements, corrections or adaptation.
  6. Portability: The capability to be adapted for different specified environments without applying means or actions other than those provided for this purpose in the product.

Software Process

A Software Process (also knows as software methodology) is a collection of activities, actions and tasks that are performed when some product is to be developed. The processes that deal with the management and technical issues of software development are collectively called the software process.

There are two major components in a software process – a development process, and a project management process.

  • Management process specifies how to plan and control these activities so that cost, schedule, quality, and other objectives are met whereas the development process specifies all the engineering activities that need to be performed. Effective project management and development processes are the keys to achieving the objectives of delivering the desired software satisfying the user needs while ensuring high productivity and quality.

  • The development processes generally do not focus on evolution and changes, therefore to handle them another process called software configuration control process is often used. The objective of this component process is to primarily deal with managing change so that the integrity of the products is not violated despite changes.

Software Process include Four Activities

  1. Software specification (or requirements engineering): Define the main functionalities of the software and their constrains.
  2. Software design and implementation: It focuses, the software is to be designed and programmed.
  3. Software verification and validation: The software must conform to its documented specification and meets customer needs.
  4. Software evolution (software maintenance): The software is being modified to meet customer and market requirements changes.

Software Crisis in Software Engineering

The problems associated with software development are characterized as “Software Crisis”. The set of problems that are encountered in the development phase of computer software is not limited to software that “doesn’t function properly”.

  • Rather, the problems associated with may be related to how we develop software, how we support a growing volume of existing software, and how we can expect to keep pace with a growing demand for more software.
  • It is believed that the only satisfactory solution to the present software crisis can possibly come from a spread of software engineering practices among the engineers, coupled with further advancements to the software engineering discipline itself.

Read More: Wikipedia

Importance of Software Engineering Principles

  • Without using software engineering principles it would be difficult to develop large programs. In industry, it is usually needed to develop large programs to accommodate multiple functions at various levels.
  • The problem is that the complexity and the difficulty levels of the programs increase exponentially with their sizes.
  • For example, a program of size 1,000 lines of code has some complexity. But a program with 10,000 LOC is not 10 times more difficult to develop, but maybe 100 times more difficult unless software engineering principles are used. Software engineering helps to reduce the development complexity.

Computer Science Vs Software Engineering

Software engineering is associated with the activities of developing and managing software, while Computer science deals with the theory and fundamentals, like algorithms, programming languages, theories of computing, artificial intelligence, and hardware design.

Read Next #2: Software Development Life Cycle

Leave a Reply