What is the Difference Between Software Engineering and
Software?
To
the untrained eye, there is no difference between software engineering and
software development. However, within the IT world, there are major dissimilarities.
Software Engineering vs. Software Development
The
difference between software engineering
and software development begins with job function. A software engineer may
be involved with software development, but few software developers are
engineers.
To
explain, software engineering refers
to the application of engineering principles to create software. Software
engineers participate in the software development life cycle through connecting
the client’s needs with applicable technology solutions. Thus, they
systematically develop processes to provide specific functions. In the end,
software engineering means using engineering concepts to develop software.
On
the other hand, software developers
are the driving creative force behind programs. Software developers are
responsible for the entire development process. They are the ones who
collaborate with the client to create a theoretical design. They then have
computer programmers create the code needed to run the software properly.
Computer programmers will test and fix problems together with software
developers. Software developers provide project leadership and technical
guidance along every stage of the software development life cycle.
Software Engineer Skills and Job Description
Software engineers are expected to have technical
expertise, demonstrable personal accomplishments and experience with using open
source tools and projects. They should be proficient with pattern design,
automated testing and fault-tolerant systems. Software engineers should know how
to create and maintain IT architecture, large scale data stores and cloud-based
systems. They should also be familiar with how to build scalable data pipelines
and scalable domain specific languages. They must be able to work effectively
by themselves and with remote teams.
Senior software engineers must oversee complex systems analysis,
design and development programs. They will play an active role as a leader,
consultant and individual contributor on various projects. They must provide
analytical advice in identifying and implementing new IT uses in order to help
clients and the company reach strategic objectives. They must be able to manage
resources, coordinate development tasks and supervise technical project plans.
They often collaborate with IT, operations and development staff through the
software development life cycle. Finally, they must maintain a smooth running
operation through identifying and recommending improvement processes.
Software Developer Skills and Job Description
Software
developers must have excellent analytical skills because they will be required
to continually compare needs with software capabilities. They must be familiar
with computer languages in order to effectively work with computer programs. In
order to do this, they must have formidable feedback and communication skills.
Keep in mind that minor error or miscommunications could result in major
financial and operational problems. Being detail orientated will help them
manage simultaneous projects at different development stages.
Software
developers must continually monitor project updates and reported defects in
order to manage necessary modifications. Consequently, they must constantly
shift gears between assigned projects, deadlines and schedules. Software
developers must conduct experimental software runs to ensure quality and
consistency. They must have an eye for perfection in order to properly direct
repairs and revisions of programs designed to increase operating efficiency.
Some software developers are tasked with being the primary point of contact with
clients and vendors.
In
the end, the main difference between software engineering and software
development is that the latter overs the engineering while the former focuses
on creating functional programs.
SDLC Overview:
SDLC
is a process followed for a software project, within a software organization.
It consists of a detailed plan describing how to develop, maintain, replace and
alter or enhance specific software. The life cycle defines a methodology for improving
the quality of software and the overall development process
Stage of SDLC:
1). Requirement Gather & Analysis
2.) Design
3.) Development OR Coding
4.) Testing
5.) Maintenance/Deployment
1)
Requirement Gathering and Analysis
During
this phase, all the relevant information is collected from the customer to
develop a product as per their expectation. Any ambiguities must be resolved in
this phase only.
Business
analyst and Project Manager set up a meeting with the customer to gather all
the information like what the customer wants to build, who will be the end
user, what is the purpose of the product. Before building a product a core understanding
or knowledge of the product is very important.
2) Design
In
this phase, the requirement gathered in the SRS document is used as an input
and software architecture that is used for implementing system development is
derived.
3) Implementation or Coding
Implementation/Coding
starts once the developer gets the Design document. The Software design is translated
into source code. All the components of the software are implemented in this
phase.
4) Testing
Testing
starts once the coding is complete and the modules are released for testing. In
this phase, the developed software is tested thoroughly and any defects found
are assigned to developers to get them fixed.
Retesting,
regression testing is done till the point at which the software is as per the
customer’s expectation. Testers refer SRS document to make sure that the
software is as per the customer’s standard.
5) Maintenance
After
the deployment of a product on the production environment, maintenance of the
product i.e. if any issue comes up and needs to be fixed or any enhancement is
to be done is taken care by the developers.
Deployment
Once
the product is tested, it is deployed in the production environment or first
UAT (User Acceptance testing) is done depending on the customer expectation.
In
the case of UAT, a replica of the production environment is created and the
customer along with the developers does the testing. If the customer finds the
application as expected, then sign off is provided by the customer to go live
Type Of SDLC:
1) Waterfall
2) V-shaped
3) Prototype
4) Spiral
5) Interactive
Incremental
6) Big
Bang
7) Agile
Agile Model:
Agile
Model is a combination of the Iterative and incremental model. This model
focuses more on flexibility while developing a product rather than on the
requirement.
In
Agile, a product is broken into small incremental builds. It is not developed
as a complete product in one go. Each build increments in terms of features.
The next build is built on the previous functionality.
In
agile iterations are termed as sprints. Each sprint lasts for2-4 weeks. At the
end of each sprint, the product owner verifies the product and after his
approval, it is delivered to the customer.
Customer
feedback is taken for improvement and his suggestions and enhancement are
worked on in the next sprint. Testing is done in each sprint to minimize the
risk of any failures.
Advantages of Agile Model:
It
allows more flexibility to adapt to the changes.
The
new feature can be added easily.
Customer
satisfaction as the feedback and suggestions are taken at every stage.
Disadvantages:
Lack
of documentation.
Agile
needs experienced and highly skilled resources.
If
a customer is not clear about how exactly they want the product to be, then the
project would fail.
Conclusion
Adherence
to a suitable life cycle is very important, for the successful completion of
the Project. This, in turn, makes the management as well easier.
Different
SDLC models have their own Pros and Cons. The best model for any Project can be
determined by the factors like Requirement (whether it is clear or unclear),
System Complexity, Size of the Project, Cost, Skill limitation etc.
TO Be Continued.....
