Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 81

MOHAMMED AHMED HUSSAIN AL-TAIE

‫محمد احمد حسين الطائي‬

Software Development Lifecycles


Introduction to System development lifecycle.

Definition of System Development Life Cycle (SDLC).

System Development Life Cycle is also known as Application Development Lifecycle or Software
Development Lifecycle. It is the process of planning, developing, testing and implementing a specific
information system.

Figure : SDLC

Purposes of SDLC.

The System Development Life Cycle typically comprises six distinct stages and is adaptable to a number
of software and hardware combinations. Analysis, design, development, testing, implementation,
documentation, and evaluation are the stages that comprise this process.
Two sequential software lifecycle models.

Waterfall model.

Definition.
The Waterfall Approach was the first commonly used SDLC Model in software engineering to assure
project success. The entire software development process is split into several phases using "The
Waterfall" technique. Typically, the results of one step in this waterfall model serve as the input for the
subsequent phases in turn.

Figure : Waterfall model

The Waterfall model’s successive phrases are:

Requirement Gathering and Analysis: During this stage, all potential system needs are gathered and
outlined in a requirement specification document.

System Design: In this phase, the required specifications from the previous phase are examined, and the
system design is created. This system design aids in determining the overall system architecture as well
as the hardware and system requirements.
Implementation: In this phase, the required specifications from the previous phase are examined, and
the system design is created. This system design aids in determining the overall system architecture as
well as the hardware and system requirements.

Verification: Following the testing of each unit created during the implementation phase, the entire
system is merged. The entire system is tested for errors and failures after integration.

Maintenance: Various problems might arise in a client environment. Patches are published to address
certain problems. Additionally, improved versions of the product are issued. To bring about these
changes in the surroundings of the consumer, maintenance is performed.

Advantages.

Some of the major advantages of the Waterfall Model are as follow:

 Simple and easy to understand and to use.


 Because of the model's rigidity, it is simple to manage. Specific deliverables and a review
procedure are included at each phase.
 Each phase is handled and finished separately.
 Works effectively for smaller projects with clearly defined criteria.
 Clearly defined stages.
 Easy to arrange tasks.
 Process and results are well documented.

Disadvantages.

The major disadvantages of the Waterfall Model are as follows:

 High amounts of risk and uncertainty.


 Poor model for long and ongoing projects.
 Cannot accommodate changing requirements.
 Not appropriate for projects where there is a moderate to high probability of requirements
changing. So, with this process model, risk and uncertainty are considerable.
 It takes till the end of the life cycle for any functioning software to be generated.
 Adjusting scope during the life cycle can end a project.
When to use.

The Waterfall Model is suitable for projects that have predictable procedures, consistent and
well-defined needs, big and complex projects, a clear end goal, government or regulated
sectors, and limited funds and resources.

Reuses – Oriented Software Engineering.

Definition.
The concepts and criteria for reusing the existing software serve as the foundation for reuse
software engineering.

 Requirements Specification and System Validation stages are general process used in different
software process but other stages used in this model are different.

Figure : R-O-S-E

 Component Analysis: Component is chosen to implement provided need in accordance with


requirement definition. It is unlikely that the chosen component will give all functionality,
however it is feasible that the component will provide some of the necessary functionality.
 Requirements Modification: To analyze the requirement definition, information about the
component that was chosen during the component analysis is used. Requirements are changed
based on the components that are available. If the requirements need to be changed, the
component analysis process is utilized again to discover a comparable solution.

 System Design: This phase sees the development of the system's design. While organizing the
framework, the designer must take the reused component into account. When reusable
components are not available, new software is created.

 Development and Integration: To create new software, COTS systems and components are
merged. In this paradigm, integration is a component of development rather than a distinct
endeavor.

Advantages

 Because many of the system's components are premade, reusing software needs less work.
 The development team can save time by reusing the pre-made components.
 Time and effort savings result in lower total costs.
 When you are given ready-made components, you may concentrate on the brand-new
components that are not yet available.
 Reusing software frees up time that may be spent on ensuring and maintaining the quality of
software.

Disadvantages

 The genuine application of the reuse-oriented approach is not always put into effect.

 Compromises in requirements might result in a system that doesn't meet user needs.

 Occasionally, employing an outdated system component that is incompatible with a newer


version of that component might have an effect on how the system evolves.
When to use

Reuse-oriented software engineering is best implemented in projects that:

 Expensive software.
 Repeated similar initiatives.
 Short time to market.
 Not many other resources.

Two iterative software lifecycle models.

Incremental Development.

Definition.

A process paradigm used in software engineering called incremental development stresses the value of
moving slowly toward a goal. In contrast to the waterfall approach of software development, where a
functioning system is only made accessible during the project's latter stages, incremental development
starts with a modest, functional system that is gradually enhanced and enlarged.
Figure : Incremental development

Advantages.

Some advantages of Incremental Development:

 Because incremental development grows gradually and facilitates revisiting various discrete
phases, it is particularly helpful.

 Varying parts of the same project may take different amounts of time to complete when using
incremental development.

 Since there is a broad segmentation of the entire project, it is simple to arrange developmental
stages in incremental development.

Disadvantages.

The drawback of the Incremental development include:

 For the product to be broken down into modules, all requirements must be known.

 Unless paired with working in iterations, less capable of adapting to changes in needs.
 Until every component is in place, the product won't be finished.

 It might be difficult and needs extra work to get the pieces to cooperate.

When to use.

Software projects that need to be given in phases, are likely to change throughout development, or have
a large number of stakeholders are all ideal candidates for incremental development. It lowers risk and
facilitates project management. The goal is to quickly roll out smaller software components while
making necessary improvements as you go. This approach is helpful when the project is complicated or
has a lot of moving parts.

Spiral model

A risk-driven model of the software development process is the spiral model. It combines an
iterative methodology with a waterfall paradigm. The Spiral Model aids in the adoption of
software development components from several process models for the software project based
on distinctive risk patterns, enabling an effective development process.
Figure : Spiral model

The model is used in the Tune Source project.

 A method for iterative software development called the spiral model concentrates on risk
management. The Spiral Model may still be applied to improve Tune Source's website
production process even if the firm is primarily a retailer.

 The Spiral Model might be used in the creation of the Tune Source website:

 Establish goals and specifications


 Recognize and assess potential dangers.
 Create a website prototype.
 Test and assess the prototype
 Improve the prototype depending on input.
 Launch the website.
 Track and modify the website throughout time.
Today companies focus on delivering quality and gaining customer satisfaction and in order to
accomplish this, the challenge lies in choosing between traditional development methodologies and
agile development methodologies. Though both these approaches have positives and negatives, making
the right choice plays a crucial role while starting a new project. The main points to consider while
choosing development methodology are as follows:

· Business Need : Impact of implementing specified requirements, on customers’ business


· Customer Perception : Customer perspective of business impact
· Project Timeframe : Defined timeframe for the real-time implementation of the project

The IT industry uses the System Development Life Cycle (SDLC) to define all phases of a system

Fusion. It is the process of building new systems by software engineers and developers. that it

Used to develop a software system, a hardware system, or both systems in accordance with

customer requirements. Describes all phases of a project to develop a new system

It includes planning, analysis, design, development, testing and control phase. All programs

The development methodologies follow the stages of SDLC but the approaches are different for each

methodology. Traditional SDLC provides a complete analysis of the software or hardware to be developed
The figure below shows all stages

Traditional system development life cycle

Figure : System Development Life Cycle Source: (Alwan, 2015)


Analyse Phase- In this phase of system development life cycle, managers of company observe
the current system and find the problems with that system. They make plans to develop a new

and improved system for their organisation by keeping in mind these problems of current
system. They conduct questionnaires, seminars, interviews and collect reviews to identify these
problems. Design Phase- This phase defines new system architecture. It also identifies all
required modules, components and security mechanism about the system. Managers firstly
design a basic structure of the new system to identify its construction and functioning then they
enlarge this system. Implementation Phase- This is the construction phase of system
development life cycle. In this phase, a complete designed and analysed system is deployed in
an organisation’s working environment. Implementation phase executes all tasks and resources
that are required for this system development. Testing Phase- Testing is done after the
implementation of the new system. It checks system behaviour and functioning. This phase
checks deployed system’s performance on all the parameters that are given by the customers.
Testing is important to achieve customer’s satisfaction. Evaluation Phase- This phase evaluates
system’s effectiveness and objectives as per the customer’s premises. If system fails, it is
improved by the organisation. In this phase of SDLC, user’s feedbacks about the deployed
system are collected (Alwan, 2015). Traditional system development life cycle defines various
models for software development such as waterfall model, prototyping model, spiral model etc.
These models are helpful to integrate new system in software industry. Every model has
different working techniques and requirements. Waterfall Model- A waterfall model
sequentially defines all phases of SDLC. It describes that each phase performs a specific task for
system development. It defines the flow of tasks which are to be performed in system
development. It means output of one phase becomes the input for next phase. It is compulsory
that one phase must be completed before the starting of next phase.

Figure : Waterfall Model of SDLC Source: (Software Testing Studio, 2016)

What is Waterfall methodology?

