Welcome to Edukum.com

Introduction of Software Engineering

Software is computer programs and associated documentation. This definition clearly states that the software is not a collection of programs, but includes all associated documentation.
Software system usually consists of a number of separate programs, configuration files: which are used to set up these programs, System documentation: which describes the structure of the system, and user documentation: which explains how to use the system and web sites for users to download recent product information.

Software may be generic or custom:
Generic:These are stand-alone systems that are produced by a development organization and sold on the open market to any customer who is able to buy them.(i.e. developed to be sold to a range of different customers).e.g. Databases, Office packages, Drawing Packages etc.
Custom(Bespoke):These are the systems which are commissioned by a particular customer. A software contractor develops the software especially for that customer. (i.e. .developed for a single customer according to their specification).e.g.: Control system for electronic device, software to support particular business process.

Software Characteristics:
To gain understanding of software, it is important to examine the characteristics of software that human being built software is a logical component rather than a physical element. Some of its characteristics are:
  • Although some similarities exist between software development and hardware Manufacture, the two activities are fundamentally different in both activities, high quality is achieved through design.
  • Software does not wear out (expire). Hardware exhibits relatively high failure rate early in its lifecycle. Defects are corrected and the failure to steady state level for some time. As time passes, the failure rate rise again as hardware component suffer from the cumulative effects of dust vibration, temperature and many other environmental factor stated simply the hardware begins to wear out.
Software Engineering
Software engineering is strategy for producing quality software.It is the establishment and use of sound engineering principles in order to obtain economically software is reliable and works efficiently on real machines.Software engineering is an engineering discipline which is concerned with all aspects of software production.Software engineering as a discipline provides us with structured technical means of developing and maintaining software. It provides methods to perform the tasks that the making of any software requires, analyzing the requirements, designing the system to meet these requirements, constructing the programs, maintaining the system, etc. Software engineering tools are used to support the tasks by automating the tasks or parts of the tasks.

Advantages :

  • Improved quality
  • Improved requirement specification
  • Improved cost and schedule estimates
  • Better use of automated tools and techniques
  • Well defined process
  • Improved reliability and productivity
  • Less defects in final processes

Why do we need Software Engineering?

  • The economies of ALL developed nations are dependent on software.
  • More and more systems are software controlled.
  • Software engineering is concerned with theories, methods and tools for professional software development.
  • Software engineering expenditure represents a significant fraction of GNP in all developed countries.

Difference between software engineering and computer science:

  • Computer science is concerned with theories and methods that underline computer software system.; software engineering is concerned with the practicalities of developing and delivering useful software.
  • Some knowledge of computer science is essential for software engineers.
  • Computer science theories are currently insufficient to act as a complete underpinning for software engineering.

Comparison between software engineering and system engineering:

  • System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process.
  • System engineers are involved in system specification, architectural design, integration and deployment.
Software Process
Software process is a set of activities and associated results that produce a software product.Generic activities in all software processes are:

Here, customers and engineers define the software to be produced and the constraints on its operation.( i.e. what the system should do and its development constraints).

Where the software is designed and programmed.(i.e. production of the software system)

where the software is checked to ensure that it is what the customer requires.(i.e. checking that the software is what the customer wants)

Where the software is modified to adapt it to changing customer and market requirements.(i.e. changing the software in response to changing demands)

Software Process Model
Software process model is a simplified representation of a software process, presented from a specific perspective. Software process model may include activities that are part of the software process, software products and the role of people involved in software engineering. It includes 3 types of model:

a)Workflow Model:
This model shows the sequence of activities in the process along with their inputs, outputs and dependencies.The activities in this model represent human actions.

b)Data flow or Activity Model:
This model represents the process as a set of activities each of which carries out some data transformation.It shows how the input to the process, such as a specification, is transformed to an output, such as a design. The activities here may represent transformations carried out by people /computer.

c)Role or Action Model:
This model represents the roles of people involved in the process and the activities for which they are responsible.

Generic Process Model:

  • Waterfall
  • Evolutionary development
  • Formal transformation or formal specification
  • Integration from reusable components-CBSE (computer -based software engineering)

