Solved Assignment of Ignou
Course Code : BCS-051
Course Title : Introduction to Software Engineering
Assignment Number : BCA(V)051/Assignment/2023-24
Maximum Marks : 100
Weightage : 25%
Last Date of Submission : 31st October, 2023 (For July, Session)
30th April, 2024 (For January, Session)
This assignment has four questions carrying a total of 80 marks. Answer all the questions. Rest 20 marks are for viva-voce. You may use illustrations and diagrams to enhance explanations. Please go through the guidelines regarding assignments given in the Programme Guide for the format of presentation.
Q1. (a) What is SRS? Explain properties of good SRS. Develop an SRS for an “Online Student Registration
System”. Make necessary assumptions. Follow IEEE SRS format. Briefly explain the characteristics
of a good SRS.
Answer: What is SRS?
SRS stands for Software Requirements Specification, which is a document that outlines the functional and non-functional requirements of a software system. It provides a detailed description of what the system should do, how it should perform, and the constraints it must operate within.
Properties of Good SRS
A good SRS should possess the following properties:
- Correctness: The SRS should accurately capture the requirements of the system.
- Unambiguity: The SRS should be clear and concise, avoiding ambiguity and misinterpretation.
- Completeness: The SRS should cover all the necessary requirements of the system.
- Consistency: The SRS should be consistent in its notation, terminology, and style.
- Verifiability: The SRS should be possible to verify, either through inspection, analysis, or testing.
- Modifiability: The SRS should be easy to modify and update as requirements change.
- Traceability: The SRS should provide a clear traceability of requirements from the initial stages to the final product.
SRS for Online Student Registration System
Here is an SRS for an Online Student Registration System, following the IEEE SRS format:
1. Introduction
The Online Student Registration System is a web-based application that allows students to register for courses, view their schedules, and access their academic records. The system will be used by students, faculty members, and administrative staff.
2. Overall Description
The system will provide the following functionalities:
- Student registration for courses
- Course scheduling and timetabling
- Academic record management
- User authentication and authorization
- Reporting and analytics
3. Functional Requirements
- The system shall allow students to register for courses online.
- The system shall validate student eligibility for course registration.
- The system shall generate a course schedule for each student.
- The system shall allow faculty members to view student registrations and course schedules.
- The system shall allow administrative staff to manage course offerings and student records.
4. Non-Functional Requirements
- The system shall respond to user requests within 2 seconds.
- The system shall be available 24/7, with a minimum uptime of 99.9%.
- The system shall ensure data security and integrity.
- The system shall be compatible with multiple browsers and devices.
5. User Interfaces
- The system shall provide a user-friendly interface for students, faculty members, and administrative staff.
- The system shall provide clear and concise instructions for each functionality.
6. Assumptions and Dependencies
- The system will be developed using a web-based technology stack.
- The system will integrate with existing student information systems.
- The system will be hosted on a cloud-based infrastructure.
7. Glossary
- Course: A unit of instruction offered by the institution.
- Student: A person enrolled in a course or program.
- Faculty member: A person teaching a course or advising students.
- Administrative staff: A person responsible for managing student records and course offerings.
Characteristics of a Good SRS
A good SRS should be:
- Clear: Easy to understand and interpret.
- Concise: Free from unnecessary information and jargon.
- Complete: Covers all the necessary requirements of the system.
- Consistent: Uses consistent notation, terminology, and style throughout.
- Verifiable: Possible to verify through inspection, analysis, or testing.
Q1. (b) Develop a test case for any testing technique for an “Online Student Registration System”.
Answer: Here’s an example of a test case for the registration functionality using the Equivalence Partitioning testing technique:
Test Case ID: REG-001 Test Case Description: Verify that the system accepts valid email addresses during registration.
Preconditions:
- The user is on the registration page.
- The user has not yet entered an email address.
Test Steps:
- Enter a valid email address in the email field (e.g., “test@example.com“).
- Enter a valid password in the password field.
- Enter a valid first name in the first name field.
- Enter a valid last name in the last name field.
- Enter a valid phone number in the phone number field.
- Click the “Register” button.
Expected Result:
- The system should accept the email address and allow the user to complete the registration process.
Test Data:
- Valid email addresses (e.g., “test@example.com“, “user@ignou.ac.in“)
- Invalid email addresses (e.g., “test.com“, “[test@]”, “test@example”)
This test case checks that the system accepts valid email addresses during registration. The test data includes both valid and invalid email addresses, which are partitioned into equivalence classes based on the email address format. The test case verifies that the system accepts valid email addresses and rejects invalid ones.
Q2. (a) Define the terms ‘Coupling’ and ‘Cohesion’. Briefly explain the meaning of ‘highly cohesive’ system. Is there any relation between ‘coupling’ and ‘cohesion’? Explain briefly.
Answer: Here are the definitions and explanations:
Coupling: Coupling refers to the degree of interdependence between two or more modules or components of a software system. In other words, it measures how tightly the modules are connected to each other. High coupling indicates that the modules are highly dependent on each other, while low coupling indicates that the modules are loosely connected. Low coupling is generally considered to be a desirable characteristic of a software system because it makes the system easier to maintain, test, and modify.
Cohesion: Cohesion refers to the degree to which the elements within a module or component work together to achieve a single, well-defined purpose. In other words, it measures how closely the responsibilities of a module are related to each other. High cohesion indicates that the module has a single, well-defined purpose and all of its elements contribute to that purpose, while low cohesion indicates that the module has multiple, unrelated responsibilities. High cohesion is generally considered to be a desirable characteristic of a software system because it makes the system easier to understand, maintain, and modify.
Highly cohesive system: A highly cohesive system is a software system in which each module or component has a single, well-defined purpose and all of its elements contribute to that purpose. In other words, the responsibilities of each module are clearly defined and closely related to each other. High cohesion is a desirable characteristic of a software system because it makes the system easier to understand, maintain, and modify.
Relation between coupling and cohesion: Coupling and cohesion are related in that they are both measures of the quality of a software system’s design. A system with low coupling and high cohesion is generally considered to be well-designed because it is easier to maintain, test, and modify. On the other hand, a system with high coupling and low cohesion is considered to be poorly designed because it is more difficult to maintain, test, and modify. Therefore, software designers strive to create systems with low coupling and high cohesion.
In summary, coupling and cohesion are both important measures of a software system’s design quality. Low coupling and high cohesion are desirable characteristics of a well-designed system, while high coupling and low cohesion are indicative of a poorly designed system.
Q2. (b) What are application logic objects? Explain with the help of an example.
Answer: Here are the application logic objects:
Application logic objects are software components that encapsulate the business logic of an application. They are responsible for processing the data and performing the necessary operations to achieve the desired functionality. These objects are designed to be modular, reusable, and independent of the user interface or database.
In the context of an Online Student Registration System, an example of an application logic object could be a “Student” object. This object would encapsulate the logic related to managing student data, such as creating a new student record, updating student information, and deleting a student record.
The “Student” object would have methods such as “createStudent”, “updateStudent”, and “deleteStudent” that would perform the necessary operations on the student data. These methods would interact with the database to retrieve or update the student data, and they would also perform any necessary validation or processing of the data before saving it to the database.
The “Student” object would be designed to be modular and reusable, so it could be used in other parts of the application where student data needs to be managed. It would also be independent of the user interface, so it could be used with different user interfaces without requiring any changes to the logic of the object.
Overall, application logic objects are an important part of a well-designed software application, as they help to encapsulate the business logic and make it more modular, reusable, and maintainable.
Q3. (a) What is Spiral model for software development? Explain the types of software systems developed using this model.
Answer: Here are the Spiral model for software development
The Spiral model is a software development process that combines elements of both the Waterfall and Prototype models. It is a risk-driven model that emphasizes iterative development and risk management. The Spiral model consists of a series of spirals, each representing a phase of the software development process.
The four key phases of the Spiral model are:
- Planning: In this phase, the project objectives, requirements, and constraints are identified and documented. The risks associated with the project are also identified and analyzed.
- Risk Analysis: In this phase, the risks identified in the Planning phase are analyzed in detail. Mitigation strategies are developed to address the risks, and a plan is created for the next iteration of the spiral.
- Development and Testing: In this phase, the software is developed and tested based on the requirements and design specifications. The software is then integrated with the existing system, if applicable.
- Review and Evaluation: In this phase, the software is reviewed and evaluated to ensure that it meets the project objectives and requirements. The software is then deployed to the production environment.
The Spiral model is particularly well-suited for large, complex projects where the requirements are not well-defined or are likely to change. It is also useful for projects where there are significant risks associated with the development process.
The types of software systems that can be developed using the Spiral model include:
- Business Applications: These are applications that support the day-to-day operations of an organization, such as accounting, payroll, and inventory management systems.
- Real-time Systems: These are systems that require real-time processing, such as control systems for manufacturing plants or flight control systems for aircraft.
- Embedded Systems: These are systems that are built into other devices, such as automotive electronics or medical devices.
- Web Applications: These are applications that are delivered over the internet, such as e-commerce platforms or social media sites.
Overall, the Spiral model is a flexible and risk-driven approach to software development that can be used for a wide range of software systems. It emphasizes iterative development, risk management, and continuous feedback, making it an ideal choice for complex and high-risk projects.
Q3. (b) What is Software Configuration Management? Briefly explain the activities in software configuration management.
Answer: Here are the Software Configuration Management
Software Configuration Management (SCM) is a software engineering practice that focuses on managing the configuration of software systems and ensuring that software components are properly controlled, tracked, and stored. It involves a set of processes and tools that help to manage the different components of a software system, including source code, documentation, and other assets.
The activities in SCM include:
- Identification and Establishment: This involves identifying the configuration items from products that compose baselines at given points in time. Establishing relationships among items, creating a mechanism to manage multiple levels of control and procedure for the change management system.
- Version control: This involves creating versions/specifications of the existing product to build new products with the help of the SCM system.
- Change control: This involves controlling changes to Configuration items (CI) by submitting a change request, evaluating the request, making the change, testing the change, and checking in the updated object to the database.
- Configuration auditing: This involves a software configuration audit that confirms the completeness, correctness, and consistency of items in the SCM system and tracks action items from the audit to closure.
- Reporting: This involves providing accurate status and current configuration data to developers, testers, end users, customers, and stakeholders through various guides, notes, and manuals.
SCM is important for effective bug tracking, continuous deployment and integration, risk management, supporting big projects, reproducibility, and parallel development. It helps to ensure that changes made to a software system are properly coordinated and that the system is always in a known and stable state.
Q4.Write short notes on the following:
(a) Entity Relationship Diagram
(b) Alpha and Beta Testing
(c) Software Quality Assurance Activities
(d) Project Triangle
Answer:
(a) Entity Relationship Diagram (ERD) is a graphical representation of entities and their relationships in a system. Entities are represented as boxes, while relationships are represented as lines connecting the boxes. ERDs are used in software engineering to help designers understand the data requirements of a system and to communicate those requirements to other stakeholders.
(b) Alpha testing is a type of software testing where the software is tested in-house, by the development team, before it is released to customers. Beta testing, on the other hand, is a type of software testing where the software is tested by a group of external users, often in a real-world setting. Alpha testing is typically done earlier in the development cycle, while beta testing is done closer to the release date.
(c) Software Quality Assurance (SQA) activities are the processes and procedures used to ensure that software meets the required quality standards. SQA activities include:
- Quality planning: defining the quality goals and strategies for the project
- Quality control: monitoring the project to ensure that it meets the quality goals
Leave a Reply