Waterfall Model methodology which is also known as Liner Sequential Life Cycle Model.

Waterfall Model followed in the sequential order, and so project development team only

moves to next phase of development or testing if the previous step completed successfully.

The Waterfall methodology generally 6 steps

· Planning.
· Analysis.
· Design.
· Implementation.
· Verification.
· Maintenance.

The Agile Methodology

What is the agile methodology?


Agile methodology is a practice that helps continuous iteration of development and testing in the
software development process. In this model, development and testing activities are concurrent, unlike
the Waterfall model. This process allows more communication between customers, developers,
managers, and testers

Advantages of Waterfall Model

· It is one the easiest model to manage. Because of its nature, each phase has specific deliverables
and a review process.
· It works well for smaller size projects where requirements are easily understandable.
· Faster delivery of the project
· Process and results are well documented.
· Easily adaptable method for shifting teams
· This project management methodology is beneficial to manage dependencies.
· Provides an easy way to understand project plans
· Provides systematic approaches for project
· Usable for smaller projects
· Provides better identification of project outcomes
· Project implementation becomes easy

Disadvantages of waterfall model

· Feels difficulty to manage risks and threats of the system


· Project flow only in one direction (Unidirectional model)
· Does not provide feedback facility
· Increases waiting time for user
· Not usable for complex and larger projects

Advantages of the Agile Model:

· It is focused client process. So, it makes sure that the client is continuously involved during every
stage.
· Agile teams are extremely motivated and self-organized so it likely to provide a better results
from the development projects.
· Agile software development method assures that quality of the development is maintained
· The process is completely based on the incremental progress. Therefore, the client and team
know exactly what is complete and what is not. This reduces risk in the development process.
Limitations of Waterfall Model

· It is not an ideal model for a large size project


· If the requirement is not clear at the beginning, it is a less effective method.
· Very difficult to move back to makes changes in the previous phases.
· The testing process starts once development is over. Hence, it has high chances of bugs to be
found later in development where they are expensive to fix.

Limitations of Agile Model

· It is not useful method for small development projects.


· It requires an expert to take important decisions in the meeting.
· Cost of implementing an agile method is little more compared to other development
methodologies.
· The project can easily go off track if the project manager is not clear what outcome

Traditional Model Agile Model


It has a leadership style of working Customer involvement is crucial for this
model to prove its mettle
The project plan is prepared before Relies on incremental delivery of the product
commencing the process of system
development
The ownership lies on the Project manager Team conducts experiments on various
techniques and gradually arrives at the best
possible solution
Pre-planning is done to carry out the various Agile methodology is known for its flexibility
phases
Test plan is reviewed after each sprint The test plan is rarely discussed during the
test phase.
Prototype Model: This project model is deployed before the actual project demonstration. It is
built to identify working prototype of a system. It is a working model with some limited
functionalities. It is used to observe design problems and evaluate solutions for these problems.

Figure : Prototyping Model in SDLC Source: (Ghahrai, 2017)

Advantages of Prototyping

· Increase user involvement in before system implementation.


· Feedbacks and reviews collections.
· Brief understanding about the project implementation.
· Suitable for larger systems.
· Increase quality of system development.

Disadvantages of Prototyping

· Compromise quality of the system.


· Increase system implementation time.
· Create confusion between original system and prototype.
Spiral Model : This model defines the initial phases of waterfall model. Spiral model identifies all
software requirements for the system development process. It analyses all risks and software outcomes.
It is a combination of waterfall and prototype model that means a spiral model performs all sequential
tasks as well as prototype tasks. It is used in large projects which require some complex design and
configuration techniques. Spiral model is helpful when software requires some significant changes in the
system.
Figure : Spiral Model of SDLC process Source: (Ghahrai, 2017)

Advantages of spiral model

· Provides proper risk management


· Easily handle larger projects
· Fast development process
· Better control over all system development phases
· Increase software production mechanism
Disadvantages of spiral model

· Not compatible with smaller projects


· Increase requirement of experts for risk management
· Provides infinite spiral for project
· Increase cost of the project

Agile Methodology Agile methodology is used to respond to new technology changes in the IT
environment and modern business. It overcomes all those aspects in which traditional methodology
fails. Agile methodologies are mainly used where software changes required time by time. Agile
methodology works in cyclic nature. In this, all problems and issues which are occurred in a

cyclic phase are resolved in next cyclic phase. In this, standard parameters and methods are used for
software development (Scroggins, 2014). Agile methodology has a variety of models which are defined
below.
Figure : Agile Methodology Source: (Roy, 2017)

Scrum: Scrum is well known and widely usable agile framework which is used to control and manage
incremental and iterative software projects (SCRUMstudy, 2017). Scrum has six

working principles

· Allow changes
· Team collaboration
· Self-organization
· Transparency towards work
· Deals with reality and highlight responsibilities
· Better management of changes to fulfil customer’s needs

Kanban- Kanban is used to control all inventory items in a manufacturing unit. It maintains a balance
between all demands and supplies. It eliminates all waste materials and saves manufacturing time. It is
not iterative in nature and software development is done in a large

development cycle (Roussel, 2014). It has four principles

· Workflow is easily visualised


· Continuous monitoring and upgrading
· Always focus on workflow
· Set limitation for progression of work

Extreme Programming: It is a popular software development methodology which is used to improve


software quality in system development projects to fulfil customer’s needs. It performs all software
related operations such as software testing, coding, management structure checking etc. It makes code
simple and clear to understand for customers. Lean model- Lean is defined by the set of principles which
are used to define an organisation

working with minimum wastage of materials (Do, 2017). It has five main principles

· Define customer’s value


· Limits inventory wastage by adoption of a pull system
· Perfection by systematic improvement in process
· Mapping of all customer’s values
· Ensure the flow of a business process

As per the above discussion of two methodologies, both the methodologies have significant working
models. A tradition methodology delivers a project in a complete bunch of tasks. On the other hand,
agile methodology uses iterative methods in which entire project is divided into smaller iterations. It
makes project delivery easier. So there is many similarities and differences between traditional and agile
methodologies. Firstly discuss similarities between both.

· Both methodologies approach for quality product delivery.


· Both use same phases of workflow such as analyse, design, implementation, testing,
maintenance etc.
· Both use same building structures; demands, cost, time and performance.
· After the completion of previous phases, both will approach for next phases.
· Both follow sequence of workflow structures.
· Require large documentation for information gathering.
· Make a complete plan before start working

Now discuss differences between both methodologies. There are many factors in which traditional
methodology differs from agile methodology.

Table 1: Differences between Traditional and Agile methodology

Traditional Agile
Managers take all decisions to handle smaller In this, different authorities are assigned to
problems and issues. handle particular tasks.
It follows a top-down approach in which no It allows changes during the project development
changes are made during the project. process and does not affect the project schedule.
In this, all tasks are performed in a bundle. All tasks are dived into smaller iterations
It does not provide check-in facility during the Agile methodology defines checkpoints at every
process. phase.
Project manager holds the ownership of the Ownership is shared among team members.
entire project.

The below two tables describe the comparison of strengths and weakness between traditional and agile
system development methodologies.

Table 2: Comparison between strengths of agile and traditional methodologies


Traditional Agile
Well-organised methodology of software Continuous changes are acceptable and easy to
development understand.
All tasks are managed by project managers. Always focus on teamwork.
Managers provide quality control mechanisms. Quality assurance of products by teams
A large review process and documentation. More customer involvement and satisfaction in
software development.
It follows an adaptive approach. Predictive approach is followed in agile.

Table 3: Comparison between weakness of Agile and traditional methodologies

Traditional Agile
It does not accept changes during project Sometimes project failure occurs due to shorter
implementation. iterations.
Traditional methodologies are unable to handle Complexity of system disturbs the workflow
complex systems. coordination.
User involvement in project is lesser Difficult to handle large user involvement.
No face-to-face communication, only a large Comprehensive documentation causes problems.
documentation is used.
Project succession is measured on the basis of Quality of product defines project success (Akbar
cost and time. et. al., 2018).

To select an appropriate methodology for system development, the following factored must be
considered

· Cost
· Time of delivery
· Quality of product
· Performance analysis
· Customer involvement

Explain the strengths and weaknesses of the traditional and agile

Agile methodology strengths and weaknesses


Agile model strengths

· High flexibility of the project.


· This makes the development process extremely flexible
· High customer satisfaction over the development process.
· Since Agile projects are closely coordinated with the customer, he/she has a strong impact on
the development project.
· Software pieces are delivered constantly, in short cycles and customer’s feedback is always
taken into consideration.
· Constant interaction among the stakeholders.
· Continuous quality assurance, attention to details. Quality of the product should be ensured by
the testing team from the early stages of Agile development
· Since the development is conducted in short cycles, testing is run non-stop, allowing you to
produce a good final product.

Agile model weaknesses

· Problems with workflow coordination.


· Agile projects involve several small teams working on their own software pieces.
· They should always coordinate their work with each other, testers and management.
· Add to that constant interaction with the customer, and will get a ton of communication
management to consider before starting the project
· Difficult planning at early stages.
· Lack of long-term planning.

