Professional Documents
Culture Documents
(a) Which Systems Development Life Cycle (SDLC) will you propose for
the specification given above? Explain the proposed SDLC.
Given the specification for the Materials Management System, I would recommend
using the Waterfall SDLC for this project. The Waterfall model is a traditional and
linear approach to software development that involves distinct phases with well-
defined objectives and deliverables at each stage. Here's an explanation of why the
Waterfall model is suitable for this project:
4. Quality Assurance: Waterfall allows for rigorous testing and quality assurance
activities at the end of the development cycle. For a system involving inventory
management, it is crucial to thoroughly test all functionalities to ensure accuracy,
reliability, and security.
1. Agile SDLC: While Agile is a popular SDLC known for its flexibility and
adaptability, it may not be the best choice for this project due to certain factors:
In summary, while Agile and Prototyping SDLCs have their strengths, the Waterfall
model appears to be the most suitable choice for the Materials Management System
project due to its structured, sequential approach, emphasis on documentation,
stability of requirements, and suitability for critical and regulated systems.
Q2:
(a) What would be the major costs of the system development?
The major costs associated with system development, such as the Materials
Management System described in your scenario, can be categorized into several key
areas:
1. Personnel Costs:
Salaries and Wages: The largest portion of the budget often goes towards paying
the salaries and wages of the development team, including project managers,
analysts, designers, developers, testers, and support staff.
Training: Costs for training team members in new technologies or methodologies
may be necessary.
Contractors and Consultants: If external expertise is required, hiring contractors
or consultants can add to personnel costs.
3. Development Costs:
Design and Coding: Expenses related to the actual development work, including
design, coding, and unit testing.
Prototyping and Mockups: Costs associated with creating prototypes or mockups
for user interface design.
Integration: Costs involved in integrating various system components and third-
party APIs.
Testing and Quality Assurance: Expenses related to comprehensive testing,
including functional, integration, performance, and security testing.
Bug Fixing: The cost of identifying and fixing bugs and issues that arise during
development and testing phases.
Project Management Tools: Costs for project management software or tools used
to track progress, schedule tasks, and manage resources.
Project Managers: Salaries and expenses for project managers who oversee the
development process and ensure it stays on track.
Data Center Hosting: If the system is hosted in a data center, there will be
ongoing costs for space, power, and cooling.
Cloud Services: Costs for using cloud computing services, such as Infrastructure
as a Service (IaaS) or Platform as a Service (PaaS).
7. Security Costs:
Ongoing Maintenance: Costs for maintaining and updating the system after it
goes live.
User Support: Expenses related to providing user support and help-desk services.
9. Legal and Compliance Costs:
Licensing and Compliance: Costs associated with ensuring that the system
complies with legal and regulatory requirements.
Intellectual Property: Legal fees for handling intellectual property rights, if
applicable.
It's important to note that the actual costs can vary significantly depending on the size
and complexity of the system, the technologies used, the geographic location of
development, and other project-specific factors. Proper cost estimation, budgeting,
and ongoing financial management are essential to ensure the successful development
and maintenance of the system within budget constraints.
The system generates purchase orders automatically when items fall below the
minimum inventory level.
Bulk purchasing and negotiating with suppliers based on accurate demand data
can lead to cost savings.
4. Reduction in Stockouts and Backorders:
The system maintains an approved list of suppliers, which can lead to better
negotiation and potentially lower procurement costs.
The system can track costs associated with each item, including purchase price,
shipping, and handling costs.
This data allows for accurate cost analysis and helps identify cost-saving
opportunities.
Accurate inventory data can lead to better financial reporting and more informed
decision-making.
Accurate financial statements can aid in budgeting and forecasting.
Inventory control features can help reduce the risk of theft and loss of materials,
saving both tangible and intangible costs.
The system can assist in maintaining compliance with industry regulations and
auditing requirements.
Avoiding compliance violations and penalties can save the organization money.
The system provides data and insights that can inform strategic decisions, helping
the organization allocate resources effectively.
As the organization grows, the system can scale to handle increased inventory
and material management needs efficiently.
It's important to note that the actual financial benefits will depend on factors such as
the organization's size, industry, the efficiency of the system implementation, and the
extent to which the system is used effectively. Properly measuring and tracking these
benefits over time is essential for demonstrating the system's return on investment
(ROI) and ongoing value to the organization.
(c) Perform a cost-benefit analysis for the proposed software and report its
findings.
Performing a detailed cost-benefit analysis (CBA) for a software project like the
proposed Materials Management System would typically involve precise cost
estimations and revenue projections based on the specific circumstances of the
organization. However, I can provide you with a simplified example of how to
structure a CBA. Please note that actual costs and benefits will vary, and you should
consult with financial experts and stakeholders for accurate figures in Indian Rupees
(INR).
Costs (INR):
Personnel Costs:
Development Team Salaries: 20,00,000 INR
Project Manager Salary: 6,00,000 INR
Development Costs:
Design and Coding: 15,00,000 INR
Testing and Quality Assurance: 5,00,000 INR
Security Costs:
Security Audits and Assessments: 1,50,000 INR
Benefits (INR):
Inventory Cost Savings:
Reduction in Holding Costs: 10,00,000 INR (annually)
Cost Reduction in Purchasing: 5,00,000 INR (annually)
Revenue Increase:
Customer Service Improvements: 4,00,000 INR (annually)
Payback Period: Initial Implementation Cost / Net Annual Benefit = 75,00,000 INR /
8,00,000 INR ≈ 9.38 years
(d) List the major tasks and milestones of the project and make a project
schedule. The schedule must include both the GANTT and PERT charts.
Explain the two charts drawn by you.
Major Tasks and Milestones for the Materials Management System Project:
Project Schedule:
Duration
Task/Milestone (in weeks) Start Date End Date
Project Initiation 2 1 2
Requirements Analysis 4 3 6
System Design 4 7 10
Development 8 11 18
Testing 6 19 24
Documentation and Training 4 25 28
Deployment 2 29 30
Post-Deployment 6 31 36
Final Review and Closeout 2 37 38
Now, let's create Gantt and PERT charts to visualize this schedule:
Gantt Chart:
PERT Chart:
A PERT chart is a network diagram used for project scheduling and management. It
illustrates task dependencies and the critical path, highlighting the longest path
through the project. Here's a simplified PERT chart for the project:
The Gantt chart is a horizontal timeline that focuses on the sequence and duration
of tasks, making it easy to see when each task starts and ends.
The PERT chart is a network diagram that emphasizes task dependencies and
critical paths, helping to identify which tasks have the most significant impact on
project duration.
Both charts are useful for project planning and management, but they provide
different perspectives on the project schedule.
Q3:
(a) Study the system and create a software requirement specification. You
must identify either the processes or objects while analyzing. During the
analysis, identify and explain possible input and output of the processes.
Inputs:
User provided username and password.
Outputs:
Authentication status (success/failure).
User access privileges.
Description:
This process verifies the identity of users who log into the system by comparing their
provided credentials with stored user data. The output indicates whether
authentication was successful, and if so, the user's access privileges within the system.
Inputs:
User ID.
Item code/name.
Quantity required.
Purpose of request.
Outputs:
Request status (approved/pending/rejected).
Confirmation of request.
Description:
Users can request materials from the warehouse by providing specific details about
the request, including the item they need, the quantity required, and the purpose of the
request. The system processes these requests, updating the status and notifying the
user of the outcome.
Attributes:
Item code.
Item name.
Description.
Quantity on hand.
Minimum required quantity.
Supplier information.
Cost per unit.
Description:
Inventory items represent the materials or products stored in the warehouse. Each
item has attributes like item code, name, description, current quantity in stock,
minimum required quantity, supplier information, and cost per unit. These attributes
are used to manage and track inventory.
Inputs:
Inventory item details (e.g., code, name).
Current quantity on hand.
Minimum required quantity.
Outputs:
Purchase order for low-stock items.
Supplier information for order placement.
Description:
When an inventory item falls below its minimum required quantity, the system
generates a purchase order for that item. The input includes item details and current
quantity on hand. The output is a purchase order that can be sent to an approved
supplier for order placement.
5. Object: Supplier
Attributes:
Supplier ID.
Supplier name.
Contact information (e.g., email, phone).
Approved supplier status.
Description:
Suppliers are entities external to the system that provide materials to the warehouse.
Each supplier has attributes such as supplier ID, name, contact information, and an
approved supplier status, which is used to determine eligibility for order placement.
Inputs:
Material receipts.
Material issues.
Outputs:
Updated inventory item quantities.
Inventory transaction records.
Description:
This process manages the inflow and outflow of materials from the inventory. It takes
inputs in the form of material receipts (additions to inventory) and material issues
(removals from inventory) and updates the quantities of inventory items accordingly.
It also maintains transaction records for auditing purposes.
7. Process: Reporting
Inputs:
User-defined report criteria (e.g., date range, item category).
Outputs:
Customized reports (e.g., inventory status, transaction history).
Description:
Users can generate custom reports based on their criteria, such as specifying a date
range or item category. The system processes these inputs to generate and deliver
tailored reports, providing insights into inventory status, transaction history, or other
relevant data.
Attributes:
User ID.
Username.
Password.
Access privileges.
Description:
User accounts represent individuals or departments authorized to access the system.
Each user account has attributes like user ID, username, password, and access
privileges, which determine the level of access and functionality available to the user.
This Software Requirement Specification (SRS) outlines the key processes, objects,
and their associated inputs and outputs within the Materials Management System. It
provides a foundation for the development team to understand and implement the
system's functionality accurately. The SRS can be further detailed with additional
requirements, use cases, and functional specifications as needed for the project.
(b) After identifying the requirements, create Analysis Models. You may
either use the classical approach and draw Entity relationship diagrams
and data flow diagrams (DFD’s) up to level 2-3; or you may take object-
oriented analysis approach and create class diagrams, use case diagrams,
use cases etc.
To represent the analysis models for the Materials Management System, I'll take an
object-oriented analysis approach. Here are the key analysis models, including class
diagrams, use case diagrams, and use cases:
Class Diagram:
A class diagram represents the classes or objects in the system and their relationships.
Here's a simplified class diagram for the Materials Management System:
+------------------+
| UserAccount |
+------------------+
| - userId: int |
| - username: str |
| - password: str |
| - privileges: [] |
+------------------+
|
|
V
+------------------+
| Inventory |
+------------------+
| - itemId: int |
| - itemName: str |
| - description: str|
| - qtyOnHand: int |
| - minQty: int |
| - supplierInfo: |
| - costPerUnit: |
+------------------+
|
|
V
+------------------+
| Supplier |
+------------------+
| - supplierId: int|
| - name: str |
| - contactInfo: |
| - approved: bool |
+------------------+
1. Login:
Description: Users log into the system by providing their credentials.
Actors: User
Inputs: Username, password
Outputs: Authentication status, user privileges
2. Request Material:
Description: Users can request materials from the warehouse.
Actors: User
Inputs: User ID, item code/name, quantity required, purpose of request
Outputs: Request status, confirmation
4. Generate Reports:
Description: Users can generate customized reports based on specific criteria.
Actors: User
Inputs: User-defined report criteria (e.g., date range, item category)
Outputs: Customized reports
These analysis models provide a high-level overview of the system's structure, user
interactions, and key functionalities. Additional use cases and classes can be added as
needed for a more detailed analysis and design of the Materials Management System.
Q4:
(a) Design the system architecture and the database as per the system’s
needs. You must perform normalization on tables up to 3rd normal form.
The table design must include primary and foreign keys and constraints.
To design the system architecture and the database for the Materials Management
System, we'll start by defining the database schema, including tables, primary keys,
foreign keys, and constraints. We'll also perform normalization up to the 3rd normal
form. Below is the database schema design:
Database Tables:
The UserID in the UserAccounts table is the primary key, and it relates to the
UserID in the MaterialRequests table as a foreign key.
The ItemID in the InventoryItems table is the primary key and relates to the
ItemCode in the MaterialRequests and PurchaseOrders tables as a foreign key.
The SupplierID in the InventoryItems and PurchaseOrders tables is a foreign
key that relates to the SupplierID in the Suppliers table.
Normalization:
We'll perform normalization up to the 3rd normal form (3NF) by eliminating partial
and transitive dependencies:
In our design:
The UserAccounts table is in 2NF and 3NF as there are no partial or transitive
dependencies.
The InventoryItems table is in 2NF and 3NF as there are no partial or transitive
dependencies.
The Suppliers table is in 1NF, 2NF, and 3NF as there are no partial or transitive
dependencies.
The MaterialRequests table is in 2NF and 3NF as there are no partial or
transitive dependencies.
The PurchaseOrders table is in 2NF and 3NF as there are no partial or transitive
dependencies.
This database schema is designed to efficiently store and manage data for the
Materials Management System, with proper normalization and relationships between
tables. It ensures data integrity and allows for efficient querying and reporting.
(b) Create the system flow chart or detailed process design and state
transition diagrams. Also design the user input screens and output report
formats.
Creating system flowcharts, state transition diagrams, user input screens, and output
report formats for the Materials Management System will require a detailed design
process. Below, I'll provide an overview of what each of these components may look
like.
System Flowchart:
A system flowchart visually represents the flow of processes and data within the
Materials Management System. Here's a simplified flowchart:
Users log in to the system using their credentials.
Upon successful login, users can perform various actions such as requesting
materials, generating reports, or managing inventory.
Material requests are processed, and purchase orders are generated as needed.
Reports can be generated based on user-defined criteria.
The system maintains the database of user accounts, inventory items, suppliers,
material requests, and purchase orders.
A state transition diagram models the different states that an object or system can be
in and the transitions between those states. In the case of the Materials Management
System, we can create a state transition diagram for a material request:
The request starts in the "Pending" state.
It can transition to "Approved" or "Rejected" based on review.
Once approved, it can transition to "Fulfilled" when the materials are issued.
If rejected, it remains in the "Rejected" state.
From "Fulfilled," it can transition to "Closed" when the request is complete.
User input screens are designed to facilitate user interactions with the system. Here
are some example screens:
Output report formats are templates for displaying information to users. Here are
some example report formats:
Inventory Status Report: Lists all inventory items with details on quantity,
minimum quantity, and supplier information.
Transaction History Report: Provides a log of material requests, including
request ID, user, item, quantity, and status.
Purchase Order Report: Displays generated purchase orders with item details,
quantities, and supplier information.
User Activity Report: Lists user activities and interactions with the system,
including login/logout times and actions taken.
Please note that these are simplified representations, and the actual design of screens
and reports would require consideration of user experience (UX) design principles,
formatting, and layout. Additionally, the system's user interface may vary based on
the technology stack and design preferences of the development team and
stakeholders. It's essential to involve UX/UI designers and developers in the design
process to create an effective and user-friendly interface.
Q5:
Design various unit test cases for different testing techniques/ strategies.
Designing unit test cases is a crucial step in the software development process to
ensure that individual components or functions of the system work correctly in
isolation. Here are some unit test cases for different testing techniques and strategies:
# Test the boundary condition when requesting the minimum quantity of an item
def test_material_request_boundary_min_quantity():
assert material_request("item456", 1, "Testing") == "Request Successful"
# Test the boundary condition when requesting the maximum quantity of an item
def test_material_request_boundary_max_quantity():
assert material_request("item789", 1000, "Large Order") == "Request Successful"
4. Equivalence Partitioning:
Equivalence partitioning divides the input domain into equivalence classes and
tests representative values from each class.
5. Error Guessing:
Error guessing involves designing test cases based on the tester's intuition and
experience.
# Positive test case: Check if the system handles valid user input
def test_positive_input():
assert handle_input("valid_input") == "Success"
# Negative test case: Check if the system handles invalid user input
def test_negative_input():
assert handle_input("invalid_input") == "Error"
These are just a few examples of unit test cases for different testing techniques and
strategies. Depending on the specific requirements and complexity of your system,
you may need to design a more extensive set of unit tests to ensure comprehensive
test coverage. Additionally, you can use testing frameworks and libraries (e.g., unit
test in Python, JUnit in Java) to organize and automate the execution of unit tests.