Assignment 1 SDLC Nguyễn Hữu Quang
Assignment 1 SDLC Nguyễn Hữu Quang
ASSIGNMENT NUMBER: 01
SUBMISSION DATE:11/04/2023
DATE RECEIVED:10/01/2023
Table of contents
I. Introduction.......................................................................................................................................5
II. Theory............................................................................................................................................5
1. Software development life cycle....................................................................................................5
2. Two sequential models..................................................................................................................8
3. Two iterative models...................................................................................................................12
4. Risk management in Software Development Life Cycle...........................................................17
5. Why choose the right model for the project?.............................................................................18
6. Specific example of 1 large software effectively applying the Waterfall model......................19
7. Feasibility report.........................................................................................................................20
8. Technological solutions in the feasibility report........................................................................24
III. Practice.........................................................................................................................................25
1. Project presentation....................................................................................................................25
2. Project investigation....................................................................................................................25
3. Software analysis.........................................................................................................................29
4. Resolve user requests...................................................................................................................36
5. Analysis of software behavioral tools and techniques...............................................................42
6. Finite State Machine (FSM) and Extended FSM......................................................................43
7. Improve the reliability and efficiency of data-driven software................................................43
IV. References....................................................................................................................................44
I. Introduction
An organized method for creating software is called the Software Development Life Cycle
(SDLC). Software development teams go through the steps of the SDLC to plan, create, test, and
deploy high-quality software. A structure known as the software development life cycle (SDLC)
aids in making sure that software development projects are finished on schedule, within budget,
and to the appropriate quality standards.
An overview of the SDLC process and its phases is what this assignment aims to do. The
assignment will also examine the advantages of applying the SDLC as well as any potential
disadvantages of doing otherwise. Also, this project will emphasize how crucial documentation,
teamwork, and communication are to the SDLC process.
There are four major components to this project. The SDLC, its stages, and the value of
employing the SDLC are briefly covered in the first part. The second section examines the
advantages of employing the SDLC, such as higher effectiveness, enhanced quality, and lower
costs. The third section looks at the potential negative effects of not using the SDLC, including
as project delays, cost overruns, and low-quality software. The fourth component stresses the
value of documentation, cooperation, and communication in the SDLC process.
The overall goal of this project is to offer a thorough grasp of the SDLC and its significance in
software development. To guarantee that their software projects are effectively finished, software
development teams must adhere to a well defined procedure like the SDLC.
II. Theory
1. Software development life cycle
- SDLC or the Software Development Life Cycle is a process that produces software
with the highest quality and lowest cost in the shortest time possible. SDLC provides
a well-structured flow of phases that help an organization to quickly produce high-
quality software which is well-tested and ready for production use.
- Software Development Life Cycle (SDLC) refers to a method with well-defined
processes for creating high-quality software. In detail, the SDLC methodology
focuses on the following phases of software development:
o Requirements analysis
This stage of the SDLC means getting input from all stakeholders,
including customers, salespeople, industry experts, and programmers.
Learn the strengths and weaknesses of the current system with
improvement as the goal.
o Planning
In this stage of the SDLC, the team determines the cost and resources
required for implementing the analyzed requirements. It also details the
risks involved and provides sub-plans for softening those risks. In other
words, the team should determine the feasible of the project and how they
can implement the project successfully with the lowest risk in mind.
o Software design as architectural design
This phase of the SDLC starts by turning the software specifications into a
design plan called the Design Specification. All stakeholders then review
this plan and offer feedback and suggestions. It’s crucial to have a plan for
collecting and incorporating stakeholders input into this document. Failure
at this stage will almost certainly result in cost overruns at best and the
total collapse of the project at worst.
o Software Development
At this stage, the actual development starts. It’s important that every
developer sticks to the agreed blueprint. Also, make sure you have proper
guidelines in place about the code style and practices. For example, define
a nomenclature for files or define a variable naming style such as
camelCase. This will help your team to produce organized and consistent
code that is easier to understand but also to test during the next phase.
o Experiment
In this stage, we test for defects and deficiencies. We fix those issues until
the product meets the original specifications. In short, we want to verify if
the code meets the defined requirements. Try Stackify’s free code profiler,
Prefix, to write better code on your workstation. Prefix works with .NET,
Java, PHP, Node.js, Ruby, and Python.
o Deployment
At this stage, the goal is to deploy the software to the production
environment so users can start using the product. However, many
organizations choose to move the product through different deployment
environments such as a testing or staging environment. This allows any
stakeholders to safely play with the product before releasing it to the
market. Besides, this allows any final mistakes to be caught before
releasing the product.
- Examples
o Waterfall Model
This SDLC model is the oldest and most straightforward. With this
methodology, we finish one phase and then start the next. Each phase has
its own mini-plan and each phase “waterfalls” into the next. The biggest
drawback of this model is that small details left incomplete can hold up the
entire process.
o Agile Model
The Agile SDLC model separates the product into cycles and delivers a
working product very quickly. This methodology produces a succession of
releases. Testing of each release feeds back info that's incorporated into the
next version. According to Robert Half, the drawback of this model is that
the heavy emphasis on customer interaction can lead the project in the
wrong direction in some cases.
o Iterative Model
This SDLC model emphasizes repetition. Developers create a version very
quickly and for relatively little cost, then test and improve it through rapid
and successive versions. One big disadvantage here is that it can eat up
resources fast if left unchecked.
o V-Shaped Model
An extension of the waterfall model, this SDLC methodology tests at each
stage of development. As with waterfall, this process can run into
roadblocks.
o Big Bang Model
This high-risk SDLC model throws most of its resources at development
and works best for small projects. It lacks the thorough requirements
definition stage of the other methods.
o Spiral Model
The most flexible of the SDLC models, the spiral model is similar to the
iterative model in its emphasis on repetition. The spiral model goes
through the planning, design, build and test phases over and over, with
gradual improvements at each pass.
2. Two sequential models
a. Waterfall Model
- The Waterfall Model is one of the earliest software development models, which is
also known as a linear-sequential life cycle model. The waterfall model consists of
sequential phases of software development, where each phase must be completed
before moving on to the next one.
- The waterfall model has five to six phases depending on the variations that are used.
The main phases are:
o Requirements gathering and analysis: This phase involves gathering the
software requirements from the stakeholders, analyzing them, and defining the
scope of the project. The output of this phase is the Software Requirement
Specification (SRS) document.
o System design: In this phase, the software architecture is designed based on the
requirements specified in the SRS. The system design includes hardware and
software specifications, database design, user interface design, and system
flowcharts.
o Implementation: This phase involves coding and unit testing. Developers use
the designs developed in the previous phase to write code, and then test their
code to ensure it meets the specifications.
o Testing: In this phase, the software is tested to identify any defects and errors.
This includes functional testing, performance testing, and user acceptance
testing.
o Maintenance: The maintenance phase begins after the product has been
deployed. Developers will continue to monitor and support the product,
including bug fixes, updates, and feature upgrades.
- The Waterfall model is a linear and sequential software development model that
follows a set of structured steps, with each step being completed before the next one
begins. It has both advantages and disadvantages:
o Advantages:
Simple and easy to understand: The Waterfall model is easy to understand
and use. It follows a sequential process and is easy to implement and
manage, making it a popular choice for smaller projects.
Clear project milestones: The Waterfall model emphasizes a well-defined
set of project milestones, making it easy to track progress and measure
success. Each stage must be completed before moving to the next,
demonstrating that the project remains on track.
Minimal customer involvement: The Waterfall model requires minimal
involvement from the customer or end-user during the development
process, which can be an advantage if the customer does not have the time
or resources to devote to the project.
Comprehensive documentation: The Waterfall model emphasizes
documentation at every stage of the development process, which helps to
ensure that the project is well-documented and can be easily maintained
and supported over time.
o Disadvantages:
Lack of flexibility: The Waterfall model is a rigid and inflexible process
that does not allow for changes once the development process has begun.
This can be a significant disadvantage, especially if the customer
requirements change during the project.
Late discovery of defects: The Waterfall model does not emphasize testing
until the later stages of the development process, which can result in the
late discovery of defects. This can be expensive to fix and can delay the
project completion.
No customer involvement: While minimal customer involvement can be an
advantage, it can also be a disadvantage. Without regular customer
involvement, there is a risk that the final product will not meet the
customer's needs or expectations.
Limited scope for risk management: The Waterfall model has limited
scope for risk management. Risk analysis and mitigation are typically
carried out during the planning phase, with no further opportunity to
manage risks throughout the development process.
b. V-Model
- The V-Model is a software development model that is an extension of the Waterfall
Model. It is also known as the Verification and Validation model. The V-Model
emphasizes the importance of testing and verification in each phase of the
development process, which is represented by the V-shaped diagram.
- The V-Model consists of two major phases - the left side of the V-model represents
the planning and design phase, while the right side of the V-model represents the
testing and validation phase. The process starts with the requirements gathering
phase, similar to the Waterfall Model, and moves down to the design phase.
However, instead of directly moving on to implementation, the V-Model moves to
the testing phase in parallel.
- The main phases of the V-Model are:
o Requirements gathering and analysis: In this phase, the software requirements
are gathered and analyzed, and the Software Requirements Specification (SRS)
document is created.
o System design: In this phase, the system architecture is designed based on the
requirements specified in the SRS document.
o Module design: In this phase, the detailed design of each module is created.
o Implementation: In this phase, the code is written based on the module design.
o Unit testing: In this phase, the modules are tested for their functionality.
o Integration testing: In this phase, the modules are integrated and tested as a
group.
o System testing: In this phase, the system is tested to ensure that it meets the
requirements specified in the SRS.
o Acceptance testing: In this phase, the software is tested by the end-users to
ensure that it meets their needs.
- The V-Model is a software development model that is based on the Waterfall model,
but with added emphasis on testing at each stage of the development process. It has
both advantages and disadvantages:
o Advantages:
Early testing: The V-Model emphasizes testing at every stage of the
development process, which helps to catch defects early on in the process,
when they are less expensive to fix.
Clear project milestones: The V-Model emphasizes a well-defined set of
project milestones, making it easy to track progress and measure success.
Each stage must be completed before moving to the next, demonstrating
that the project remains on track.
Comprehensive documentation: The V-Model emphasizes documentation
at every stage of the development process, which helps to ensure that the
project is well-documented and can be easily maintained and supported
over time.
Clear relationship between development and testing: The V-Model
emphasizes the close relationship between development and testing, with
each stage of development having a corresponding testing stage. This
ensures that testing is an integral part of the development process, rather
than an afterthought.
o Disadvantages:
Lack of flexibility: The V-Model is a rigid and inflexible process that does
not allow for changes once the development process has begun. This can
be a significant disadvantage, especially if the customer requirements
change during the project.
Late discovery of defects: While the V-Model emphasizes testing at every
stage, testing is still significantly carried out towards the end of each stage.
This can result in the late discovery of defects, which can be expensive to
fix and can delay the project completion.
Limited customer involvement: The V-Model requires minimal customer
involvement during the development process, which can be a disadvantage
if the customer does not have the time or resources to devote to the project.
Limited scope for risk management: The V-Model has limited scope for
risk management. Risk analysis and mitigation are typically carried out
during the planning phase, with no further opportunity to manage risks
throughout the development process.
3. Two iterative models
a. Spiral-Model
- The Spiral Model is a flexible software development model that uses circular
development cycles, each of which produces a more complete version of the
software, improving and extending functionality over the previous version. previous
version. The Spiral model helps ensure that the development process is optimized
and the finished product meets the customer's requirements.
- The Spiral model was developed to overcome the limitations of the Waterfall model,
which also uses the same development steps as Waterfall, but adds iterative cycles to
help develop a better products.
o Disadvantages:
Complexity: The Spiral model can be more complex than other software
development models, as it requires a lot of planning and risk analysis. This
can make it difficult to implement and manage, especially for smaller
projects with limited resources.
Costly: The Spiral model can be more expensive than other software
development models, as it requires a significant amount of planning and
analysis. This can make it impractical for projects with tight budgets or
limited resources.
Time-consuming: The Spiral model can be time-consuming, as it involves
a lot of planning, analysis, and iterative development cycles. This can
make it difficult to complete projects on time, especially if there are
frequent changes to project requirements or specifications.
Overemphasis on risk management: The Spiral model's emphasis on risk
management can sometimes result in an overemphasis on identifying and
managing potential problems. This can lead to a lack of focus on the actual
development of the software product, which can delay the project and
increase costs.
b. Agile Model
- The Agile model is a software development methodology that emphasizes flexibility,
collaboration, and rapid delivery of working software. It is based on the Agile
Manifesto, a set of guiding values and principles for software development that
prioritizes individuals and interactions, working software, customer collaboration,
and responding to change over processes and tools, comprehensive documentation,
contract negotiation, and a plan.
- The Agile model is iterative and incremental, meaning that software is developed in
small, rapid cycles called sprints. Each sprint focuses on delivering a working
product or a set of features that are prioritized based on their importance to the
customer. The development team works closely with the customer or product owner
to understand the requirements and to ensure that the product is meeting the
customer's needs.
- One of the key features of the Agile model is the use of cross-functional, self-
organizing teams that work together to deliver a product. The team members are
responsible for planning, designing, coding, testing, and delivering the software,
which allows for a greater sense of ownership and accountability.
- The Agile model also emphasizes continuous improvement and feedback. After each
sprint, the team commented on the process and the product, and looks for ways to
improve both. This allows the team to adapt to changes in the requirements, to
improve the quality of the software, and to optimize the development process.
- Some common Agile methodologies include Scrum, Kanban, and Lean. Scrum is
perhaps the most widely used Agile methodology, and it involves a set of predefined
roles, ceremonies, and artifacts that help to structure the development process.
Kanban is a visual framework that helps teams manage their work and workflow, and
it focuses on minimizing work in progress and optimizing the flow of work. Lean is
an approach that focuses on maximizing customer value while minimizing waste.
- Advantages of the Agile model include:
o Flexibility and adaptability: The Agile model is highly flexible and adaptable,
making it well-suited for projects where the requirements are constantly
changing or ambiguous.
o Rapid delivery of working software: The Agile model focuses on delivering
working software in small, frequent iterations, which allows for rapid delivery
of features and for the customer to start using the software early on in the
development process.
o Emphasis on team collaboration and communication: The Agile model
encourages collaboration and communication within the development team,
leading to a more cohesive team and a better product.
o Greater customer satisfaction: By involving the customer in the development
process and focusing on delivering a product that meets their needs, the Agile
model can lead to greater customer satisfaction and retention.
III. Practice
1. Project presentation
- A phone retailer with a focus on offering popular brand smartphones and accessories
is planning to launch an online store. The retailer decides to limit its online sales to
that channel.
- The newest and best-selling goods are shown on the homepage for clients who visit
the website selling phones as soon as they reach the site. Also, shoppers may browse
items based on brand or machine performance. When a consumer wants to buy
something, they must first establish an account, log in, choose the product they want
to purchase, add it to the shop, and then select a payment option. The consumer can
evaluate their order history if they decide not to purchase the order any longer.
2. Project investigation
- Functional requirements and non-functional requirements are two different types of
requirements that are used to define and evaluate software systems.
- Functional requirements are the features and capabilities that a software system must
provide to meet the needs of the users. They define what the system should do and
the expected behavior of the system in response to specific inputs. Functional
requirements describe the specific functions that the software must perform, and
typically include use cases, scenarios, and user stories. Examples of functional
requirements might include:
o The ability to create and edit user accounts
o The ability to search and filter data
o The ability to generate reports
- Non-functional requirements, on the other hand, define how well the software should
perform certain functions. Non-functional requirements are the quality attributes that
a software system must meet in order to be considered effective, efficient, and
usable. They describe the performance, security, reliability, and usability
characteristics of the system. Examples of non-functional requirements might
include:
o The response time of the system
o The security and privacy of user data
o The scalability and performance of the system
- Non-functional requirements are often more difficult to define and evaluate than
functional requirements, as they are not always directly observable and may require
specialized testing or analysis. However, they are just as important as functional
requirements in proving that a software system meets the needs of its users and
stakeholders. Both functional and non-functional requirements must be considered in
the design, development, and testing of a software system to ensure that it meets the
needs of its intended users.
- functional requirements for a "phone store management system":
o User Management:
The system should allow for user authentication and role-based access
control.
The system should allow for the creation, deletion, and modification of
user accounts.
o Product Management:
The system should allow for the creation, deletion, and modification of
product information, including product name, price, stock level, and
product description.
The system should allow for the tracking of product inventory levels and
notifications when stock levels fall below a certain threshold.
The system should allow for the creation and management of product
categories.
o Sales Management:
The system should allow for the creation, modification, and deletion of
sales orders.
The system should allow for the tracking of sales orders, including sales
date, customer information, product information, and total amount.
The system should allow for the printing of sales receipts and invoices.
o Reporting:
The system should allow for the creation and generation of reports,
including sales reports, inventory reports, and financial reports.
The system should allow for the customization of report parameters and
the ability to filter and sort data.
o Customer Management:
The system should allow for the creation, deletion, and modification of
customer accounts.
The system should allow for the tracking of customer information,
including customer name, contact information, and purchase history.
The system should allow for the management of customer preferences and
loyalty programs.
o Payment Management:
The system should allow for the processing of payments, including cash,
credit card, and other payment methods.
The system should allow for the tracking of payment information,
including payment amount, payment date, and payment method.
- non-functional requirements for a "phone store management system":
o Performance:
The system should have fast response times to user requests.
The system should be able to handle a large number of concurrent users.
The system should have minimal downtime for maintenance or upgrades.
o Security:
The system should have secure user authentication and role-based access
control to protect sensitive data.
The system should use encryption to protect data in transit and at rest.
The system should have backup and disaster recovery measures in place to
protect against data loss.
o Usability:
The system should have a user-friendly interface that is easy to navigate
and use.
The system should provide clear and concise error messages when errors
occur.
The system should support multiple languages to accommodate users who
speak different languages.
o Compatibility:
The system should be compatible with multiple platforms, including
desktop and mobile devices.
The system should be compatible with different web browsers.
The system should be able to integrate with other systems or applications
used by the business.
o Scalability:
The system should be able to handle an increasing number of products,
customers, and sales orders without decreasing performance.
The system should be able to handle an increasing number of stores or
locations.
The system should be able to handle an increasing number of users without
decreasing performance.
- project feasibility
o Technical Feasibility: The technical feasibility of the "phone store management
system" has been evaluated based on the availability of technology and the
technical expertise required for its development. The project team has the
necessary technical skills and experience to develop the system. Additionally,
the technology required for the project is readily available, including databases,
web development frameworks, and programming languages.
o Economic Feasibility: The economic feasibility of the "phone store
management system" has been evaluated based on the estimated costs and
potential benefits of the project. The estimated development costs include
personnel costs, software and hardware costs, and other project expenses. The
potential benefits include increased efficiency, reduced labor costs, and
improved inventory management. Based on the estimated costs and potential
benefits, the project is economically feasible and has the potential to provide a
significant return on investment.
3. Software analysis
a. Stakeholders
- In the context of business and project management, stakeholders refer to any
individuals or groups that have a vested interest or concern in a project or the
operations of an organization. Stakeholders can be internal or external to the
organization, and their interests may vary depending on their role and relationship to
the project or organization.
- Stakeholders may include:
o Admin
o User
b. Input, Output, Process descriptors
- Input :
o Product information: This input includes product data such as the product
name, description, price, stock levels, and product category.
o Sales orders: This input includes information about sales orders such as the
customer name, contact information, product information, and payment
information.
o Customer information: This input includes information about customers such
as their name, contact information, purchase history, and preferences.
o Employee information: This input includes information about employees such
as their name, contact information, work schedule, and performance data.
o Inventory data: This input includes information about inventory such as stock
levels, product location, and order history.
o Payment data: This input includes information about payments such as
payment amount, payment method, and payment history.
o User authentication and access control: This input includes user data such as
login credentials and access permissions.
o Customization settings: This input includes settings that can be customized
such as language, currency, and product categories.
- Output
o Inventory reports: These reports provide information on inventory levels,
including stock levels, product location, and order history.
o Sales reports: These reports provide information on sales transactions,
including sales date, customer information, product information, and payment
information.
o Customer reports: These reports provide information on customer data,
including customer name, contact information, purchase history, and
preferences.
o Employee reports: These reports provide information on employee data,
including employee name, contact information, work schedule, and
performance data.
o Payment reports: These reports provide information on payment data,
including payment amount, payment method, and payment history.
o Analytics and forecasting: These reports provide insights and projections on
inventory, sales, and customer data.
o User interface: The software may also output a user interface that allows users
to interact with the software and perform tasks such as managing inventory,
sales, and customer data.
- Process descriptors:
o Product management: This process involves adding new products to the
inventory, updating existing products, and removing products from the
inventory.
o Inventory management: This process involves managing the inventory levels of
mobile phones and related accessories, including tracking stock levels,
replenishing stock, and generating reports on inventory status.
o Sales management: This process involves recording sales transactions, tracking
sales history, and generating sales reports.
o Customer management: This process involves recording customer information,
tracking customer purchase history, and generating customer reports.
o Employee management: This process involves recording employee
information, tracking employee work schedules, and generating employee
reports.
o Payment processing: This process involves recording payment information,
tracking payment history, and generating payment reports.
o Reporting and analytics: This process involves generating customized reports
on inventory, sales, customer data, and employee data, as well as providing
analytics and forecasting.
o Security: This process involves the security of the software application and the
data stored within it by implementing security measures such as user
authentication and access control.
o Customization: This process involves customizing settings such as language,
currency, and product categories to suit the specific needs of the business.
- Baseline
o In software development, a baseline is a reference point that defines a specific
point in the development process from which changes can be made and
measured. A baseline represents a stable version of the software that has been
fully tested and approved for release.
o There are several types of baseline in software development. These include:
Functional baseline: A functional baseline is a reference point that
represents the software's functional requirements. It includes a stable
version of the software that meets the requirements for functionality and
feature set.
o To apply a schedule baseline to a project, you will need to follow these steps:
Define the project scope: Clearly define the scope of the project and
identify all the tasks that are required to complete it.
Determine critical path: Determine the critical path, which is the sequence
of tasks that must be completed on time to ensure that the project is
completed within the desired timeframe.
Establish a baseline: Once the project schedule has been developed and
the critical path has been determined, establish a baseline by setting the
start and end dates for each task in the schedule.
Monitor progress: Monitor the progress of the project against the baseline
to ensure that the project is progressing as planned. If there are any
deviations from the baseline, identify the cause and take appropriate action
to get the project back on track.
Update the baseline: If there are changes to the project scope or schedule,
update the baseline to reflect the new information. This will help ensure
that the project remains on track and that all stakeholders are informed of
any changes.
g. Evaluate
- The use of functional design modeling in the software development lifecycle
can improve software quality by ensuring that software meets functional
requirements, is thoroughly tested, communicates well, and is easy to use.
maintenance. By using this approach, the development team can reduce the risk
of bugs, improve the quality of the software, and ensure that the software meets
the needs of the business and its users.
o Sales Management: The software allows store owners to manage the sales
process, including generating invoices, tracking payments, and managing
customer orders. This function helps to ensure that sales are processed
accurately and efficiently, and helps to provide a seamless experience for
customers.