Traditional Model Strengths Weaknesses


· Ideal for supporting less experienced project teams.
· Orderly sequence of steps and strict control ensures Quality, Reliability and Maintainability of
developed system.
· Progress is measurable.

Weaknesses

· Inflexible, slow, Costly and Cumbersome.


· Problems not identified until testing.
· Difficult to respond to changes.
· Depends on early identification and specification of requirements, yet users may not be able to
clearly define them.
The selection of a lifecycle model for a development environment depends on various factors, including
project requirements, team capabilities, customer needs, and project constraints. Different lifecycle
models offer different approaches to managing the development process. Let's discuss an example to
understand why a particular lifecycle model may be chosen.

Example: Developing a Mobile Application

In this example, let's consider the development of a mobile application for a transportation company.
The application aims to provide real-time tracking of vehicles, scheduling, and customer interaction
features. The development team consists of experienced developers and designers, and the project has
a fixed timeline and budget.

The team assesses different lifecycle models and selects the Agile methodology as the most suitable
choice. Here's why:

1. Requirements Volatility: The requirements for the mobile application may evolve or change
throughout the development process due to factors like market trends, user feedback, or business
needs. The Agile model accommodates such changes effectively by promoting frequent customer
collaboration and iterative development.

2. Time-to-Market: The transportation industry is highly competitive, and the company wants to launch
the application quickly to gain a competitive edge. The Agile model allows for incremental development,
which means that the team can release usable versions of the application at regular intervals, delivering
value to the customer sooner.

3. Customer Involvement: The transportation company wants to actively participate in the development
process to ensure that the application meets their specific requirements. Agile's emphasis on customer
collaboration and feedback enables close interaction between the development team and the customer,
resulting in a better-aligned product.

4. Flexibility and Adaptability: Mobile applications often require frequent updates, feature
enhancements, and bug fixes to keep up with the dynamic nature of the industry. The Agile model's
iterative and incremental approach allows for flexibility and adaptability, making it easier to incorporate
changes and improvements throughout the development lifecycle.
5. Team Expertise: The development team consists of experienced professionals who are well-versed in
Agile practices and have previously successfully delivered projects using Agile methodologies. Their
familiarity with the Agile model makes it the preferred choice, as they can leverage their expertise to
ensure smooth project execution.

By considering these factors, the team determines that the Agile model is best suited for the
development environment of the transportation company's mobile application. It aligns with the
project's requirements, time constraints, customer involvement needs, and the team's expertise,
providing a framework that facilitates efficient and flexible development.

---------------------------------------------------------------------------------------------------------------------------------------

Risk management is an essential aspect of software development, and it is addressed in various ways in
different software lifecycle models. Here are some common approaches to managing risk in software
lifecycle models:

1. Waterfall Model:

- Risk identification: Risks are identified and documented during the requirements gathering and
planning phase.

- Risk analysis: The identified risks are analyzed to understand their potential impact on the project.

- Risk mitigation: Mitigation strategies are planned and implemented to address the identified risks.
This may involve preventive measures, contingency plans, or alternative approaches.

- Risk monitoring: Risks are continuously monitored throughout the development process to ensure
that mitigation strategies are effective and new risks are identified in a timely manner.

2. Agile Model:

- Continuous risk assessment: Risk assessment is an ongoing process in Agile. The development team
regularly reviews and prioritizes risks during iterations or sprints.

- Risk-driven planning: The team plans iterations based on identified risks, focusing on the highest
priority risks first.

- Iterative mitigation: Mitigation strategies are implemented incrementally as part of each iteration,
allowing the team to address risks as they arise.
- Frequent feedback and adaptation: Regular feedback from stakeholders and users helps identify
emerging risks, and the team can adapt the project plan and address risks accordingly.

3. Spiral Model:

- Risk analysis and evaluation: Risks are assessed and evaluated at each spiral iteration, considering
factors like technical feasibility, schedule constraints, and budget limitations.

- Prototyping and validation: Prototypes are developed to validate critical functionalities and mitigate
risks associated with unknowns or uncertainties.

- Risk-driven decision-making: Decisions on proceeding to the next spiral are based on the results of
risk analysis and the effectiveness of risk mitigation strategies.

4. Iterative Model:

- Early risk identification: Risks are identified and addressed in the early stages of each iteration,
allowing for timely mitigation actions.

- Incremental risk reduction: Risks are managed incrementally as the project progresses, reducing the
impact and likelihood of potential risks.

- Feedback-driven risk management: Feedback from stakeholders and users is gathered regularly,
helping to identify and manage emerging risks.

Regardless of the software lifecycle model used, effective risk management includes the following
general steps:

- Identifying and documenting risks.

- Analyzing and assessing risks based on their potential impact and likelihood.

- Planning and implementing risk mitigation strategies.

- Continuously monitoring and reviewing risks throughout the development process.

- Making necessary adjustments and adaptations based on changing risk profiles.

By incorporating risk management practices into the software lifecycle, organizations can proactively
identify, assess, and address risks, reducing the likelihood of negative impacts on the project's success.
Scenario :

Established in 2015 in Turkey, our academic educational institution is dedicated to providing


quality education and specializes in Pearson programs. Alongside English and Turkish courses,
we offer a wide range of professional and academic education options, catering to students
from various countries. Over the years, we have proudly witnessed the graduation of nearly
12,000 students across different stages and specializations.
At our academy, we offer diverse educational programs at various levels, ensuring
comprehensive learning opportunities for our students. Our programs include the third level,
fifth level, National Higher Diploma, seventh level, and even master's degrees. We take pride in
offering specializations in areas such as business administration, information technology,
computer science, photography, and tourism management.
Each level five program spans a duration of two years, allowing students to delve deep into
their chosen field of study. For instance, our software engineering program at the fifth level
encompasses 15 subjects and lasts two years. Upon completion, students are awarded a
diploma from the prestigious National High School of Pearson, UK.
Furthermore, we strive to create an inclusive and flexible learning environment by supporting
both remote and on-campus studies. This approach enables students from different corners of
the world to pursue their education with us, regardless of their geographical location.
Our institution is committed to providing a comprehensive education that equips students with
the necessary knowledge and skills for their future careers. We believe in fostering a vibrant
and engaging learning atmosphere that empowers our students to reach their full potential.
We continuously strive to enhance our programs, stay up-to-date with industry advancements,
and maintain a strong partnership with Pearson, ensuring the quality and relevance of our
educational offerings.
As we move forward, our academy remains dedicated to nurturing the academic growth and
success of our students, creating a lasting impact on their lives and the communities they serve.
What is a feasibility study.

A feasibility study evaluates the chances that a proposed project, such a new product line or
technological system, would be successful. To determine if the project is worthwhile of investment, the
research examines the pertinent technical, economic, and legal elements.

Figure 6: Feasibility Study

The purpose of a feasibility report.

 When considering the launch of a new initiative, feasibility studies are crucial. Any corporation
making the decision to accept a suggested business plan is making an investment, therefore it is
wise to consider all the variables that affect a project from the beginning to the end.

 Below are a few reasons feasibility studies are important:


 Finds good reasons to approve or reject a project concept.
 o Increases the project team's focus.
 Provide pertinent information for the actions to be taken following the research.
 Limits possible commercial options.
 Evaluates the available and required technologies and resources.
 By evaluating all factors, increases the likelihood that the project will succeed or fail.
 Determines the expected return on investment.

introduction

Briefly, a feasibility study is a study which is conducted in order to estimate the level ofexpertise
required in order to complete a project and identifying who could provide it.

Thisstudy also includes the quantitative and qualitative assessments of the other resourcesessential,
identification of critical points, a general time table and estimate of general cost, etc. Basically this
report provides the customer and developer with information statingwhether the project is viable or not

Importance and purpose of conducting a Feasibility study for the givenscenarioJust as the name implies,
a feasibility study is a study which is conducted in order toidentify if a project is viable. This study also
ensures if a project is legally and technicallyfeasible as well as economically justifiable. There can be
many instances where a projectmay not be doable and the resources used would be a waste. In these
instances, a feasibilitystudy helps identify if the project is profitable or not
The components of the feasibility report are the following

· Cover letter Presents the report formally and indicates the findings and changes to be
made briefly to the management

· Economic Justification: Here detailed cost comparison and cost estimations are
presented.

· Table of contents: an index to understand the location of each and every part of the
report.

· Overview it explains the reason for undertaking a feasibility study and includes the
people affected by it and the names of the persons who conducted the study.

· Appendixes document to provide all the necessary documentation within the report for
reference.

· Detailed findings: Provides the details regarding the present system and its defects.

· Recommendations and conclusions: Here the proposed changes and its effects on
present system all are mentioned and as per the study a conclusion is provided for the
report.
Feasibility Study
§ The purpose of feasibility study is to find solutions or to investigate the tasks
requirements and to determine whether it’s worthwhile/feasible to develop the system,
collecting data or analysing that how the project will be operate, relating it consulting
the recommended business requirements. In other words, a feasibility study can help us
to confirm the outcome of solution we are unaware off.

