Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Module 1
Software development Life Cycle
1. Planning: This is the first phase where you identify what the software needs to
do, who will use it, and how it will be developed. You gather requirements, set
goals, and create a roadmap for the project.
2. Analysis: In this stage, you study the requirements in detail and break them
down into smaller tasks. You also analyze any potential challenges and risks
that may arise during development.
3. Design: Here, you create a blueprint of how the software will look and
function. You design the user interface, database structure, and the overall
architecture of the software.
4. Implementation: This is the actual coding phase, where you write the code
according to the design. Developers work on their assigned tasks, and the
software starts taking shape.
5. Testing: After writing the code, it's time to test the software to find and fix any
bugs or errors. The goal is to ensure the software works correctly and meets
the specified requirements.
6. Deployment: Once the software passes testing, it's ready to be deployed for
actual use. It is made available to users, either internally within an
organization or to the public.
7. Maintenance: Even after deployment, the software requires ongoing support
and updates. This phase involves fixing bugs, making improvements, and
adding new features based on user feedback.
Models
Classical WaterFall model:
Prototyping model:
1. Reduce Maintenance cost.
2. Errors can be detected much earlier as the system is made side by side.
Disadvanatges:
1. Prototyping tools are expensive.
2. Special tools & techniques are required to build a prototype.
In software engineering, a prototype model is an early version of software used to test and
show important features.It helps developers get feedback from users and others before
making the complete software.Prototyping finds mistakes, usability problems, and changes
needed in the software's design early on.Prototypes allow continuous improvements,
making the final software stronger and user-friendly.
Incremental model:
1. Flexible to changes
2. Module by module working
3. Customer Interaction Maximum
4. Large projects
Evolutionary model:
Evolutionary model is the combination of incremental and iterative models of the
software development life cycle. Incremental model builds some features and
delivers to the customers and builds again and delivers to the customers and this
goes on. Prototype model main advantage is the feedback process in every phase.
Combining these two features is there in Evolutionary model.
1. Flexible to changes
2. Risk analysis is better
3. Better suited for larger projects.
Disadvantages: Not suited for smaller projects
Spiral model:
The Spiral Model is a software development process that manages risks and improvements
step by step.It involves iterative cycles called spirals, where planning, analysis, development,
and evaluation happen in stages.This model is great for handling uncertainty and changing
requirements in large and complex projects.By using the Spiral Model, developers can build
high-quality software through continuous refinement and customer feedback.
Agile model:
This is the latest software development model.
"Agile" means being quick and flexible. The "Agile process model" is a way of developing
software that focuses on doing things in small steps. Instead of planning everything at the
start, it breaks tasks into smaller parts called iterations. The project's main requirements are
set in the beginning, but the details for each step are not fixed. The number of steps, how
long they will take, and what will be done in each step are decided beforehand. Agile
encourages adaptability, teamwork, and the ability to respond to changes during the
software development process.
Advantages:
1. Frequent Delivering
2. Face to face communication with client
DisAdvantages:
1. Less Documentation
2. Maintenance problem
Module 2
Software Requirements | Requirement Engineering
Requirements engineering (RE) is an important part of the engineering design
process where we figure out, write down, and keep track of what the customer
wants. It helps us understand the customer's needs, check if the ideas are possible,
find a good solution, and clearly explain that solution. We make sure the details are
right and manage these requirements as we turn them into a working system. In
simple words, requirement engineering is the organized use of methods, tools, and
notation to describe how a proposed system should work and what limits it may have
It is a four-step process, which includes -
1. Feasibility Study
2. Requirement Gathering and Analysis
3. Software Requirement Specification
4. Software Requirement Review
5. Software Requirement Management
1. Feasibility Study: At the beginning, we check if the project is possible and worth
doing. We look at technical, economic, legal, and scheduling aspects to see if the
software development idea makes sense.
2. Requirement Gathering and Analysis: In this phase, we talk to different people
involved, like users and clients, to find out what they need from the software. We
carefully study and understand these requirements to make sure they are clear and
complete.
3. Software Requirement Specification: After gathering and understanding the
requirements, we write them down in a detailed document called the Software
Requirement Description. This document explains what the software will do and
what limitations it will have, serving as a reference for everyone involved.
4. Software Requirement Review: We review and check the written requirements to
ensure they accurately represent what people want. Any mistakes or unclear points
are corrected before we move on to the next stages of software development, so we
don't waste time and resources.
5. Software Requirement Management: During the whole software development
process, requirements might change because of new needs or technology.
Requirement Management means keeping track of these changes, talking with
everyone involved, and making sure we handle any modifications in a planned way.
Functional Vs Non-Functional Requirements
Functional Requirements: These are the specific things the software should do or the
functions it should perform. Functional requirements describe the features and
capabilities that the users expect from the software, such as login functionality, data
search, or sending notifications.
Non-Functional Requirements: These are the qualities or characteristics that the
software should have, but they are not directly related to specific functions. Non-
functional requirements focus on how well the software works and its overall
performance. Examples include speed, security, user-friendliness, and reliability.
Describe what the software should Describe how well the software should
do and its specific functionalities or perform and its overall characteristics or
Focus features. qualities.
Easily verifiable through testing and Verification may be more subjective and
Verifiability validation. require different assessment methods.