Software Engineering 1 Unit
Software Engineering 1 Unit
Software Components
• A program is a subset of software and it becomes software only if
documentation and an operating procedure manual are prepared.
• Program
• Documents
• Software documentation consist all the description, programs, graphics and
instructions pertaining to design, coding, testing and preparation of software.
• Operating Procedure (User Manual & Operational Manual)
• Provides information about what software is how to work with it how to
install it on your system and how to control all the activities of the software.
Software Crisis
• Problems with software?
• The major problem with current scenario in Software industry is, software
usually overrun their development cost, they exceed their development
duration limits, are usually of poor quality.
• As long as there were no machines, programming was no problem at all;
when we had a few weak computers, programming became a mild problem,
and now we have gigantic computers, programming has become an equally
gigantic problem. — Edsger Dijkstra, The Humble Programmer (EWD340),
Communications of the ACM
What is Software Engineering
• In software industry we understand that there is an urgent need to use a
proper strategies, process and development cycles so that we can produce, or
we can design quality products that are within budget, with in time and must
satisfy the requirement of their users.
• Software engineering is the systematic application of engineering principles
and methods to the design, development, testing, and maintenance of
software products. It involves the use of various tools, techniques, and
methodologies to manage the software development process and ensure the
quality, reliability, and maintainability of software products.
Characteristics of software
1. Software Development vs. Manufacturing:
1.Software is crafted through a process of coding and development.
2.Unlike physical products, it isn't produced in factories through a
manufacturing process.
2. No Physical Wear and Tear:
1.Software doesn't deteriorate over time like physical objects.
2.Its performance doesn't degrade due to physical use.
3. Custom-Built Nature:
1.Most software is specially designed to meet specific needs.
2.It's often not just a combination of pre-existing components but requires
unique coding and design.
4. Intangibility of Software:
1.Software can't be touched or handled physically.
2.It exists as code and functions within computers or digital devices.
• Designing
• We transform the requirements into a structure that is suitable for
implementation of the code in a specific programming language.
• Overall architecture and the algorithmic strategy are chosen (Coupling and
cohesion).
• Lastly will prepare a document called SDD (software design description),
which will describe how the system will perform functionality.
Coding
• Goal of coding is to translate the design of the system into a code of
programming language.
• It affects both testing and maintenance, so also critical feature.
• We will be discussing some guidelines for how to write maintainable and
readable code.
• Testing
• Because of human errors there will be a bug or fault in the code and
if that bug/fault is executed it become a failure.
• Software testing is a process of executing a program with the
intention of finding bugs or fault in the code.
• Implementation
• Software is installed on the user site and training of the user
and h/w requirement check is done.
• Maintenance
• Any change made in the software after its official release is called
maintenance. It could be because of various reasons.
• Adaptive
• Corrective
• Perfective
SDLC Activities
SDLC provides a series of steps to be followed to design and develop a software
product efficiently. SDLC framework includes the following steps:
Communication
This is the first step where the user initiates the request for a desired software
product. He contacts the service provider and tries to negotiate the terms. He
submits his request to the service providing organization in writing.
Requirement Gathering
This step onwards the software development team works to carry on the
project. The team holds discussions with various stakeholders from problem
domain and tries to bring out as much information as possible on their
requirements. The requirements are contemplated and segregated into user
requirements, system requirements and functional requirements. The
requirements are collected using a number of practices as given -
studying the existing or obsolete system and software,
conducting interviews of users and developers,
referring to the database or
collecting answers from the questionnaires.
Feasibility Study
After requirement gathering, the team comes up with a rough plan of
software process. At this step the team analyses if a software can, be made to
fulfil all requirements of the user and if there is any possibility of software
being no more useful. It is found out, if the project is financially, practically and
technologically feasible for the organization to take up. There are many
algorithms available, which help the developers to conclude the feasibility of a
software project.
System Analysis
At this step the developers decide a roadmap of their plan and try to bring
up the best software model suitable for the project. System analysis includes
Understanding of software product limitations, learning system related
problems or changes to be done in existing systems beforehand, identifying and
addressing the impact of project on organization and personnel etc. The project
team analyses the scope of the project and plans the schedule and resources
accordingly.
Software Design
Next step is to bring down whole knowledge of requirements and analysis
on the desk and design the software product. The inputs from users and
information gathered in requirement gathering phase are the inputs of this step.
The output of this step comes in the form of two designs; logical design and
physical design. Engineers produce meta-data and data dictionaries, logical
diagrams, data-flow diagrams and in some cases pseudo codes.
Coding
This step is also known as programming phase. The implementation of
software design starts in terms of writing program code in the suitable
programming language and developing error-free executable programs
efficiently.
Testing
An estimate says that 50% of whole software development process should be
tested. Errors may ruin the software from critical level to its own removal.
Software testing is done while coding by the developers and thorough testing is
conducted by testing experts at various levels of code such as module testing,
program testing, product testing, in-house testing and testing the product at
user’s end. Early discovery of errors and their remedy is the key to reliable
software
Integration
Software may need to be integrated with the libraries, databases and other
program(s). This stage of SDLC is involved in the integration of software with
outer world entities.
Implementation
This means installing the software on user machines. At times, software needs
post-installation configurations at user end. Software is tested for portability and
adaptability and integration related issues are solved during implementation.
SDLC Model
Waterfall Model
Description
The Waterfall Model is a linear sequential flow. In which progress is seen as
flowing steadily downwards (like a waterfall) through the phases of software
implementation. This means that any phase in the development process begins
only if the previous phase is complete. The waterfall approach does not define
the process to go back to the previous phase to handle changes in requirement.
The waterfall approach is the earliest approach and most widely known that was
used for software development.
The usage
Projects which not focus on changing the requirements, for example, projects
initiated from a request for proposals (RFPs), the customer has a very clearly
documented requirement.
Prototyping Model
Description
It refers to the activity of creating prototypes of software applications, for
example, incomplete versions of the software program being developed. It is an
activity that can occur in software development and it used to visualize some
component of the software to limit the gap of misunderstanding the customer
requirements by the development team. This also will reduce the iterations may
occur in the waterfall approach and hard to be implemented due to the
inflexibility of the waterfall approach. So, when the final prototype is
developed, the requirement is considered to be frozen.
The usage
This process can be used with any software developing life cycle model.
While this shall be chosen when you are developing a system has user
interactions. So, if the system does not have user interactions, such as a system
does some calculations shall not have prototypes.
Spiral Model (SDM)
Description
Spiral model: -
1.Spiral model is called a meta model. Spiral model is made with the features of
Prototype model and Waterfall model.
2.Spiral model takes special care about Risk Analysis. Whereas it is not given
importance in Prototype model
3. Spiral Model is Iterative Process