§ A feasibility study cannot be just conducted by making few calls. For this early
investigation is done before the study. For this we can seek committee member of
business itself or consultant. It starts with the marketing feasibility to confirm if the
present idea influences it by checking their current marketing. It’s then proceeded by
technical and financial feasibility by checking resources, location, current availability,
budget of the project etc. since it’s essential to analyse before starting a project. If the
idea goes with market availability, we can proceed with feasibility analysis and use it for
feasibility study.

§ They should have basic information about business ideas to make the study best. They
should know one or more business models or scenarios that might be used. Sufficient
investigation about these models should be conducted to determine viability.

§ A feasibility study becomes necessary when sometimes the customer is not an ideal
customer.it becomes necessary to confirm the assumption of project based on the client
ideas. In expense terms it’s better to have feasibility than making poor decision from
improper analysis.

Economic feasibility

§ For any system, if the expected benefits equal or exceed the expected costs, the system
will be judged to be economically feasible. In economic feasibility, cost-profit analysis is
done in which expected costs and advantages are evaluated. Economic analysis is used
for evaluating the effectiveness of the planned system.

§ In economic feasibility, the most vital is a cost-benefit analysis.


Cost-benefit Analysis

Cost-benefit feasibility is involved with costs.it is involved for system maintains and Update
the system and its hardware parts

§ cost-efficacy

§ environmental efficacy

§ potential to provide incentives to technological change and innovation and to


accommodate subsisting emission reduction and energy efficiency technologies;

§ practical feasibility of implementation Desideratum for technology transfer to, and


capacity building within, developing countries, in particular the least developed
countries (LDCs) and the diminutive island development states
We set an initial cost of $10,000 .
And we have the costs of renting the place, amounting to 2000 dollars per month, we multiply
it by 12 months, 12 x 2000, so our result is 24000 dollars per month .
We have first-year salaries of 2,500 dollars. We multiply it by 12 months by 2,500 x 12, so our
result is 30,000. This is the result of first-year salaries.
We have an operating cost of $1,000 that we multiply by 12 months. 12 x 1000 to give us
$1,200
We have 30 courses, and the course price is $500. We multiply them. 30 x 500, our output is
$15,000 in the first year
Finally, we add up the costs for the first year, so the result is a total cost of 91,000 .

We have 300 students, each student pays 200 dollars, we multiply 300 by 200, and our revenue
output is 60,000 dollars

60-91000= -31000 . In the first year we will have a loss of $31,000

This was a feasibility study for an educational institution, as shown in the description and the
picture
The employees at ABC Horizon currently have old technology computers with old software,
these computers have many problems so it is necessary to replace them with new ones in order
to install the new system successfully, there are four departments (student affairs, financial,
management and instructors) need new desktop:

Since the new system will store the entire data in the database server, there is no need for a
large storage space, 500GB will be ideal, and a Core i7 CPU with 16GB of memory will provide
the required high performance, more than other computers available at a lower cost, here I had
to The trade-off is between cost and performance, so I think it's only fair to choose the first
computer over other options.
Microsoft office 365

since any business can't do without basic Microsoft office apps there will still be a need for
them for writing reports, making presentations, online courses, etc.
The following figure shows offers provided by Microsoft office website.

Offer 3 is the most appropriate offer because it provides full access to Office desktop
applications and additional administration and security tools, and these tools will be essential
for teachers in order to effectively administer courses.
Smart interactive whiteboard :
In the classroom, we need a smart interactive whiteboard, as it is an essential thing in
education and cannot be dispensed with

The first offer is the most appropriate offer because it has the required specifications, and these
tools will be essential for teachers in order to run the courses effectively.
Printers:
We need a lot of printers in the organization, as they are one of the basic devices in our work
The purpose of a feasibility report is to assess the viability and potential success of a proposed project or
business venture. It is a comprehensive study that examines various aspects of the project, including
technical, economic, legal, operational, scheduling, and organizational factors. The primary objective of
a feasibility report is to provide decision-makers with the necessary information and analysis to
determine whether the project is feasible, practical, and worth pursuing.

Key purposes of a feasibility report include:

1. Project Viability Assessment: The report evaluates whether the project is technically feasible and
achievable with the available resources, expertise, and technology. It considers the project's objectives
and scope to determine if they are realistic and attainable.

2. Cost-Benefit Analysis: A feasibility report includes a detailed analysis of the projected costs and
potential benefits of the project. This helps in understanding the financial implications and expected
returns on investment.

3. Risk Identification and Mitigation: The report identifies potential risks and challenges that may hinder
the success of the project. It also proposes mitigation strategies to address these risks effectively.

4. Market Analysis: In case of a business venture, a feasibility report examines the market demand,
competition, and potential customers to assess the project's market potential.

5. Legal and Regulatory Considerations: The report examines any legal or regulatory requirements that
must be met for the project to proceed and identifies any potential legal obstacles.

6. Project Timeline and Schedule: A feasibility report outlines the estimated timeline for project
completion, providing insights into project scheduling and resource requirements.

7. Resource Assessment: The report assesses the availability of required resources such as labor, raw
materials, technology, and facilities needed to carry out the project.
8. Alternative Solutions: A feasibility report may explore alternative solutions or project approaches to
compare the advantages and disadvantages of different options.

9. Decision-Making Tool: Ultimately, the feasibility report serves as a decision-making tool. Based on the
findings and analysis presented in the report, stakeholders can make informed decisions about whether
to proceed with the project, modify its scope, or abandon it altogether.

Feasibility reports play a crucial role in guiding project stakeholders, including investors, management,
and decision-makers, to make sound and informed choices regarding the allocation of resources, time,
and effort to a particular project. It helps prevent investing in projects that are not viable or do not align
with the organization's goals and resources, leading to better project success rates and effective
resource management.

---------------------------------------------------------------------------------------------------------------------------------------

A feasibility report typically consists of several key components that provide a comprehensive analysis of
a proposed project or business venture. These components include:

1. Executive Summary: This section provides a high-level overview of the feasibility study, summarizing
the key findings, conclusions, and recommendations. It is usually written last but appears at the
beginning of the report.

2. Introduction: The introduction sets the context for the feasibility study, providing background
information on the project and its objectives. It explains the purpose of the study and outlines the scope
and methodology used.

3. Project Description: This section provides a detailed description of the proposed project or business
venture. It includes information about its objectives, scope, target market, products or services, and any
unique features or advantages.

4. Market Analysis: This component examines the market potential and demand for the proposed
project. It includes a detailed analysis of the target market, customer needs and preferences, industry
trends, competition, and market size and growth potential.
5. Technical Feasibility: This section assesses the technical feasibility of the project, focusing on its
technological requirements and constraints. It examines the availability of necessary resources,
expertise, technology, and infrastructure to implement and support the project.

6. Financial Analysis: The financial analysis component evaluates the economic feasibility of the project.
It includes a detailed assessment of the project's costs, revenue projections, financial projections, return
on investment (ROI), payback period, and other financial metrics.

7. Operational Feasibility: This section assesses the operational feasibility of the project, examining its
practicality and viability in terms of resources, logistics, facilities, and operational processes. It considers
factors such as staffing requirements, supply chain management, production capacity, and any
operational challenges or risks.

8. Legal and Regulatory Considerations: This component examines the legal and regulatory requirements
that may impact the project. It identifies any permits, licenses, certifications, or compliance issues that
need to be addressed. It also considers any legal or regulatory risks associated with the project.

9. Environmental Impact Assessment: In some cases, a feasibility report may include an assessment of
the environmental impact of the project. This examines any potential environmental risks or effects
associated with the project and proposes mitigation measures.

10. Risk Assessment: This section identifies and evaluates potential risks and uncertainties that may
impact the success of the project. It includes a comprehensive risk assessment, risk identification, risk
analysis, and risk mitigation strategies.

11. Conclusion and Recommendations: The conclusion summarizes the findings of the feasibility study
and presents the overall assessment of the project's feasibility. It provides recommendations on
whether to proceed with the project, modify the project plan, or abandon the project based on the
analysis conducted.

12. Appendices: This section includes supporting documents, data, calculations, references, and any
other additional information that is relevant to the feasibility study but not included in the main body of
the report.
These components collectively provide a comprehensive evaluation of the proposed project, covering
various aspects such as market analysis, technical feasibility, financial viability, operational practicality,
and legal considerations. The feasibility report serves as a valuable tool for decision-making, helping
stakeholders determine the viability and potential success of the project.

What is a requirements.

 A requirement is a declaration of what the system must a accomplish or of the qualities it must
posses.

Figure : Requirements

 Requirements describe:

o Business requirements.
o User requirements.
o Functional requirements.
o Non-functional requirements.
o System requirements
Types of requirements.

Functional Requirements

Requirements, which are related to functional aspect of software fall into this category. They define
functions and functionality within and from the software system.

Figure : Functional requirements

EXAMPLES

· Search option given to user to search from various invoices.


· User should be able to mail any report to management.
· Users can be divided into groups and groups can be given separate rights.
· Should comply business rules and administrative functions.
· Software is developed keeping downward compatibility intact.

Non-Functional Requirements

