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.
Characteristics of software
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.
Characteristics of software
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.
Characteristics of software
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
Major Problems in Software Development
• 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
Major Problems in Software Development
• Insufficient Time and Budget:
• Unrealistic deadlines and resource constraints
• Inefficient resource allocation and prioritization
Major Problems in Software Development
• Lack of Skilled Personnel:
• Inadequate expertise in the development team
• High turnover rates and loss of experienced staff
Major Problems in Software Development
• Resistance to Change:
• Difficulty in adapting to new technologies or processes
• Reluctance to modify established practices or mindsets
• Rapid technology advancement
Similarity and Differences from conventional Engineering Process
• Nature of the Product:
• Similarity: Both processes aim to create high-quality, reliable products
• Difference: Conventional engineering focuses on physical systems, while
software engineering deals with intangible software systems
Similarity and Differences from conventional Engineering Process
• Design Flexibility and Iteration:
• Similarity: Both processes involve iterative design and prototyping
• Difference: Software engineering allows for greater flexibility and ease of
modification due to the non-physical nature of software
Similarity and Differences from conventional Engineering Process
• Quality Assurance and Testing:
• Similarity: Both processes emphasize the importance of testing and quality
assurance to ensure product performance and reliability
• Difference: Conventional engineering often involves physical testing of
prototypes, while software engineering relies on various types of software
testing, such as unit, integration, and system testing
• Project Management and Collaboration:
• Similarity: Both processes require effective project management, team
collaboration, and communication among stakeholders
• Difference: Software engineering projects may involve distributed teams and
rely more heavily on digital communication and collaboration tools
• Maintenance and Evolution:
• Similarity: Both processes involve maintenance and support activities to
ensure the ongoing performance and reliability of the product
• Difference: Software engineering typically demands more frequent updates,
patches, and evolution due to the rapidly changing nature of
technology and user requirements
• For hardware Same production cost every time, for software production cost only for the first
time and then only maintenance cost. This life cycle of the hardware follows the bath tub
curve, while in the life cycle of software failure intensity goes down with time
Software Quality Attributes
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.
• Modularity: The degree to which the software's components are organized into separate,
manageable units that can be independently developed or updated.
• Reusability: The potential for the software's components to be used in other applications or
contexts, reducing development time and costs.
• Testability: The ease with which the software can be tested to ensure it meets its
requirements and performs as expected.
Software Process
• A software process (also known as software methodology) is a set of related
activities that leads 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 organization follows some process when developing a s/w product, in
mature organization this is well defined and managed.
• In SDLC we development s/w in a systematic and disciplined manner. SDLC will define entry
and exit for every stage. It makes assessment possible, time prediction, cost prediction,
scheduling, to identify faults early possible.
• Selection of a correct development model play an important role in cost, quality, overall
success of the project.
Waterfall Model
• Developed in the 1970s by Winston W. Royce.
• Inspired by manufacturing and construction
processes, where each step relies on the
completion of the previous one.
• It is a simplest SDLC in which phases are
organised in a linear and sequential order.
• It is called waterfall model as its
diagrammatic representation resembles as
like a waterfall, also known as classical life
cycle model.
• This type of model is basically used for the
Small to medium-sized projects with clear,
well-defined requirements. When the
technology and tools to be used are well-
known and stable.
• Projects where minimal changes are
expected during the development process,
Advantage
• Easy to understand and implement, with
well-defined stages and clear milestones.
• Each phase has well defined input and
output, phases are processed and
completed one at a time. Phases do not
overlap.
• Low cost and easy to schedule, as all staff
do not work concurrently on the same
project, so can work on different projects.
Disadvantage
• Not suitable to accommodate any change
or iteration once development has begun. It
is always difficult to acquire of the
requirement in the starting.
• Working version is produced in the last
level, so not good for large size
sophisticated projects.
• High amounts of risk and uncertainty.
PROTOTYPE MODEL
• key design details to consider when designing a 3bhk flat in brief:
• Living Room: Sofa set, coffee table, entertainment center, lighting, natural light, TV unit,
indoor plant/art piece, coordinated color scheme.
• Dining Area: Space for 4-6 seater dining table, lighting fixture, storage space,
mirror/artwork.
• Kitchen: Storage cabinets, refrigerator, stove, oven, ventilation, lighting, durable countertops
and backsplash.
• Master Bedroom: Space for queen/king-sized bed, wardrobe, dressing table, natural light,
coordinated color scheme.
• Other Bedrooms: Space for single/double bed, wardrobe, natural light, coordinated color
scheme.
• Bathrooms: Space for shower, sink, toilet, ventilation, storage space, water-resistant
materials.
• Balcony: Space for seating/table, natural light, outdoor view, coordinated color
scheme.
PROTOTYPE MODEL
PROTOTYPE MODEL
PROTOTYPE MODEL
• Most of the customer are not sure about the
functionality they require from the software, as
a result the final s/w is not according to exact
demand.
• It is an iterative approach, which involves
developing an early working model of the
software based on the currently known
requirements with limited functionalities, low
reliability and untrusted performance.
• Refining it through user feedback, and repeating
the process until a satisfactory solution is
achieved.
• Then shown to the user, as per the feedback of
the user prototype is rebuilt and modified and
again shown to the user, the process continue
till the customer is not satisfied.
• After this process the final SRS document is
developed.
• Developing the prototype help in building the
actual design.
• Prototype model is of two types
• Evolutionary prototype
• Throwaway prototype
Evolutionary prototype
• Also known as incremental or iterative prototyping, develops a working
prototype, gradually improving and refining it based on user feedback.
• Prototype evolves into the final product over time with feature additions and
modifications. Accommodates changing requirements during the development
process.
Throwaway prototype
• Throwaway prototyping, also known as rapid or exploratory prototyping, involves
creating a temporary, simplified version of the software to validate the feasibility of
specific features, test ideas, or gain user feedback on the initial design. The
throwaway prototype is not intended to be used in the final product; instead, it is
discarded once it has served its purpose.
• Once the developers have gathered the necessary information, they can then start
developing the actual software product from scratch, using the lessons learned from
the prototype. This approach is particularly useful for testing complex or risky
features, as it helps to minimize the potential impact of these features on the overall
project.
• Advantage
• Customer get a chance to see the product early in the life cycle, and give
important feedback.
• There is a scope to accommodate new requirements.
• Developer and more confident, and hence risk is reduced.
• Disadvantage
• After seeing the early prototype use demand the actual system soon.
• If not managed properly the iterative process can run for a long time.
• If user is not satisfied, he may lose its interest in the project.
Spiral Model
• Barry boehm recognised the project risk factor into a life cycle model, the result
was the spiral model, which was presented in 1986.
• The radial dimensions of the model represent
the cumulative costs.
• Each path around the spiral is the indicative of
the increased cost.
• The angular dimensions represent the progress
made in the completing each cycle, each loop
of the spiral from X-axis clockwise through 360
represent one phase, which is divided into four
sectors
• Determining objectives and planning the
next phase
• Risk analysis
• Engineering the product, develop and test
the product
• Customer evaluation
• Advantages
• Provide early and frequent feedback of the customer, Additional Functionality
can be added at a later date.
• Management control of quality, correctness, cost, schedule is improved
through review at the conclusion of each iteration.
• Resolve all the possible risk involved in the product early in the life
cycle.
• Allows for incremental releases and testing.
• Disadvantages
• Not suitable for small size project as the cost of risk analysis may exceed the
actual cost of the project, High administrative overhead.
• It is complex and time-consuming to use.
• Risk analysis requires highly specific expertise.
Incremental Process / Incremental Development Model
• Incremental development is based on the idea of developing an initial implementation,
exposing this to user feedback, and evolving it through several versions until an
acceptable system has been developed.
• In incremental model the whole requirement is divided into various builds. Multiple
• Development cycles take place here, making the life cycle a “multi-waterfall”
cycle.
• Cycles are divided up into smaller, more easily managed modules. Each module
passes through the requirements, design, implementation and testing phases.
• A working version of software is produced during the first module, so you have
working software early on during the software life cycle.
• Each subsequent release of the module adds function to the previous release.
The process continues till the complete system is achieved.
• Generally, the early increments of the system should include the most important
or most urgently required functionality.
• tries to combine the benefits of both prototyping and the waterfall model.
Advantages of Incremental model:
• Generates working software quickly and early during the software life
cycle.
• This model is more flexible – less costly to change scope and
requirements.
• It is easier to test and debug during a smaller iteration.
• In this model customer can respond to each built.
• Easier to manage risk because risky pieces are identified and handled
during it’d iteration.
Disadvantages of Incremental model
• Needs good planning and design.
• Needs a clear and complete definition of the whole system before it
can be broken down and built incrementally.
• Total cost is higher than waterfall.
Aspect Evolutionary Development Models Iterative Enhancement Models
Adaptation and evolution of software in
Continuous improvement and refinement
Focus response to changing requirements and user
of a software system in iterations.
feedback.
Initial Release
May start with a basic prototype or a partially Begins with a basic version of the
software, functional system to gather feedback. usually with minimal functionality.
Develops through repeated cycles (e.g.,
Development Focuses on enhancing and refining an
prototypes or increments) with each cycle
Approach existing system through multiple iterations.
refining and expanding the software.
Heavily relies on user feedback to guide each Uses feedback to make improvements in
Feedback evolutionary stage, often with significant each iteration, usually with smaller,
Integration changes between stages. incremental changes.
Agile Development (as a specific approach
Prototyping Model, Spiral Model, Agile
Examples focusing on enhancement and refinement),
Development, RAD.