0% found this document useful (0 votes)
17 views

Software Engineering 1 Unit

software engineering notes

Uploaded by

Akhilesh Singh
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

Software Engineering 1 Unit

software engineering notes

Uploaded by

Akhilesh Singh
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

What is Software

• Program: A step by step instructions to perform a specific task on a computer


in a programming language is called program, i.e. set of instructions.
• Software: Is a program along with proper documentation (requirement
analysis, design, coding, testing) and user manuals which mainly includes
installation guide and other manuals.
• Software = Program + documentation

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.

Major Problems in Software Development


• Inadequate Requirements Gathering:
• Ambiguous or incomplete requirements
• Lack of communication between stakeholders
Poor Project Management:
• Inadequate planning, monitoring, and control
• Lack of risk assessment and mitigation
• Multiplicity of software development life cycle
• Selection of wrong technology or tool for development.
• Insufficient Time and Budget:
• Unrealistic deadlines and resource constraints
• Inefficient resource allocation and prioritization
• Lack of Skilled Personnel:
• Inadequate expertise in the development team
• High turnover rates and loss of experienced staff
• Resistance to Change:
• Difficulty in adapting to new technologies or processes
• Reluctance to modify established practices or mindsets
• Rapid technology advancement

Software Quality Attributes


Correctness: The ability of the software to perform its intended tasks
effectively and meet user requirements.
• Usability: The ease with which users can learn, operate, and navigate the
software.
• Reliability: The software's consistency in producing accurate results and
maintaining performance over time.
• Efficiency: The optimal use of system resources, such as memory and
processing power, to achieve desired outcomes.
• Maintainability: The ease of updating, modifying, and fixing the software to
accommodate changing requirements or fix issues.
• Portability: The ability of the software to operate on different platforms or
environments without significant modifications.
• Scalability: The software's capacity to handle increased workloads or user
demands without compromising performance.
• Security: The software's ability to protect against unauthorized access, data
breaches, and other potential threats.
Software Process
• A software process (also known as software methodology) is a set of related
activities that lead to the production of the software. These activities may
involve the development of the software from the scratch, or, modifying an
existing system.
Feasibility study
• Find abstract definition of the problem
• Majorly checking the financial and technical feasibility
• Analysis of cost and befit ratio
• Checking availability of infrastructure and human resource
• Examination of alternative solution strategies.

• Requirement analysis and specification


• Try to understood the exact and complete requirement of the customer and
document them properly.
• Try to collect and analysis all data related to the project.
• In last, a large document will be written in the natural language which will
describe what the system will do without describing it how, called SRS
Software Requirement Specification.
• Very critical phase because, a small error hear can result of sever problem in
later stages.

• 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

SOFTWARE DEVELOPMENT LIFE CYCLE


Software Development Life Cycle, SDLC for short, is a well-defined, structured
sequence of stages in software engineering to develop the intended software
product.

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.

Operation and Maintenance


This phase confirms the software operation in terms of more efficiency and
less errors. If required, the users are trained on, or aided with the documentation
on how to operate the software and how to keep the software operational. The
software is maintained timely by updating the code according to the changes
taking place in user end environment or technology. This phase may face
challenges from hidden bugs and real-world unidentified problems.
Disposition
As time elapses, the software may decline on the performance front. It may go
completely obsolete or may need intense upgradation. Hence a pressing need to
eliminate a major portion of the system arises. This phase includes archiving
data and required software components, closing down the system, planning
disposition activity and terminating system at appropriate end-of-system time

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.

It has some types, such as:


Throwaway prototyping: Prototypes that are eventually discarded rather
than becoming a part of the finally delivered software:
Evolutionary prototyping: prototypes that evolve into the final system
through an iterative incorporation of user feedback.
Incremental prototyping: The final product is built as separate prototypes.
In the end, the separate prototypes are merged in an overall design.

Extreme prototyping: used in web applications mainly. Basically, it breaks


down web development into three phases, each one based on the preceding one.
The first phase is a static prototype that consists mainly of HTML pages. In the
second phase, the screens are programmed and fully functional using a
simulated services layer. In the third phase, the services are implemented

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

It is combining elements of both design and prototyping-in-stages, in an effort


to combine advantages of top-down and bottom-up concepts. This model of
development combines the features of the prototyping model and the waterfall
model. The spiral model is favoured for large, expensive, and complicated
projects. This model uses many of the same phases as the waterfall model, in
essentially the same order, separated by planning, risk assessment, and the
building of prototypes and simulations.
Difference Between Waterfall Prototype and Spiral Model
Waterfall model: -
1. It is a linear sequential life cycle model it is also called classical model. it
is proposed by Royce so that it is called as Royce model
2. when the requirement of the customer is clear then we preferred to use
waterfall model.
3. when the size of project is small it is preferably used.
4. in waterfall model we can’t start the next phase unless and until the does not
complete previous phase.

Prototype Model: - 1. when the requirement of customer is unclear and


certainly changing at that time prototype model are used.
2. in this model generally evolved a customer interaction.
3. typically, online system, web interface has a very high amount of interaction
with end user are best suited for prototype model.

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

You might also like