Requirements, which are not related to functional aspect of software, fall into this category. They are
implicit or expected characteristics of software, which users make assumption of. Non-functional

requirements include -

· Security
· Logging
· Storage
· Configuration
· Performance
· Cost
· Interoperability
· Flexibility
· Disaster recovery
· Accessibility
· Software System Analyst

· Categories of requirement

Ø The success of any solution is the product of two aspects:


Ø What it does (functionality, features)
Ø How well it performs against defined parameters (non-functional attributes, acceptance criteria,
service levels)
 The limitations or restrictions placed on the system are known as non-functional requirements.
They outline the software's quality feature. Scalability, maintainability, performance, portability,
security, dependability, and many more challenges are covered by non-functional requirements.

Figure : Non-functional requirements

Example: Performance, security, scalability, usability, compatibility, dependability, maintainability,


accessibility, compliance, and availability are examples of non-functional criteria for a website. Instead
than dictating what the website should accomplish, these criteria describe how it should function.

How to determine requirements.

 There are several steps to determine requirements for a project, product, or system:

o Identify stakeholders: Finding out who the stakeholders are and what they need is the first step.
Customers, users, and internal staff are all included in this.

o Gather requirements: The next stage is to compile the stakeholders' needs. Numerous methods,
including surveys, joint application development (JAD), document analysis, and observation, can
be used to do this.
o Analyze requirements: The requirements must be examined to make sure they are
comprehensive, accurate, and consistent once they have been obtained. Clarifying needs,
assigning them a priority, and getting rid of duplication may be necessary for this.

o Document requirements: Clear and simple documentation of the criteria is necessary. A


description of each need, its priority, and any limitations or presumptions should be included in
this documentation.

o Validate requirements: To make sure the requirements correctly reflect the stakeholders' needs
and expectations, they should be verified with them. User acceptability testing, walkthroughs,
and demos could be held in order to accomplish this.

o Manage requirements: To make sure they are being met and that any modifications are
monitored and authorized, the requirements should be managed throughout the course of the
project.

Requirements elicitation techniques.

There are various ways to discover requirements

Interviews

To obtain needs, this approach entails conducting one-on-one or group interviews with stakeholders. It
can reveal latent needs and is helpful for developing a thorough grasp of the requirements. However, it
can take a while and not involve everyone.
Figure : Interview

Joint Application Development (JAD).

Using a systematic approach called JAD, stakeholders may collaborate to identify and rank needs. It is
helpful for quickly creating a large number of requirements and ensuring that all stakeholders share a
similar understanding of the requirements. However, it could be costly and time-consuming.

Questionnaires.

This method entails giving stakeholders a questionnaire to get their requirements. It is a quick and
economical approach to get in touch with many different stakeholders, but the replies might not be
thorough or in-depth.

Figure : questionnaires
Document Analysis.

Using this method, needs are gathered by looking at alreadyexisting papers. It is helpful for obtaining
requirements for an existing system and for eliciting needs from stakeholders who are no longer
available. The documentation might not be current, and it might not reveal all criteria.

Observation.

In order to acquire requirements, this approach entails watching the actions and procedures of
stakeholders. It helps to clarify the requirements' context and to identify any implicit needs. It might not,
however, reach every stakeholder or identify every demand.

Prototyping:
Prototyping is building user interface without adding detail functionality for user to interpret
the features of intended software product. It helps giving better idea of requirements. If there

is no software installed at client’s end for developer’s reference and the client is not aware of
its own requirements, the developer creates a prototype based on initially mentioned
requirements. The prototype is shown to the client and the feedback is noted. The client
feedback serves as an input for requirement gathering.
When comparing technical solutions, it's important to consider several factors to determine the most
suitable option for a specific project or problem. Here are some key steps to compare technical solutions
effectively:

1. Identify project requirements: Start by clearly defining the requirements and objectives of the project.
This includes understanding the specific functionalities, performance criteria, integration needs, security
requirements, and other essential aspects.

2. Create evaluation criteria: Establish a set of evaluation criteria to assess each technical solution. These
criteria can include factors such as functionality, scalability, performance, ease of implementation,
compatibility, cost, support, and maintenance.

3. Gather information: Research and gather detailed information about each solution. This can involve
studying documentation, product specifications, case studies, user reviews, and consulting with experts
or industry peers.

4. Evaluate features and functionality: Compare the features and functionality of each solution against
the project requirements. Look for solutions that offer the necessary capabilities and align with the
desired outcomes.
5. Assess scalability and performance: Consider the scalability and performance of the solutions.
Evaluate if they can handle the expected workload, accommodate future growth, and provide efficient
performance under different scenarios.

6. Consider integration and compatibility: Assess how well the solutions integrate with existing systems
and technologies. Evaluate compatibility with the current infrastructure, data formats, and software
platforms to ensure smooth implementation and interoperability.

7. Evaluate ease of implementation and use: Consider the ease of implementation and the learning
curve associated with each solution. Assess the complexity of setup, configuration, and customization to
determine if the solution can be easily adopted by the project team.

8. Analyze cost and return on investment (ROI): Evaluate the total cost of ownership, including upfront
costs, licensing fees, maintenance, and ongoing support. Assess the potential ROI by considering the
benefits, efficiencies, and long-term value the solution can provide.

9. Consider vendor reputation and support: Research the reputation and track record of the solution
providers. Evaluate their customer support services, responsiveness, and availability of updates,
patches, and technical assistance.

10. Conduct proof of concept (POC) or pilot tests: If feasible, conduct a POC or pilot test to evaluate the
performance, usability, and compatibility of the solutions in a real-world or controlled environment. This
allows for practical validation and comparison.

11. Seek feedback and references: Engage with users or organizations that have experience with the
solutions being considered. Gather feedback and references to gain insights into their experiences,
challenges, and satisfaction levels.

12. Make an informed decision: Based on the evaluation and analysis of each solution, weigh the pros
and cons against the project requirements and priorities. Consider the trade-offs, risks, and the overall
fit with the organization's goals and constraints.

By following these steps and considering multiple factors, you can effectively compare technical
solutions and make an informed decision that best meets the needs of your project or organization.
Project analysis

In order to obtain the data required for project development, interactions between designers and
clients are required in every phase of scheme growth. The customer data on implementation issues
should be searched and analyzed at every point. When analyzing feasibility, the broader questions are
relatively general, for example: What is the scope of the problem, what is the best way to automate?
No, or financial viability... If we have to analyze the project-related information or project related
objects during the analysis phase, then what feasible options can be used for the project and
information. Details about this? There was a mistake. So how can we collect sufficient information to
help develop applications? Methods of collecting information Many common methods are employed to
collect business users ' requests. There are a number of software system-specific techniques or some
kind of user interface, some of which may be used in any working method.

Observational Method

Developers often use observation techniques to leverage and evaluate data through professional
observation and teaching, or working environments. This method is used to determine how
requirements, growth possibilities or a business method can be identified, to establish and evaluate the
effectiveness of a proposal, to recommend and to offer the highest quality alternatives for developing a
design. Furthermore, this technique is often used together with other techniques to verify the precision
of the information being collected. There are two basic approaches to observation techniques: Active
and passive Active Method: The investigator will ask any concerns concerning data about the problems
necessary to create the software project when monitoring the method of operating on an object.
Although this technique creates an unsafe working flow disturbance of the job or observer item,
designers can rapidly comprehend why hidden activities and procedures are involved in a workflow.
Passive Method: The way the participants observe and gather data on the work process of the
observant's item is the technique through which they silently observe and retrieve. The advantage of
this method helps designers to see how actually the piece of nature functions. The best way to gather
the information needed to develop the project is to provide assessments and analysis. In order to best
gather data, researchers can use special technical equipment.

Interview Method

Method for questioning chosen topics is the information gathering technique. This is the only way to
know the opinions and plans of our customers. But there are also certain disadvantages to the interview
method. It is elevated price, time consuming and sometimes the gathered data is not adequate and
needs the interviewer to have some expertise or operating environment.

This illusion contains the picture description for Observational method (guides 2019)
Today, many techniques of interview are available, for example individual surveys, concentrate
community meetings, telephone and courier surveys. The benefits and disadvantages of each technique
will be their own.

Personal interviews: The method of interviewing and interviewing persons to meet and discuss directly
is personal interview techniques. The interviewer can change questions or explain issues if the
respondent fails to understand the matter. This technique offers a greater flexibility than others. Direct
interviews will probably obtain more data from the client-replying questionnaire, as the interviewer can
see to obtain further information on the interviewer by observation (environmental work, attitude,
behaviour, costumes). The ability to interview and communicate or negotiate will be implemented and
the quality and quantity of information obtained shall be determined.

Group Interview: The interviewer will encounter with a team of 5 to 10 individuals in a pleasant
atmosphere in the focus group study method, which helps interviewees and interviewed persons to
think safe. Closer to the ceiling and close. The interviewer will prepare the open questions during the
interview process to encourage the customers to discuss the issues raised freely. In order to gain a
better understanding of the client's position on a problem, the interviewer can make consecutive
questions. The aim of collective interview methods is to provide ideas and ideas to be evaluated and
further evaluated by means of surveys and data obtained. This method is also used to learn more about
the behavior of consumers. Nevertheless, the method of immediate contact has elevated price
disadvantages; the interviewer has a lengthy history in leading and suggesting various questions during
the debate.