Software Costs
The distribution of costs across the different activities in the software process depends on the process used and the type of software that is being developed.

  • Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware cost.
  • Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs.
  • Software engineering is concerned with cost-effective software development.
  • Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs.
  • Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability.
  • Distribution of costs depends on the development model that is used.

Software Engineering Method
It is a structured approach to software development which includes system models, notations, rules, design advice and process guidance whose aim to facilitate the production of high-quality software in cost-effective way. The software engineering methods are as follows:

a.Model description:
In this method, descriptions of graphical models which should be developed and the notation used to define these models.eg. Object model, Data Flow Model.

It explains constraints applied to system models e.g. Every entity in a system model must be unique name.

Heuristic which characterise good design practice in this method. Following these recommendations should lead to a well-organized system model (i.e. Advice on good design practice).e.g. No object should have more than seven sub-objects associated with it.

d.Process guidance:
It is descriptions of the activities which may be followed to develop the system models and the organization of these activities. e.g. Object attributes should be documented before designing the operations associated with an object.

Key Challenges Facing Software Engineering:

a) Heterogeneity Challenge:
Every organization is required to operate as a distributed system across the network that includes different types of computer and with different types of supporting system. The heterogeneity challenge is the challenge of developing software that is flexible enough to cope with heterogeneous system.

b)Delivery Challenge:
Traditional software engineering techniques are time consuming. The time they take is required to achieve software quality. However, business organization today must be responsive and change very rapidly. Their supporting software must change equally. The delivery challenge is the challenge to provide the software within short time without compromising software quality.

c)Trust Challenge:
Trust challenge is to develop a technique that demonstrates that software can be trusted by its user.

d)Legacy System:
Old, valuable systems must be maintained and updated.

Software Application

System Software
System software is a collection of programs written to service other programs. Some system software process complex, but determinate, information structures. e.g., compilers, editors, and file management utilities. Other systems applications process largely indeterminate data.e.g., operating system components, drivers, telecommunications processors.

Real Time Software
Software that monitors/analyzes/controls real-world events as they occur is called real time. 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 the application, a control/output component that responds to the external environment, and a monitoring component that coordinates all other components so that real-time response (typically ranging from 1 millisecond to 1 second) can be maintained.

Business Software
Business information processing is the largest single software application area. Discrete "systems" (e.g., payroll, accounts receivable/payable, inventory) have evolved into management information system (MIS) software that accesses one or more large databases containing business information. Applications in this area restructure existing data in a way that facilitates business operations or management decision making.e.g.point of- sale transaction processing.

Engineering and Scientific Software
Engineering and scientific software have been characterized by "number crunching" algorithms. Applications range from astronomy to volcanology, from automotive stress analysis to space shuttle orbital dynamics, and from molecular biology to automated manufacturing.

Embedded Software
Embedded software resides in read-only memory and is used to control products and systems for the consumer and industrial markets.Embedded software can perform very limited and esoteric functions (e.g., keypad control for a microwave oven) or provide significant function and control capability (e.g., digital functions in an automobile such as fuel control, dashboard displays, and braking systems).

Personal Computer Software
The personal computer software market has burgeoned over the past two decades. 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 applications.

Web Based Software
The Web pages retrieved by a browser are software that incorporates executable instructions (e.g., CGI, HTML, Perl, or Java), and data hypertext and a variety of visual and audio formats). In essence, the network becomes a massive computer providing an almost unlimited software resource that can be accessed by anyone with a modem.

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


  • Sommerville, Ian. Software engineering. eight edition. Newyork: pearson, 2007.
  • coursehero. <https://www.coursehero.com/file/11487611/Chapter1-Introduction-to-Software-Engineering-cs/>.
  • book. <https://books.google.com.np/books?id=CDWRq0B9e5kC&pg=PA5&lpg=PA5&dq=+Software+Software+is+computer+programs+and+associated+documentation.&source=bl&ots=fuFOT7wYOS&sig=0tkbWoER8gf7RxbScRjIQc7W_d0&hl=en&sa=X&redir_esc=y#v=onepage&q=Software Software is%>.
  • csitprogram. .










#Things To Remember