ITM Module 3
ITM Module 3
Systems Analysis-It is a process of collecting and interpreting facts, identifying the problems, and
decomposition of a system into its components.
System analysis is conducted for the purpose of studying a system or its parts in order to identify
its objectives. It is a problem solving technique that improves the system and ensures that all the
components of the system work efficiently to accomplish their purpose.
Systems Design-It is a process of planning a new business system or replacing an existing system
by defining its components or modules to satisfy the specific requirements. Before planning, you
need to understand the old system thoroughly and determine how computers can best be used in
order to operate efficiently.
Term system is derived from the Greek word ‘Systema’ which means an organized relationship
among functioning units or components.
Characteristics of a System
• Interaction- -It refers to manner in which each component functions with other components of
the system.
• Integration- The parts of a system work together within the system even though each part
performs a unique function.
• Central Objective- Objective may be real or stated All the components work together to achieve
that particular objective
Identify and define the problem or need that the new system should address.
2. Feasibility Study:
Assess the cost and benefits associated with implementing the new system.
3. System Planning:
Develop a detailed plan for the project, outlining the tasks, timelines, resources, and
budget requirements.
4. Requirements Analysis:
Gather and document detailed requirements from stakeholders, including users and
management.
Define the functionalities and features the new system should have.
5. System Design:
Develop a blueprint for the new system based on the gathered requirements.
Specify the architecture, components, modules, interfaces, and data for the system.
6. Implementation:
Combine the various components and test the entire system to ensure that it functions as
intended.
Identify and resolve any issues or bugs that may arise during testing.
8. System Deployment:
Train users and provide documentation to support the use of the new system.
Address any issues that arise, and make enhancements or updates as needed.
Conduct periodic reviews to ensure that the system continues to meet the business needs.
Structured Systems Analysis and Design (SAD) is an approach to software development that
involves a systematic process for analyzing, designing, and implementing information systems.
One of the key tools associated with Structured SAD is the Data Flow Diagram (DFD).
Structured SAD:
A Data Flow Diagram (DFD) is a graphical representation of how data moves within a system. It
shows the flow of data between different processes, data stores, and external entities. DFDs are a
fundamental tool in structured analysis and design. Key components of a DFD include:
1. Processes:
2. Data Flows:
Represent the paths along which data moves within the system. Arrows depict the
direction of data flow between processes, data stores, and external entities.
3. Data Stores:
Represent repositories where data is stored. This can include databases, file systems, or
any other storage mechanisms.
4. External Entities:
Represent sources or destinations of data that are external to the system. External entities
interact with the system by sending or receiving data.
DFDs provide a clear and concise visual representation of how data flows through a
system. This aids in understanding the system's overall functionality.
2. Communication:
DFDs serve as effective communication tools between system analysts and stakeholders.
They help convey complex processes in a more easily understandable format.
3. Hierarchical Decomposition:
Through DFDs, analysts can identify the processes that need to be implemented and the
data flows between these processes. This identification is crucial for system development.
5. System Validation:
DFDs assist in validating the proposed system against the requirements. They help ensure
that all necessary processes are considered and that the system will fulfill its intended
purpose.
6. Change Management:
Decision Table:
A Decision Table is a decision support tool used in system analysis and design to represent
complex decision logic. It provides a structured way to document various combinations of
conditions and the corresponding actions or decisions that result from those conditions. Decision
Tables are especially useful when dealing with multiple conditions and possible outcomes. Each
row in the table represents a unique combination of conditions, and each column represents a
specific action or decision based on those conditions.
Structured Diagram:
Context Diagram: Provides an overview of the system's interactions with external entities,
helping stakeholders understand the system's boundaries.
Decision Table: Documents complex decision logic, specifying different conditions and
corresponding outcomes, aiding in the analysis of decision-making processes within the system.
Structured Diagram: Represents the modular and hierarchical structure of the system, showing
how components or modules are organized and interact.
System development models are frameworks or methodologies used in the process of developing
information systems or software applications. Each model follows a specific set of steps, phases,
or stages to guide the development process. Here are some commonly used system development
models:
1. Waterfall Model:
The Waterfall Model is a linear and sequential approach where each phase must be
completed before moving on to the next. The phases include requirements gathering,
system design, implementation, testing, deployment, and maintenance.
2. Iterative Model:
The Iterative Model involves repeating cycles of the development process. Each iteration
goes through the phases of planning, design, implementation, and testing. It allows for
incremental development and refinement based on feedback.
3. Spiral Model:
The Spiral Model combines elements of the waterfall model and iterative model. It
emphasizes risk assessment and incorporates multiple cycles of planning, risk analysis,
engineering, testing, and evaluation. The process spirals outward, allowing for continuous
improvement.
The V-Model is an extension of the waterfall model. It involves testing and validation
activities corresponding to each development stage. The left side of the "V" represents
the development phases, while the right side represents the corresponding testing phases.
5. Incremental Model:
The Incremental Model divides the system into small, manageable parts or increments.
Each increment represents a portion of the system's functionality, and development
occurs incrementally. New increments are added until the system is complete.
RAD is an iterative model that emphasizes rapid prototyping and quick feedback. It
involves user feedback and iterative development to create prototypes that evolve into the
final system.
7. Agile Model:
Agile is an iterative and incremental model that prioritizes flexibility and collaboration. It
focuses on delivering small, functional increments of the system in short development
cycles. Agile methodologies include Scrum, Kanban, and Extreme Programming (XP).
8. Prototyping Model:
The Prototyping Model involves creating a prototype (a preliminary model of the system)
to gather user feedback and refine requirements. It is an iterative process that continues
until the final system meets user expectations.
SDLC stands for Software Development Life Cycle. It is a systematic and structured process that guides
the development of software applications from initial concept to final deployment and maintenance. The
purpose of SDLC is to produce high-quality software that meets or exceeds customer expectations, is
delivered on time, and stays within budget. The exact phases and steps in SDLC may vary depending on
the methodology or model used, but the core stages generally include:
1. Planning:
Identify the scope of the project, define objectives, and determine feasibility.
Establish the project team, allocate resources, and create a project plan.
2. Feasibility Study:
3. Requirements Analysis:
Gather and document detailed requirements for the software based on stakeholder needs.
4. System Design:
5. Implementation (Coding):
6. Testing:
Conduct various levels of testing, including unit testing, integration testing, and system
testing.
Identify and fix defects, ensuring the software meets quality standards.
7. Deployment (Installation):
Address and fix issues reported by users during the operation of the software.
These stages in SDLC can be represented in various models, including the Waterfall Model, Iterative
Models, Spiral Model, and Agile Models. Each model has its own characteristics, advantages, and
drawbacks, catering to different project needs and preferences.
1. Systematic Approach:
SDLC follows a systematic and organized process, ensuring that each phase is completed
before moving on to the next.
3. Documentation:
Rigorous testing and validation activities are conducted to ensure that the software meets
specified requirements.
5. Flexibility:
Many modern SDLC methodologies, such as Agile, emphasize adaptability to change and
frequent reassessment of project priorities.
Waterfall Model:
Decision Support System is an interactive information system that provides information, models
and data manipulation tools to help in making the decision in a semi-structured and unstructured
situation.
The Waterfall Model is a traditional and linear software development methodology that follows a
sequential and phased approach. It is one of the earliest models used in software engineering and is
characterized by a well-defined set of phases, with each phase acting as a prerequisite for the next one.
The progression through these phases resembles a waterfall, where progress is seen as flowing steadily
downwards through the phases.
1. Requirements Phase:
In this phase, the system requirements are gathered and documented in detail. This
involves communication with stakeholders to understand their needs and expectations for
the software.
2. System Design:
Based on the requirements, the system architecture and design are created. This phase
involves defining the overall system structure, specifying components, and establishing
the relationships between them.
The actual coding of the software takes place in this phase. The design specifications are
translated into executable code, and individual modules are developed.
4. Testing Phase:
The completed software undergoes testing to identify and rectify defects or bugs. Testing
includes various levels such as unit testing, integration testing, and system testing.
Once testing is successfully completed, the software is deployed or installed in the live
environment. Users are trained on how to use the software, and any necessary
documentation is provided.
This phase involves ongoing maintenance and support for the software in the operational
environment. Updates, bug fixes, and enhancements are addressed as needed.
The phases are executed in a sequential and linear fashion, with progress moving only in
one direction.
2. Document-Driven:
3. Rigidity:
The Waterfall Model can be rigid, and changes in requirements or design can be
challenging to accommodate once the project has progressed to later stages.
The Waterfall Model is often well-suited for small projects with clear and stable
requirements.
6. Limited Iteration:
There is limited room for iteration or revisiting previous phases once a phase is
completed.
The classical waterfall model is an idealistic model for software development. It is very simple, so it can
be considered the basis for other software development life cycle models. Below are some of the major
advantages of this SDLC model.
Easy to Understand: Classical Waterfall Model is very simple and easy to understand.
Individual Processing: Phases in the Classical Waterfall model are processed one at a time.
Properly Defined: In the classical waterfall model, each stage in the model is clearly defined.
Clear Milestones: Classical Waterfall model has very clear and well-understood milestones.
Properly Documented: Processes, actions, and results are very well documented.
Reinforces Good Habits: Classical Waterfall Model reinforces good habits like define-before-
design and design-before-code.
Working: Classical Waterfall Model works well for smaller projects and projects where
requirements are well understood.
Large-scale Software Development Projects: The Waterfall Model is often used for large-scale
software development projects, where a structured and sequential approach is necessary to ensure
that the project is completed on time and within budget.
Safety-Critical Systems: The Waterfall Model is often used in the development of safety-critical
systems, such as aerospace or medical systems, where the consequences of errors or defects can
be severe.
Government and Defense Projects: The Waterfall Model is also commonly used in government
and defense projects, where a rigorous and structured approach is necessary to ensure that the
project meets all requirements and is delivered on time.
Projects with well-defined Requirements: The Waterfall Model is best suited for projects with
well-defined requirements, as the sequential nature of the model requires a clear understanding of
the project objectives and scope.
Projects with Stable Requirements: The Waterfall Model is also well-suited for projects with
stable requirements, as the linear nature of the model does not allow for changes to be made once
a phase has been completed.
The Classical Waterfall Model suffers from various shortcomings, basically, we can’t use it in real
projects, but we use other software development lifecycle models which are based on the classical
waterfall model. Below are some major drawbacks of this model.
No Feedback Path: In the classical waterfall model evolution of software from one phase to
another phase is like a waterfall. It assumes that no error is ever committed by developers during
any phase. Therefore, it does not incorporate any mechanism for error correction.
Difficult to accommodate Change Requests: This model assumes that all the customer
requirements can be completely and correctly defined at the beginning of the project, but actually
customer’s requirements keep on changing with time. It is difficult to accommodate any change
requests after the requirements specification phase is complete.
No Overlapping of Phases: This model recommends that a new phase can start only after the
completion of the previous phase. But in real projects, this can’t be maintained. To increase
efficiency and reduce cost, phases may overlap.
Limited Flexibility: The Waterfall Model is a rigid and linear approach to software development,
which means that it is not well-suited for projects with changing or uncertain requirements. Once
a phase has been completed, it is difficult to make changes or go back to a previous phase.
Late Defect Detection: In the Waterfall Model, testing is typically done toward the end of the
development process. This means that defects may not be discovered until late in the
development process, which can be expensive and time-consuming to fix.
Lengthy Development Cycle: The Waterfall Model can result in a lengthy development cycle, as
each phase must be completed before moving on to the next. This can result in delays and
increased costs if requirements change or new issues arise.
Not Suitable for Complex Projects: The Waterfall Model is not well-suited for complex
projects, as the linear and sequential nature of the model can make it difficult to manage multiple
dependencies and interrelated components.
Prototype:
There are thousands of new ideas that originate every day to solve a particular problem.
Executing an idea can be a long and expensive process. Alongside this, no one can, with absolute
certainty, say that their vision will work or that users will ultimately want and use their products.
Sometimes even great ideas fail because they are overly complicated to use or understand.
Agile development pivots around faster time to market, learning, integration, and adaptability. A
prototype is built on the principle of failing fast, freely experimenting, and learning while trying
to reach the desired result. Finding failures propels learning and optimizes solutions to reach your
goal.
Teams build prototypes with varying degrees of fidelity to capture design concepts and test them
on users. You can refine and validate your designs with prototypes to ensure that you are building
the right thing your user will use, without wasting time and resources. Because of this,
prototyping is a cost-effective way to learn from failure, promoting innovation and creativity.
In the product discovery phase, it’s plausible that the product team has numerous compelling
ideas. However, there are many initial uncertainties (e.g., technical feasibility, seamless process
fit, etc.). The best way to avoid letting uncertainties drive the decision is to test the concept and
learn about the possibilities. Prototyping provides an opportunity to test the wildest, craziest
ideas, and decide whether to drop them or push them forward.
1. Feasibility prototypes- To test the technical possibility of the concept. The feasibility prototype is
built with a precise granularity to the proposed feature. Next, the development team creates a
high-level architecture description and writes enough code to test the technical challenges and
possibilities of the concept.
This prototype then serves as a ground for engineering the entire product. A feasibility
prototype is usually created while building new algorithms, new approaches, or new structures to
test attainability and push boundaries.
2. Low-fidelity user prototypes- To test the usability of the flow. Low-fidelity user prototypes are
most like wireframes created in tools like Figma or Invision by the UX/product designers. This
prototype aims to identify any user issues early on and test how the feature works and fits in the
entire process.
3. High-fidelity user prototypes- A realistic-looking prototype that takes a bit more time and
resources, but ensures stimulation per the final product. These prototypes are to test concepts that
are non-negotiable but can be adapted in a better way.
For example, when companies wanted to try virtual reality before people knew about VR, they
couldn’t explain it to people with wireframes and sketches and get their feedback. Instead, they
had to develop a high-fidelity user prototype with the goal of testing whether the user would like
the product.
4. Live data prototypes- A prototype embedded with analytical tools to collect live data and actions
from real users. Live-data prototypes help when you have a product and want to see if the
customer will be interested in the new feature.
Spiral:
The Spiral Model is a Software Development Life Cycle (SDLC) model that provides a systematic
and iterative approach to software development. In its diagrammatic representation, looks like a spiral
with many loops. The exact number of loops of the spiral is unknown and can vary from project to
project. Each loop of the spiral is called a Phase of the software development process.
The exact number of phases needed to develop the product can be varied by the project manager
depending upon the project risks.
As the project manager dynamically determines the number of phases, the project manager has an
important role in developing a product using the spiral model.
It is based on the idea of a spiral, with each iteration of the spiral representing a complete
software development cycle, from requirements gathering and analysis to design, implementation,
testing, and maintenance.
1. Planning
2. Risk Analysis
3. Engineering
4. Evaluation
5. Planning (NEW)
RAD
RAD, which stands for Rapid Application Development, is a software development methodology that
prioritizes speed and flexibility. It is designed to address the limitations of traditional waterfall models by
emphasizing iterative development, user feedback, and quick turnaround times. RAD is particularly
suitable for projects where requirements are expected to change frequently and rapidly.
1. Iterative Development:
RAD follows an iterative and incremental approach, dividing the project into small,
manageable modules or components. Each iteration involves the development of a subset
of features.
2. User Involvement:
Users are actively involved throughout the development process. Their feedback is
sought at various stages, allowing for quick adjustments based on changing requirements
or user preferences.
3. Prototyping:
RAD is highly adaptive to changes in requirements. The development team can quickly
incorporate modifications and enhancements based on user feedback or evolving business
needs.
5. Collaborative Development:
6. Time-Boxing:
RAD projects are time-boxed, meaning that there are specific, predefined time frames for
each iteration. This time constraint encourages a sense of urgency and helps in
maintaining project momentum.
RAD often leverages rapid prototyping tools and techniques to streamline the creation of
prototypes. These tools allow for quick visualization of the application's interface and
functionality.
8. Parallel Development:
9. Reusability:
RAD promotes the reuse of existing components or code modules. This can be achieved
through the use of libraries, frameworks, or pre-existing components to expedite
development.
RAD emphasizes delivering tangible business value quickly. Features that have the
highest priority and contribute directly to business objectives are developed first.
Continuous risk assessment and mitigation are essential components of RAD. Early
prototypes and iterations help identify and address potential risks early in the
development process.
Rapid delivery of prototypes and frequent user involvement contribute to high levels of
client satisfaction. Users have a more active role in shaping the final product, leading to a
system that better aligns with their needs.
The role of a System Analyst is critical in the development and implementation of information systems.
System Analysts act as a bridge between business stakeholders and IT professionals, ensuring that
technology solutions meet the needs of the organization. Their responsibilities span various stages of the
system development life cycle. Here are key roles and responsibilities of a System Analyst:
1. Requirements Analysis:
Analyze and prioritize requirements, ensuring they align with organizational goals.
2. System Design:
Define the architecture, components, and data flow of the proposed system.
3. Feasibility Analysis:
Assess the technical, operational, and economic feasibility of proposed system solutions.
5. Prototyping:
6. Data Modeling:
Analyze and model data requirements, including the structure and relationships of data
entities.
7. System Testing:
8. Change Management:
9. User Training:
10. Documentation:
Ensure that the developed system meets quality standards and aligns with organizational
policies.
Ensure that systems comply with relevant regulations and security standards.
Collaborate with external vendors when necessary, such as selecting and integrating
third-party solutions.
Database Administrator (DBA) and Database Designer are distinct roles in the management and
development of databases. Each role plays a crucial part in ensuring the efficiency, reliability, and
security of a database system. Here are the key responsibilities of each role:
1. Database Management:
Install, configure, and maintain database management systems (DBMS) such as Oracle,
MySQL, SQL Server, or others.
2. Security Management:
Implement and enforce security measures to protect the database from unauthorized
access, data breaches, and other security threats.
Develop and implement backup and recovery strategies to ensure data integrity and
availability in case of system failures or disasters.
4. Performance Tuning:
Plan and execute database upgrades, migrations, and patching to keep the system up-to-
date with the latest features, enhancements, and security fixes.
6. Troubleshooting:
7. Capacity Planning:
Monitor and forecast database growth to ensure that the system has sufficient resources
(storage, processing power) to handle increasing data volumes and user demands.
Develop and maintain disaster recovery plans to minimize downtime and data loss in the
event of a catastrophic failure or disaster.
Database Designer:
1. Data Modeling:
Design and create conceptual, logical, and physical data models that represent the
structure of the database, including tables, relationships, and constraints.
2. Normalization:
Apply normalization techniques to eliminate data redundancy and ensure efficient data
storage.
3. Indexing Strategies:
Define and create database schemas that align with business requirements and support
efficient data retrieval and manipulation.
Work closely with application developers to ensure the database schema meets
application needs.
Enforce data integrity through the implementation of constraints, such as primary keys,
foreign keys, unique constraints, and check constraints.
Ensure that data stored in the database meets specified business rules.