Phone interviews and Mail interviews: Phone interviews: is an analysis subject method by telephone.
The feasibility of this technique is increased with the support of technological equipment. High
capability responses can be collected. The advantage of telephone interviews is that access to them is
quick, easy to manage, regardless of distance. The downside of this technology is not suitable for
complex interviews with nature; the behavior of changing objects is not observed.
Mail interview: is the technique by e-mail to the interviewee by issuing a questionnaire. The receiver
simply has to check and send the questions to the interviewer. The benefit is that the designer does not
need communication or negotiation skills because he is not faced with the test, the test findings are not

partial. Costs for interviews are significantly smaller than for other interviews. The disadvantage of this
method is that it is time consuming and not suitable for specialized problems.

Due to their own advantages and disadvantages in each data collection method. Consequently,
individuals often merge various techniques for collecting and assessing the finest in project
development.

Questionnaires/Surveys

You must have excellent information if you want to get a nice research paper. And if you want excellent
data, a nice questionnaire or study must be designed and implemented. Data collection techniques for
generating a useful study paper are quite distinct.
This illusion contains the picture description for Questionnaires/Survey method (Shareyouressays 2019)

The most prevalent and simplest study to do, however. This way you can create a survey, then submit it
to many individuals, then use these responses for analyzing and evaluating information. In other words,
you will use questions to rate your consent and usually ask questions like the image above in the
questionnaire article. Moreover, you can also collect information by using YES / NO questions. Good
data collection. You have to make sure that those who reply to your questionnaire have to respond
responsibly, seriously and not randomly. If too many people harass, the data you collect will not be
different from a stack of waste and no good results. Then, how can good data collection be guaranteed?

 In the case of the respondent, it is very difficult for people, especially if people have no benefit,
to ask them to answer their questionnaire fully seriously. So, I want excellent information. Give
the answering individual a tiny donation that will assist them to respond more severely.

 The questionnaire should be translated into a language that is familiar to you. If you write a
questionnaire in competent English it is not permissible for the respondents to fully
comprehend or misinterpret the material that contributes to inaccurate responses. This helps
you to achieve better results.
 Take charge of the questionnaire slightly by slightly, do not be careless about it, look for a
questionnaire issue or time to reply all questions How soon does it take? Please put yourself in
the situation of the respondent to see if your survey is dull or hard to reply. Before you give it to
the user, please check and check many times.

Which method should we use for the current project?

If the decision is left to me alone to decide, I would like to take the Questionnaires methods. We will get
valuable information just from UX, and we also collect the necessary information (which may become
crucial) to aid to our decision.

List of questions:

1. How big is the current abc horizon system?


2. What is the scope of this abc horizon project?
3. How the risk being controlled in the past ABC HORIZON system?
4. How big is the budget for this current project?
5. How is this project being paid? (following successive paying method?)
6. Which function will be needed for this project?
7. What data will be handled to us (abc horizon academy) to process?
8. How will this project end?
9. What is our (abc horizon academy) rights?
10. When is the deadline?

When undertaking a software investigation to meet a business need, there are several steps that can be
followed:

1. Identify the business need: Clearly define the specific business need or problem that requires a
software solution. This could be improving operational efficiency, enhancing customer experience,
streamlining processes, or addressing any other specific requirement.
2. Conduct a feasibility study: Assess the feasibility of developing a software solution to address the
identified business need. This involves evaluating factors such as technical feasibility, economic viability,
legal and regulatory compliance, and resource availability.

3. Define requirements: Work closely with stakeholders, including end-users and business
representatives, to gather and document the requirements for the software solution. This involves
understanding the desired functionalities, user interface, performance criteria, integration needs,
security requirements, and any other relevant aspects.

4. Research available solutions: Explore existing software solutions in the market that align with the
identified business need. This can include commercial off-the-shelf (COTS) software, open-source
solutions, or custom development options. Evaluate their features, functionalities, compatibility,
support, and cost.

5. Analyze build vs. buy options: Consider whether it is more feasible to build a custom software solution
or purchase an existing solution. Evaluate factors such as cost, time, available expertise, scalability, and
long-term maintenance requirements.

6. Conduct a gap analysis: Compare the identified requirements with the available software solutions to
identify any gaps or mismatches. Determine whether the existing solutions can meet the desired
functionalities or if customization or integration is required.

7. Assess risks and constraints: Identify potential risks and constraints associated with the software
investigation, such as budget limitations, time constraints, technical challenges, and organizational
impact. Evaluate the potential impact of these factors on the success of the project.

8. Develop a software strategy: Based on the analysis conducted, develop a software strategy that
outlines the recommended approach for meeting the business need. This can include a combination of
building custom software, integrating existing solutions, or adopting a phased implementation
approach.

9. Create a project plan: Develop a detailed project plan that includes timelines, milestones, resource
allocation, and dependencies. This plan should outline the steps required to develop, test, deploy, and
maintain the software solution.
10. Implement and test the solution: Execute the project plan by developing the software solution and
conducting thorough testing to ensure its functionality, reliability, and usability. Engage with end-users
and stakeholders throughout the process to gather feedback and make necessary refinements.

11. Deploy and monitor the solution: Once the software solution is ready, deploy it in the production
environment and closely monitor its performance and user satisfaction. Make necessary adjustments
and provide ongoing support and maintenance as required.

12. Evaluate the effectiveness: Regularly assess the effectiveness of the software solution in addressing
the identified business need. Measure key performance indicators (KPIs), gather user feedback, and
make improvements as necessary.

By following these steps, an organization can undertake a software investigation to meet a specific
business need effectively. It ensures that the software solution is aligned with the requirements, feasible
in terms of resources and constraints, and successfully addresses the identified business problem.

User Stories are often deemed to comprise three elements

· Card
· Conversation
· Confirmation
· User Story format

The format of the User Story

As a < role>

I need

So that

These two examples demonstrate User Stories at different levels, but using the same format

· At a project level
· As a Marketing Director,
· I need to improve customer service
· So that we retain our customers.

· At a detailed level
· As an Investor,
· I need to see a summary of my investment accounts,
· So that I can decide where to focus my attention.

User story fine art

· Story Identifier: 01112


· Story Name: Customer Order
· Description: As a Customer, I need to place an order so that I can have food delivered to my
house.
· Confirmation: Acceptance Criteria examples:

Functional:

· Can I save my order and come back to it later?


· Can I change my order before I pay for it?
· Can I see a running total of the cost of what I have chosen so far?

Non-functional: availability:

· Can I place an order at any time (24 hours per day or 24/7/365)?
· Can I view the order at any time (24 hours per day or 24/7/365) up to and including delivery?

Non-functional: security:

· Are unauthorised persons and other customers prevented from viewing my order?

The methodology used in ABC Horizon project:

In this project ABC Horizon student information system , we are going to adopt the Waterfall
methodology and here are the stages that must be accomplished:

Requirement Gathering stage.

Design Stage.

Built Stage.

Test Stage.

Deployment stage.

Maintenance stage.

Requirements Determination:

In order to collect the requirements for the intended system I used tow Information Gathering
Techniques:
Observation, where I visited the institution to observe the working of current system and understand
the requirements by monitor and noticing the people, events, and objects within this institution.

Unstructured Interview: where I conducted question-answer sessions to acquire basic information of the
system with all of the directors, department employees and instructors. And I reached the following
results:

The new system (Student Information System)

It is a desktop application linked to a database located inside a server. This application will replace a lot
of manual work in the current system through multiple interfaces that perform functions which will be
explained in detail below.

System requirements:

Hardware: computers, server

Software: cistom made desktop app, Database Management System (DBMS).

This app must have:

High level of security.

Simple interfaces.

Fast performance and easy access to information required by users.

Authentication: each user must have an id and password.

Authorization: each user must have access to a prespecified part of the system.

Data backup schedule.

User requirement:
The General manager requirements:

An interface to display reports on all departments, with tools capable of analyzing data and presenting
results in a simple and understandable way.

The accountant requirements:

· An interface for entering and updating students' financial payments.


· An interface for entering and updating all employees' information and managing their
financial data (salaries, bonuses, discounts, etc.)
· An interface for entering and updating the operating expenses of the institution.
· These interfaces must contain tools to create reports on all financial data on the system.

Student Affairs employees requirements:

· An interface to register new students and update their information.


· An interface to create new courses and update course information.
· Tools for searching the data of students, instructors, and courses.
· Tools help to schedule courses.

Instructors requirements:

· A n interface for capturing student attendance and entering notes and comments about
courses.
· An interface for entering and updating student project information.

DFD stands for "Data Flow Diagram." It is an analytical tool used to design, describe, and document an
information system. DFD allows for the representation of data flow within the system and illustrates
how data is transformed from inputs to outputs through a set of processes.
DFD relies on symbols and graphical notations to represent the key components of the system,
including:

1. Inputs: Represent the data sources that enter the system and affect its operations.

