Software Engineering In Software Process and Project Management
Introduction:
Today,Software Engineering is the most important technology with rapid development.National economy is also depend on this technology,Day by day more and more systems are getting controlled by software.Hence it becomes necessary to understand the software development as an engineering discipline.This chapter is for understanding fundamental concepts.We will get introduced with software engineering by understanding what exactly mean by software,what are the objectives of software engineering,In this chapter,we will also discuss various categories of software.Finally we will discuss various challenges in software engineering.
Introduction to Software Engineering:
In software engineering the systematic and organized approach is adopted.Based on the nature of the problem and development constraints various tools techniques are applied in order to develop quality software.
The definition of software engineering is based on two terms:
- Discipline:For finding the solution to the problem an Engineer applies appropriate theories,methods and tools.While finding the solution,Engineers must think of the organizational and financial constraints.Within these constraints only,he/she has to find the solution .
- Product:The software product gets developed after following systematic theories,methods and tools along with the appropriate management activities.
Defining Software
Software is nothing but a collection of computer programs and related documents that are intended to provide desired features,functionalities and better performance.
Software products may be:
- Generic - That means developed to be sold to a range of differnt customers.
- Custom - That means developed for a single customer according to their specification.
Software development is a logical activity and therefore it is important to understand basic characteristics of software.Some important characteristics of software are:
- Software is Engineered,not manufactured
- Software does not ware out
On the other hand software does not get affected from such environmental maladies.Hence ideally it should have and "idealized curve". But due to some undiscovered errors the failure rate is high and drops down as soon as the errors get corrected.Hence in failure rating of software the actual curve" is as shown below:
FAILURE CURVES FOR HARDWARE |
FAILURE CURVES FOR SOFTWARE |
FAILURE CURVES FOR HARDWARE AND SOFTWARE
During the life of software if any change is made,some defects may get introduced.This causes failure rate to be high.Before the curve can return to original steady state another change is requested and again the failure rate becomes high.Thus the failure curve looks like a spike.Thus frequent changes in software cause it to deteriorate.
Another issue with software is that there anr no spare parts for software.If hardware components wears out it can be can be replaced by another components but it is not possible in case of software.Therefore software maintenance is more difficult that the hardware maintenance.
- Most software is custom built rather than being assembled from components
However,now the software development approach is getting changed and we look for re usability of software components.It is practiced to reuse algorithms and data structures.Today software Industry is trying to make library of reusable components.
Categories of Software
Software can be applied in a situation for which a predefined set of procedural steps (algorithm) exists.Based on a complex growth of software it can be classified into following categories.
- System software - It is collection of programs written to service other programs.Typical programs in this category are compiler,editors and assemblers.The purpose of the system software is to establish a communication with the hardware.
- Application software - It consists of standalone programs that are developed for specific business need.This software may be supported by database systems.
- Engineering/specific software - This software category has a wide range of programs from astronomy to volcanology,from automatic stress analysis to space shuttle orbital dynamics and from molecular biology to automated manufacturing.This software is based on complex numeric computations.
- Embedded software - This category consists of program that can reside within a product or system.Such software can be used to implement and control features and functions for the end-user and for the system itself.
- Web applications - Web application software consists of various web pages that can be developed using programming languages like JAVA, PERL, CGI, HTML, DHTML.
- Artificial intelligence software - This kind of software is based on knowledge based expert systems.Typically, this software is useful in robotics, expert systems, image and voice recognition, artificial neural networks, theorem proving and game playing.
Post Your comments,Views and thoughts Here, Give Us Time To Respond Your Queries