Software Development Process

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Fundamentals of Software Design (1CE2403)

Unit-1
Software Development Process
Software:

Software is collection of program, procedures, rules and associated documentations and data
concerned with the operation of a data processing system.

Program Procedures Documents Software


+ + =

Difference between Software and Program:

 Software is large in size, while program is small in size.


 Software is developed by multiple developers, while program is written by
programmer.
 Software provides multiple functionalities, while program provides limited
functionalities.
 Software provides good user interface and contains good documentation, while
program doesn’t require good user interface or documentation.

Evolution of Software
- Software evolution means the process by which programs change shape, adapt to the
market place and inherit characteristics from preexisting programs.
- After delivering each software if any error found, it require maintenance so that is the
part of the evolution of software.
- Some time software must be upgraded and enhanced to include more futures and
provide more services this will only happening using evolution.
- Mr. Lehman from IBM and other pioneering research have found the evolution
behavior of the software that is given below.
Laws of software evolution:
1. Continuing Change — Systems must be continually adapted or they become
progressively less satisfactory and it lost its market.

2. Increasing Complexity — System becomes more complex as we change it and we need


some extra resources to maintain or reduce the complexity.

1|Page
Fundamentals of Software Design (1CE2403)

3. Self Regulation — System evolution process is self-regulating with distribution of


product and process measures close to normal.
4. Organizational Stability – Organization must be stable in order to maintain the
evolution of the system.
5. Conservation of Familiarity — System evolves all associated with it, developers, sales
personnel, users, for example, must maintain mastery of its content and behavior to
achieve satisfactory evolution.
6. Continuing Growth — Systems must be continually increased to maintain user
satisfaction over their lifetime.
7. Declining Quality — The quality of the systems is maintained during the evolution.
8. Feedback System — Evolution of any system is depends on the feedback of the user, so
by taking feedback we can make better system.

Software Characteristics:

1) Software is engineered, not manufactured like hardware.


Software or hardware both get manufactured in the same manner and both of them
uses the design model to implement the product. The only difference is in their
implementation part. They both differ in their coding part. So, it is said that software is not
manufactured but it is developed or engineered.
Once a product is manufactured it is not possible or not easy to correct it, change it, enhance
it, remove error from it or it is costly. But software can easily.
In hardware product number of copies generates a cost due to raw materials and other
manufacturing process but in software without any expense we can create number of copies.
2) Software does not wear out.
Figure shows the failure rate as a function of time for hardware. Hardware can
damaged after running time. As time passed hardware components suffer from dust, vibration,
temperature and many other environmental effects. So the failure rate is high in hardware.
This is the wear out of hardware, while in case of software failure rate is very low.
Hardware suffers high failure rates early in its life. At first failure rate is more but
testing failure rate become low and become stabilize after some time. As time passes, the
failure rate rises again and product will wear out.

2|Page
Fundamentals of Software Design (1CE2403)

Software is not affected by the environmental effects that cause hardware to wear out.The
failure rate curve for software is the “idealized curve” shown in Figure. But the actual curve
shown in Figure. During its life, software will undergo change. As changes are made, it is likely
that some new defects will be introduced, causing the failure rate curve to spike as shown in
Figure. Before the curve can return to the original steady-state failure rate, another change is
requested, causing the curve to spike again.

3) Software gives component-based construction, it gives reusability of components.


In this world the reusability of the component is a natural part of engineering process. You can
use the initially developed software to develop the new one e.g. if an engineer wants to
manufacture a television then he can take picture tube from one spare TV, and cabinet from
another and like this by joining the parts he can easily manufacture a TV set quickly.

3|Page
Fundamentals of Software Design (1CE2403)

In the similar manner, software can be developed. You don't need to start writing the code
from the scratch. But you can use already developed software to develop another one. You
don't need to think over it that how it can be developed. You just use the already developed
code for it.
4) Software is flexible for custom built
A program can be developed to do anything, so it is flexible. But most of the times, almost
everything characteristics has made software development difficult to plan, monitor and
control.

Software Application:

System Software: It helps in running computer hardware and the computer system. System
software refers to the operating systems; device drivers, servers, windowing systems and
utilities. System software helps an application programmer in abstracting away from hardware,
memory and other internal complexities of a computer. An operating system provides users
with a platform to execute high-level programs. Firmware and BIOS provide the means to
operate hardware.

Real time software: This type of software is used to monitor, control and analyzed real world
event as they occur. An example may be software required for the weather forecasting. Such
software will gather and process the status of temperature, humidity and other environmental
parameters to forecast the weather.

Embedded software Embedded software is a type of software that is built into hardware
systems. This software is typically designed to perform one specific function, although a single
piece of hardware may contain multiple pieces of embedded software. Any piece of technology
that has circuit boards and computer chips will likely have embedded software within it, from
digital clocks to cell phones to calculators. These systems allow many of the advanced
functions that are common in modern devices.

Business software: Business software or business application is any software or set of


computer programs that are used by business users to perform various business functions.
These business applications are used to increase productivity, to measure productivity and to
perform business functions accurately. This can for example be in connection with inventory
control, production, logistics, marketing, accounting, customer and supplier management and
much more.

Personal Computer Software: The software used in personal computers is covered in this
category. Examples are word processor, multimedia, database management, computer games
etc.

4|Page
Fundamentals of Software Design (1CE2403)

Web based software or Web Application: The software related to web applications comes
under this category. It is not only providing stand-alone features, but also can integrate with
database and other business application.
Examples are CGI, HTML, Java, Perl, DHTML etc.

Artificial Intelligence Software:

Artificial Intelligence Software makes use of non-numerical algorithms to solve large complex
problems that are not capable to computations.

Examples are Expert systems, game playing etc.

Engineering and scientific software: Scientific and Engineering application software are
grouped in this category. Huge computing is normally required to process data.

Examples are CAD/CAM package, MATLAB, circuit analyzer etc.

Software Engineering:

Software Engineering is the systematic approach to the development, operation, and


maintenance of software.
Need of Software Engineering:
 Software Engineering describes how the software is designed, what types of
requirements and what types of different phases are needed to complete the software
product.
 The main goal of Software Engineering is to provide models and processes that produce
well documented, maintainable software.
 Using model we can determine in advance how much time, effort and cost are required
to produce the final complete product.

Software Process Framework activities:


The following generic process framework is applicable to the majority of software projects.

Communication: involves heavy communication with the customer (and other stakeholders)
and encompasses requirements gathering.

Planning: Describes the technical tasks to be conducted, the risks that are likely, resources that
will be required, the work products to be produced and a work schedule.

5|Page
Fundamentals of Software Design (1CE2403)

Modeling: encompasses the creation of models that allow the developer and customer to
better understand software requirement and the design that will achieve that requirement.
Construction: combines code generation and the testing required uncovering errors in the
code.

Deployment: deliver the product to the customer who evaluates the delivered product and
provides feedback.

Umbrella Activities:
Software engineering process framework activities are complemented by a number of
umbrella activities. In general, umbrella activities are applied throughout a soft-ware project
and help a software team manage and control progress, quality, change, and risk. Typical
umbrella activities include:

Software project tracking and control—allows the software team to assess progress against
the project plan and take any necessary action to maintain the schedule.

Risk management—assesses risks that may affect the outcome of the project or the quality of
the product.

Software quality assurance—defines and conducts the activities required to ensure software
quality.

Technical reviews—assess software engineering work products in an effort to uncover and


remove errors before they are propagated to the next activity.

Configuration Management—manages the effects of change throughout the software process.

6|Page

You might also like