2. Processes: Represent the activities or operations that occur within the system and transform inputs
into outputs.

3. Flows: Represent the movement of data from its source to its destination through the processes.
Flows can be either data or information.

4. Outputs: Represent the results or data produced by the processes and exit the system.

DFD is used to understand and document data flow and analyze the processes within a system. It can
improve understanding of the system and facilitate communication among project stakeholders. DFD
can also be used to identify potential issues, improve system processes, and guide future system design.

Context Diagram

Level 1
Use Case
A use case is a technique used in software development and system analysis to capture and describe
interactions between users (actors) and a system. It provides a detailed description of how users
interact with a system to achieve a specific goal or perform a certain task.

In simpler terms, a use case describes the interactions and steps involved in a particular scenario or user
story. It outlines the sequence of actions that a user takes and the system's responses to those actions.

A typical use case consists of the following elements:

1. Actors: Actors are the users or external systems that interact with the system being described. They
can be individuals, roles, or other systems.

2. Description: The description provides a brief overview of the specific goal or task that the use case
covers. It explains the purpose of the use case and sets the context for the interactions.

3. Preconditions: Preconditions specify any conditions or prerequisites that must be met before the use
case can be executed. These can include system states, data availability, or user permissions.
4. Main Flow: The main flow represents the sequence of steps and interactions between the actors and
the system. It outlines the actions taken by the user and the system's responses at each step.

5. Alternative Flows: Alternative flows describe variations or alternative paths within the use case. They
capture different scenarios or exceptional situations that may occur during the interaction.

6. Postconditions: Postconditions specify the state of the system or any changes that occur after the use
case is executed successfully.

Use cases are widely used in requirements gathering, system design, and software development
processes. They help ensure that the system meets the needs of its users and provide a clear
understanding of how the system should behave in different scenarios.

Data dictionary :

Student info : Student id , student name , student address , student phone


Teacher info : Teacher id , Teacher name , Teacher address , Teacher phone
Subject details : Subject id , Subject name , Subject cost
Exam info : exam id , Exam date , Exam time
Room : Room id , room capacity , , floor number

When conducting a software investigation, there are several software analysis tools and techniques that
can be used to gather information and create supporting documentation. Here are some commonly
employed tools and techniques:
1. Code Review: Performing a code review involves manually examining the source code to identify
issues, such as coding errors, inefficiencies, or security vulnerabilities. This can be done using integrated
development environments (IDEs) or specialized code review tools.

2. Automated Testing: Utilizing automated testing tools, such as unit testing frameworks, can help
analyze the software's functionality and identify defects or inconsistencies. These tools provide a
systematic approach to test various aspects of the software, ensuring that it meets the expected
requirements.

3. Profiling Tools: Profiling tools are used to analyze the performance of the software. They gather data
on resource usage, execution time, and memory allocation, allowing developers to identify bottlenecks
and optimize the code for better performance.

4. Static Code Analysis: Static code analysis tools scan the source code without executing it and identify
potential issues, such as coding errors, security vulnerabilities, or adherence to coding standards. These
tools can provide automated feedback on code quality, maintainability, and best practices.

5. Data Flow Analysis: Data flow analysis tools track how data is used and modified within the software,
helping to identify potential issues related to data integrity, security, or misuse. These tools can help in
understanding the flow of information and ensuring its correctness.

6. Architectural Analysis: Architectural analysis tools analyze the software's architectural design,
identifying dependencies, communication patterns, and potential design flaws. These tools provide
insights into the overall structure of the software, helping to ensure its scalability, maintainability, and
adherence to architectural principles.

7. Documentation Tools: Documentation tools, such as automated documentation generators or wiki


systems, can assist in creating supporting documentation for the software investigation. These tools
allow developers to document code, APIs, system architecture, and other important information,
facilitating knowledge sharing and maintenance.

It's important to note that the selection of specific tools and techniques depends on the nature of the
software investigation and the specific goals of the analysis. Combining multiple tools and techniques
can provide a comprehensive understanding of the software and help in creating accurate and well-
supported documentation.
----------------------------------------------------------------------------------------------------------------------------------------

Improving software quality is a critical aspect of software development to ensure that the software
meets the desired standards, performs reliably, and satisfies user expectations. Here are two
approaches commonly used to enhance software quality:

1. Quality Assurance (QA) Approach:

The Quality Assurance approach focuses on implementing processes and practices to prevent defects
and ensure high-quality software throughout the development lifecycle. Key elements of this approach
include:

- Requirement Analysis: Conducting a thorough analysis of user requirements to ensure clarity,


completeness, and consistency. This helps in identifying potential issues and aligning the development
process with user expectations.

- Test Planning and Execution: Developing comprehensive test plans and executing various testing
techniques, such as unit testing, integration testing, system testing, and user acceptance testing. Testing
helps identify bugs, errors, and functional issues, allowing developers to address them before the
software is released.

- Code Reviews and Inspections: Conducting regular code reviews and inspections to identify coding
errors, adherence to coding standards, and potential issues related to maintainability, scalability, and
performance. This helps in improving code quality and identifying potential bugs or vulnerabilities.

- Continuous Integration and Deployment: Implementing continuous integration and deployment


practices to ensure that software changes are integrated frequently and automatically tested. This
approach reduces integration issues, improves collaboration, and allows for quicker identification and
resolution of defects.

- Documentation and Knowledge Management: Emphasizing proper documentation of software


requirements, design, code, and testing processes. Effective knowledge management ensures that
information is easily accessible, promoting better collaboration and reducing errors caused by
misunderstandings or lack of information.
2. Agile Development Approach:

The Agile development approach is an iterative and collaborative methodology that focuses on
delivering software incrementally while incorporating continuous feedback and flexibility. Key elements
of this approach include:

- Iterative Development: Breaking down the development process into small iterations or sprints, with
each iteration delivering a working and tested software increment. This allows for early detection and
correction of defects and enables rapid feedback from stakeholders.

- Cross-functional Teams: Creating self-organizing teams composed of members with different skills and
expertise, promoting effective collaboration, communication, and shared responsibility. This facilitates
quick problem-solving and encourages a holistic approach to software quality.

- Continuous Stakeholder Involvement: Engaging stakeholders throughout the development process to


gather feedback, validate requirements, and prioritize features. Continuous involvement helps ensure
that the software meets user expectations and aligns with business objectives.

- Test-Driven Development (TDD): Adopting a test-first approach where tests are written before the
code is developed. This ensures that the code meets the specified requirements and provides a safety
net for refactoring or making changes.

- Continuous Improvement: Emphasizing regular retrospectives to reflect on the development process,


identify areas for improvement, and implement changes to enhance software quality. This approach
encourages learning from previous experiences and adapting practices to achieve continuous
improvement.

Both the Quality Assurance and Agile development approaches play significant roles in improving
software quality. While QA focuses on implementing robust processes and practices to prevent defects,
Agile emphasizes iterative development, flexibility, and stakeholder collaboration. Organizations often
combine elements from both approaches based on their specific needs and context to ensure high-
quality software that meets user expectations.
This is the main interface that I designed for the university program. The main interface has several
buttons, which are

1. Add new student


2. Add new teacher
3. Add new subjects
4. Enter students info
5. Edit teacher information
6. Enter marks

For example, if we click on the Add New Student button, the program will go to a list dedicated to
entering student information

Report: It is a button dedicated to reporting a problem or error in the program or the main interface
This is the new teacher information page, this page contains several fields and they are...

1. Student id
2. Student name
3. Student birth date
4. Student address
5. Student phone
6. Student gender

Through this page, we can add the teachers information in these fields designated for entering
information .

Add: It is a button dedicated to adding student information after entering it in the custom fields, and
when clicking on this button, it adds the information .
Cancel: It is a button dedicated to canceling the information entered in the student information fields.
When you click the cancel button, the information you entered is cancelled

Close: It is a button dedicated to closing and exiting the page completely. For example, on the student
information entry page, when you click on the “Close” button, the entire page will be closed

Empty fields: It is a place designated for entering student information


------------------------------------------------------------------------------------------------------------------------------------

This is the new teacher information page, this page contains several fields and they are...

1. Teacher id
2. Teacher name
3. Teacher address
4. Teacher phone

Through this page, we can add the teachers information in these fields designated for entering
information .
Show all subject and their teachers
This is an interface dedicated to displaying all subjects and their teachers
Login page: This page is dedicated to logging in to the site by the student, and allows him to browse,
view materials, results, and view student information
Tracing software requirements throughout the software lifecycle is crucial to ensure that the final
product meets the desired objectives and satisfies the stakeholders' needs. Here is an analysis of how
software requirements can be traced across the software development lifecycle:

1. Requirements Elicitation: In the early stages, software requirements are gathered from stakeholders
through interviews, workshops, surveys, and other techniques. These requirements should be
documented in a clear and unambiguous manner, capturing both functional and non-functional aspects.

2. Requirements Documentation: The gathered requirements are documented in a requirements


specification document. This document serves as a reference point throughout the software
development process and provides a baseline for traceability.

