Software Processes
The term software specifies to the set of computer programs, procedures
and associated documents (Flowcharts, manuals, etc.) that describe the
program and how they are to be used.
A software process is the set of activities and associated outcome that
produce a software product. Software engineers mostly carry out these
activities. These are four key process activities, which are common to all
software processes. These activities are:
1.Software specifications: The functionality of the software and constraints
on its operation must be defined.
2.Software development: The software to meet the requirement must be
produced.
3.Software validation: The software must be validated to ensure that it does
what the customer wants.
4.Software evolution: The software must evolve to meet changing client
needs.
The Software Process Model
A software process model is a specified definition of a software process, which is
presented from a particular perspective. Models, by their nature, are a simplification,
so a software process model is an abstraction of the actual process, which is being
described. Process models may contain activities, which are part of the software
process, software product, and the roles of people involved in software engineering.
Some examples of the types of software process models that may be produced are:
1.A workflow model: This shows the series of activities in the process along with
their inputs, outputs and dependencies. The activities in this model perform human
actions.
2.2. A dataflow or activity model: This represents the process as a set of activities,
each of which carries out some data transformations. It shows how the input to the
process, such as a specification is converted to an output such as a design. The
activities here may be at a lower level than activities in a workflow model. They may
perform transformations carried out by people or by computers.
3.3. A role/action model: This means the roles of the people involved in the
software process and the activities for which they are responsible.
There are several various general models or paradigms of software development:
1.The waterfall approach: This takes the above activities and produces them as
separate process phases such as requirements specification, software design,
implementation, testing, and so on. After each stage is defined, it is "signed off" and
development goes onto the following stage.
2.Evolutionary development: This method interleaves the activities of
specification, development, and validation. An initial system is rapidly developed
from a very abstract specification.
3.Formal transformation: This method is based on producing a formal
mathematical system specification and transforming this specification, using
mathematical methods to a program. These transformations are 'correctness
preserving.' This means that you can be sure that the developed programs meet its
specification.
4.System assembly from reusable components: This method assumes the parts
of the system already exist. The system development process target on integrating
these parts rather than developing them from scratch.
Software Crisis
1.Size: Software is becoming more expensive and more complex with the
growing complexity and expectation out of software. For example, the code
in the consumer product is doubling every couple of years.
2.Quality: Many software products have poor quality, i.e., the software
products defects after putting into use due to ineffective testing technique.
For example, Software testing typically finds 25 errors per 1000 lines of
code.
3.Cost: Software development is costly i.e. in terms of time taken to develop
and the money involved. For example, Development of the FAA's Advanced
Automation System cost over $700 per lines of code.
4.Delayed Delivery: Serious schedule overruns are common. Very often the
software takes longer than the estimated time to develop, which in turn leads
to cost shooting up. For example, one in four large-scale development
projects is never completed.
Program vs. Software
Software is more than programs. Any program is a subset of software, and it
becomes software only if documentation & operating procedures manuals are
prepared.
There are three components of the software as shown in fig:
1. Program: Program is a combination of source code & object code.
2. Documentation: Documentation consists of different types of manuals. Examples
of documentation manuals are: Data Flow Diagram, Flow Charts, ER diagrams, etc.
3. Operating Procedures: Operating Procedures consist of instructions to set up
and use the software system and instructions on how react to the system failure.
Example of operating system procedures manuals is: installation guide, Beginner's
guide, reference guide, system administration guide, etc.
Why Software Engineering required
Software Engineering is required due to the following
reasons:
•To manage Large software
•For more Scalability
•Cost Management
•To manage the dynamic nature of software
•For better quality Management
Characteristics of a good software engineer
The features that good software engineers should possess are as follows:
• Exposure to systematic methods, i.e., familiarity with software engineering
principles. Good technical knowledge of the project range (Domain
knowledge).
• Good programming abilities.
• Good communication skills.(These skills comprise of oral, written, and
interpersonal skills. High motivation.)
• Ability to work in a team Discipline,
etc.
• be fluent in one or more
programming languages.
Importance of Software Engineering
A typical Software Development Life Cycle consists of the following
stages −
Stage1: Planning and requirement analysis
• Requirement Analysis is the most important and necessary stage in SDLC.
• The senior members of the team perform it with inputs from all the stakeholders and domain experts in the
industry.
• Business analyst and Project organizer set up a meeting with the client to gather all the data like what the
customer wants to build, who will be the end user, what is the objective of the product.
• Before creating a product, a core understanding or knowledge of the product is very necessary.
• For Example, A client wants to have an application which concerns money transactions. In this method, the
requirement has to be precise like what kind of operations will be done, how it will be done, in which currency it will
be done, etc.
• Once the required function is done, an analysis is complete with auditing the feasibility of the growth of a
product. In case of any ambiguity, a signal is set up for further discussion.
• Once the requirement is understood, the SRS (Software Requirement Specification) document is created. The
developers should thoroughly follow this document and also should be reviewed by the customer for future
reference.
Stage2: Defining Requirements
Once the requirement analysis is done, the next stage is to certainly represent and
document the software requirements and get them accepted from the project
stakeholders.
This is accomplished through "SRS"- Software Requirement Specification document
which contains all the product requirements to be constructed and developed during
the project life cycle.
Stage3: Designing the Software
The next phase is about to bring down all the knowledge of requirements, analysis,
and design of the software project. This phase is the product of the last two, like
inputs from the customer and requirement gathering.
Stage4: Developing the project
n this phase of SDLC, the actual development begins, and the programming is built.
The implementation of design begins concerning writing code. Developers have to
follow the coding guidelines described by their management and programming tools
like compilers, interpreters, debuggers, etc. are used to develop and implement the
code.
Stage5: Testing
After the code is generated, it is tested against the requirements to make sure that the
products are solving the needs addressed and gathered during the requirements
stage.
During this stage, unit testing, integration testing, system testing, acceptance testing
are done.
Stage6: Deployment
Once the software is certified, and no bugs or errors are stated, then it is deployed.
Then based on the assessment, the software may be released as it is or with
suggested enhancement in the object segment.
After the software is deployed, then its maintenance begins.
Stage7: Maintenance
Once when the client starts using the developed systems, then the real issues
come up and requirements to be solved from time to time.
This procedure where the care is taken for the developed product is known as
maintenance.