3. Requirements Analysis: During this phase, the requirements are analyzed to ensure their
completeness, consistency, and feasibility. Any ambiguities or conflicts are resolved, and prioritization is
done based on their importance and impact.

4. Requirements Allocation: The requirements are allocated to different software components, modules,
or subsystems. This helps in identifying which parts of the system will be responsible for fulfilling specific
requirements.

5. Design Phase: In this phase, the requirements are translated into a software design that outlines how
the system will be structured and implemented. The design artifacts such as architectural diagrams, data
models, and interface designs should clearly reflect the requirements they are intended to fulfill.

6. Development and Coding: During the coding phase, the software developers write the code based on
the design specifications. The requirements are traced by ensuring that each requirement is
implemented correctly in the code and that the code functions as intended.

7. Testing Phase: Testing plays a crucial role in requirements traceability. Test cases are designed based
on the requirements to verify that the software meets the specified criteria. Each test case can be traced
back to the requirement it is intended to validate, ensuring comprehensive coverage.
8. Validation and Verification: The software is validated against the requirements to ensure that it
satisfies the stakeholders' expectations. This involves conducting acceptance testing and user reviews to
ensure that the software meets the specified requirements.

9. Change Management: Throughout the software lifecycle, changes to requirements may occur due to
evolving needs, feedback, or external factors. It is important to track and manage these changes,
ensuring that any modifications are properly documented and validated.

10. Release and Maintenance: Once the software is released, the requirements traceability continues
during the maintenance phase. Any updates or enhancements are linked back to the original
requirements, ensuring that they are addressed appropriately.

To facilitate requirements traceability, various tools and techniques can be employed, such as
requirement management tools, traceability matrices, version control systems, and configuration
management systems. These tools help maintain a clear and auditable trail of how each requirement is
addressed throughout the software development lifecycle.

By establishing and maintaining requirements traceability, organizations can ensure that the developed
software meets the stakeholders' needs, enables effective change management, and enhances the
overall quality and reliability of the software product.

------------------------------------------------------------------------------------------------------------------------------------------

Software behavioral design techniques are essential for designing software systems that exhibit desired
behaviors and functionalities. These techniques help in defining the system's behavior, interactions, and
responses to different stimuli. Here are a few examples of software behavioral design techniques and
their suitability in different scenarios:

1. Use Case Diagrams:

Use case diagrams are widely used to capture and visualize the interactions between actors (users or
external systems) and the system under development. They depict the system's behavior from a user's
perspective and help in understanding how different actors interact with the system to achieve specific
goals. Use case diagrams are suitable for requirements analysis and communication between
stakeholders. For example, in an e-commerce application, a use case diagram can represent interactions
such as "User Registration," "Product Search," and "Order Placement."

2. Sequence Diagrams:

Sequence diagrams illustrate the chronological order of interactions and messages exchanged between
objects or components within a system. They depict the dynamic behavior of the system and help in
understanding how objects collaborate to fulfill specific functionality. Sequence diagrams are suitable
for capturing detailed interactions and identifying potential bottlenecks or issues in the system's
behavior. For example, in a banking system, a sequence diagram can illustrate the steps involved in a
funds transfer process between different accounts.

3. State Transition Diagrams:

State transition diagrams (also known as state machines) represent the various states and transitions
that a system or an object can undergo in response to events. They are suitable for modeling the
behavior of systems with complex state-dependent logic. State transition diagrams help in visualizing
the system's behavior over time and understanding the conditions for transitioning between different
states. For example, in a traffic light control system, a state transition diagram can represent the states
of the traffic light (e.g., "Green," "Yellow," "Red") and the transitions triggered by events such as a timer
or a pedestrian crossing.

4. Activity Diagrams:

Activity diagrams provide a visual representation of the workflow or procedural logic of a system. They
are suitable for modeling complex business processes or algorithms. Activity diagrams help in
understanding the sequence of activities, decision points, and parallel flows within a system. For
example, in a hospital management system, an activity diagram can represent the steps involved in the
patient admission process, including activities such as "Check-in," "Medical Assessment," "Assign Room,"
and "Billing."

These software behavioral design techniques are suitable in different contexts and scenarios, depending
on the complexity of the system and the level of detail required. By using these techniques
appropriately, software designers and developers can effectively capture and communicate the desired
behaviors of the system, leading to better understanding, improved collaboration, and more robust
software solutions.
When it comes to analyzing software behavioral tools and techniques, there are various options
available that help in capturing, modeling, and analyzing the behavior of software systems. Here, I will
discuss a range of commonly used software behavioral tools and techniques:

1. UML Behavioral Diagrams:

Unified Modeling Language (UML) behavioral diagrams provide a standardized way to represent and
analyze the behavior of software systems. They include several diagram types such as use case
diagrams, sequence diagrams, state machine diagrams, and activity diagrams. UML behavioral diagrams
are widely used for requirements analysis, system design, and communication among stakeholders.

2. Behavior-Driven Development (BDD):

Behavior-Driven Development is an agile software development approach that focuses on capturing and
specifying software behavior in a human-readable and domain-specific language. BDD techniques, such
as writing executable specifications using tools like Cucumber or SpecFlow, help in aligning software
behavior with business requirements and facilitate collaboration between developers, testers, and
business stakeholders.

3. Model-Driven Engineering (MDE):

Model-Driven Engineering is a software development approach that emphasizes the use of models to
design, analyze, and generate software systems. MDE techniques, such as using Domain-Specific
Languages (DSLs) or model transformation tools like Eclipse Modeling Framework (EMF), enable
behavioral modeling at a higher level of abstraction and support automatic code generation.

4. Finite State Machines (FSMs):

Finite State Machines are mathematical models used to describe the behavior of systems with a finite
number of states and transitions between them. FSMs are used to analyze the behavior of complex
systems, define system constraints, and identify potential issues such as deadlocks or livelocks. Tools like
YAKINDU Statechart Tools or Stateflow provide graphical representations and simulation capabilities for
working with FSMs.

5. Event-driven Simulation:

Event-driven simulation tools, such as AnyLogic or Simulink, enable the modeling and analysis of systems
based on the occurrence of events. These tools simulate the behavior of the system over time, allowing
for the evaluation of different scenarios and understanding the impact of events on system behavior.

6. Behavior Monitoring and Logging:

Behavior monitoring and logging tools, like application performance monitoring (APM) or log analysis
tools, capture and analyze the runtime behavior of software systems. They provide insights into system
interactions, performance metrics, and potential issues, helping in identifying and resolving behavioral
problems in real-time.

7. Dynamic Analysis Tools:

Dynamic analysis tools, such as debuggers or profilers, allow developers to observe and analyze the
behavior of software systems during runtime. These tools help in understanding the flow of execution,
identifying bottlenecks, and debugging behavioral issues in the code.

Each of these software behavioral tools and techniques serves a specific purpose and offers unique
advantages in analyzing and understanding the behavior of software systems. The selection of the
appropriate tool or technique depends on the specific requirements, complexity of the system, available
resources, and the desired level of analysis and modeling detail.

---------------------------------------------------------------------------------------------------------------------------------------

A finite state machine (FSM) and an extended finite state machine (EFSM) are both modeling techniques
used to describe the behavior of systems with a finite number of states and transitions. While they share
similarities, there are distinct differences between the two.

1. Finite State Machine (FSM):


An FSM is a mathematical model consisting of a set of states, a set of inputs or events, a set of outputs
or actions, and a set of transitions. It describes the behavior of a system by specifying how it transitions
from one state to another in response to inputs. FSMs are widely used in various applications, including:

- Traffic Light Control: An FSM can be used to model the behavior of a traffic light system. The states
would include "Red," "Yellow," and "Green," and the transitions would correspond to the timing and
sequencing of the lights based on inputs such as timers or sensors.

- Vending Machine: An FSM can represent the behavior of a vending machine, with states representing
different states of the machine (e.g., "Idle," "Accepting Coins," "Dispensing Item") and transitions
triggered by user inputs (e.g., pressing buttons or inserting coins).

2. Extended Finite State Machine (EFSM):

An EFSM extends the capabilities of an FSM by introducing additional features such as guards, actions,
and parameters. These extensions enhance the modeling expressiveness and allow for more complex
behaviors to be captured. EFSMs are commonly used in applications that require more sophisticated
control and decision-making, such as:

- ATM (Automated Teller Machine): An EFSM can be used to model the behavior of an ATM. It would
incorporate guards to check conditions (e.g., checking if the user has entered a correct PIN), actions to
perform operations (e.g., dispensing cash), and parameters to store and pass data (e.g., the amount to
withdraw).

- Elevator Control System: An EFSM can represent the behavior of an elevator control system, with
guards to handle conditions (e.g., checking if the elevator is at maximum capacity), actions to control
elevator movement (e.g., opening/closing doors, moving up/down), and parameters to store the desired
floor or direction.

The key distinction between an FSM and an EFSM lies in the additional features provided by the EFSM,
which allow for more sophisticated behavior modeling. While an FSM is suitable for simpler systems
with straightforward state transitions, an EFSM provides more flexibility and control, making it suitable
for modeling complex systems that require decision-making, conditions, and data manipulation.

You might also like