Unit Sepm See Answres
Unit Sepm See Answres
### 1. Distinguish generic and customized software products with examples for each.
- **Generic Software Products**: These are designed to be used by a wide range of users
with broadly similar needs. They are typically off-the-shelf solutions that require little to no
customization. Example: Microsoft Office Suite, which is used by many organizations for
tasks such as word processing, spreadsheet management, and presentations.
- **Customized Software Products**: These are tailored to meet the specific requirements
of a particular organization or user. They are developed to address unique business
processes or challenges. Example: A custom Customer Relationship Management (CRM)
system developed for a specific company to manage its unique sales processes and customer
interactions.
- **Functional Requirements**: These specify what the system should do, describing the
functions and features it must have. They detail the expected behavior of the system in
particular situations. Example: "The system shall allow users to log in using their email and
password."
### 3. List and explain any two of the fundamental software development activities.
- **Requirements Analysis**: This activity involves gathering and analyzing the requirements
from stakeholders to ensure a thorough understanding of what the software needs to do. It
serves as the foundation for the entire development process, ensuring that all stakeholder
needs are addressed.
- **Design**: This phase involves defining the architecture, components, interfaces, and
data for a system to satisfy specified requirements. It translates requirements into a
blueprint for building the software, detailing how each component will function and interact
within the system.
- **Reliability**: Good software consistently performs its intended functions under specified
conditions without failure. It must handle errors gracefully and operate without unexpected
interruptions, ensuring users can rely on it for critical tasks.
- **Usability**: Good software is user-friendly, easy to learn, and efficient to use. It provides
a good user experience by having an intuitive interface and clear instructions, reducing the
learning curve and increasing productivity and satisfaction.
The web has profoundly impacted software engineering development by facilitating global
collaboration, enabling remote work, and fostering the open-source movement. It has
shifted development towards web-based applications accessible from any location, which
has introduced new security and performance considerations. Agile and DevOps
methodologies have become more prevalent, leveraging continuous integration and
continuous deployment (CI/CD) pipelines. Additionally, the web has democratized software
distribution, allowing developers to reach a global audience quickly and efficiently, and has
accelerated the pace of innovation through rapid feedback and iteration cycles.
### 7. As a software developer, list some of the ethical considerations you should take into
account when developing healthcare software.
- **Privacy and Confidentiality**: Ensuring that patient data is protected and only accessible
to authorized individuals.
- **Accuracy and Reliability**: Ensuring the software is accurate and reliable to prevent
medical errors that could harm patients.
- **Compliance**: Adhering to healthcare regulations and standards, such as HIPAA in the
United States.
- **Transparency**: Being clear about how data is collected, used, and shared.
- **Usability and Accessibility**: Ensuring the software is user-friendly and accessible to all
users, including those with disabilities.
- **Security**: Implementing robust security measures to protect against breaches and
cyber-attacks.
- **Functional Requirements**:
- Define what the system should do.
- Describe specific behaviors or functions.
- Example: "The system shall allow users to create and edit profiles."
- **Non-Functional Requirements**:
- Define how the system performs its functions.
- Describe system attributes such as performance, usability, and reliability.
- Example: "The system shall handle up to 10,000 concurrent users."
The prototyping model involves creating an early, simplified version of the final system
(prototype) to understand user requirements better. It allows users to interact with the
prototype, providing feedback that guides further development. This iterative process
continues until the final system meets user needs.
### 10. How do the principles of the IEEE/ACM Code of Software Engineering Ethics guide
software engineers in their professional activities?
- **Public Interest**: Software engineers should act in the best interest of the public,
ensuring their work benefits society and minimizes harm.
- **Client and Employer**: Engineers must act in the best interests of their clients and
employers, consistent with the public interest, ensuring honesty and fairness in all dealings.
- **Product**: Engineers should ensure the products they develop meet the highest
professional standards possible, emphasizing quality and reliability.
- **Judgment**: They should maintain integrity and independence in their professional
judgment, making decisions based on professional principles rather than personal gain.
- **Management**: Ethical management practices should be promoted, including fairness,
transparency, and respect for all team members.
- **Profession**: Engineers should advance the integrity and reputation of the profession,
supporting professional development and ethical behavior among peers.
### 11. List any 6 ethical principles that must be followed by a software developer.
1. **Public Interest**: Act consistently with the public interest and welfare.
2. **Client and Employer**: Act in the best interest of clients and employers, consistent
with the public interest.
3. **Product**: Ensure the software product meets the highest professional standards
possible.
4. **Judgment**: Maintain integrity and independence in professional judgment.
5. **Management**: Promote an ethical approach to the management of software
development and maintenance.
6. **Profession**: Advance the integrity and reputation of the profession consistent with
the public interest.
### 12. Why is it important for software engineers to follow a code of ethics?
Following a code of ethics is crucial for software engineers because it builds trust and
credibility with clients, employers, and the public. It ensures high-quality, reliable, and safe
software products. Adherence to ethical standards promotes professional integrity and
accountability, preventing malpractice and ensuring that the work benefits society. It also
guides engineers in making decisions that balance competing interests and navigate complex
ethical dilemmas.
### 13. Why is requirements gathering and analysis considered a critical phase in software
engineering?
Requirements gathering and analysis are critical because they form the foundation for the
entire software development process. This phase ensures that the developers understand
the stakeholders' needs and expectations, leading to a product that meets user
requirements and business goals. Proper requirements analysis helps identify potential
issues early, reducing the risk of costly changes and rework later. It also facilitates clear
communication among stakeholders, developers, and project managers.
### 14. What is the purpose of a data flow diagram (DFD) in software engineering?
A data flow diagram (DFD) serves to visualize the flow of data within a system, illustrating
how data is processed and transferred between different parts of the system. It helps in
understanding the functional aspects of the system, identifying data sources, destinations,
and processes. DFDs are valuable for communicating system design to stakeholders and
ensuring that all data handling requirements are understood and addressed during
development.
1. **Complete**: The SRS should include all necessary requirements and information,
leaving no aspect of the system unaddressed.
2. **Consistent**: It should be free of contradictions, with requirements and information
harmoniously aligned.
3. **Unambiguous**: The SRS should be clear and precise, avoiding vague language to
prevent misinterpretations and ensure everyone has a common understanding of the
requirements.
### 16. Identify three critical non-functional requirements for a banking application and
explain why they are important.
1. **Security**: Essential to protect sensitive financial data from unauthorized access and
breaches. Ensuring robust authentication, encryption, and access control mechanisms is
critical to maintaining user trust and regulatory compliance.
2. **Performance**: Crucial for handling a high volume of transactions efficiently. The
system must provide quick response times to ensure a seamless user experience and
prevent frustration, especially during peak usage times.
3. **Reliability**: The application must be highly reliable with minimal downtime to ensure
users can access banking services whenever needed. This is vital for maintaining customer
satisfaction and trust in the bank's services.
### 18. Create a simple sequence diagram for the "Login" use case in a web application.
```plaintext
User Login Page Server Database
| | | |
|---Enter Login--> | | |
| |---Send Credentials--> |
| | |--Query--> |
| | |<--User Data--- |
| |<--Success/Fail Response--| |
|<--Display Message| | |
| | | |
```
### 19. How do use case models contribute to the requirements analysis process?
Use case models contribute by providing a clear and structured way to capture functional
requirements. They describe the interactions between users (actors) and the system,
illustrating different scenarios and user goals. This helps identify and document what the
system should do from the user's perspective, facilitating better understanding and
communication among stakeholders. Use case models also help uncover hidden
requirements and ensure that all user needs are considered during development.
### 20. How would you document the interface specifications for a travel booking system
in the SRS?
To document the interface specifications for a travel booking system in the SRS, you should
include:
Key points:
Software engineering is an engineering discipline that is concerned with all aspects of
software production.
Essential software product attributes are maintainability, dependability and security,
efficiency and acceptability.
The high-level activities of specification, development, validation and evolution are
part of all software processes.
The fundamental notions of software engineering are universally applicable to all
types of system development.
There are separate identified phases in the waterfall model:
Requirements analysis and definition
The main drawback of the waterfall model is the difficulty of accommodating change after
the process is underway. In principle, a phase has to be complete before moving onto the
next phase.
Inflexible partitioning of the project into distinct stages makes it difficult to respond
to changing customer requirements.
Therefore, this model is only appropriate when the requirements are well-understood and
changes will be fairly limited during the design process.
The waterfall model is mostly used for large systems engineering projects where a
system is developed at several sites.
In those circumstances, the plan-driven nature of the waterfall model helps
coordinate the work.
The cost of accommodating changing customer requirements is reduced.
The amount of analysis and documentation that has to be redone is much
less than is required with the waterfall model.
It is easier to get customer feedback on the development work that has been done.
Customers can comment on demonstrations of the software and see how
much has been implemented.
More rapid delivery and deployment of useful software to the customer is possible.
Customers are able to use and gain value from the software earlier than is
possible with a waterfall process.
The process is not visible.
Managers need regular deliverables to measure progress. If systems are
developed quickly, it is not cost-effective to produce documents that reflect
every version of the system.
System structure tends to degrade as new increments are added.
Unless time and money is spent on refactoring to improve the software,
regular change tends to corrupt its structure. Incorporating further software
changes becomes increasingly difficult and costly.
Reuse-oriented software engineering
Based on systematic reuse where systems are integrated from existing components or COTS
(Commercial-off-the-shelf) systems.
Process stages
Component analysis;
Requirements modification;
Reuse is now the standard approach for building many types of business system
System testing
Acceptance testing
Testing with customer data to check that the system meets the customer’s needs.
System evolution
For example, a prototype system may be developed to show some key features of
the system to customers.
Change tolerance, where the process is designed so that changes can be accommodated at
relatively low cost.
User requirements are prioritised and the highest priority requirements are included in early
increments.
Once the development of an increment is started, the requirements are frozen though
requirements for later increments can continue to evolve.
Incremental development
Develop the system in increments and evaluate each increment before proceeding to
the development of the next increment;
Incremental delivery
No fixed phases such as specification or design - loops in the spiral are chosen depending on
what is required.
1. **Room Types**: It does not specify if users can search for specific types of
rooms (e.g., single, double, suite).
2. **Payment Process**: It omits details about the payment process, such as
payment methods, transaction security, and confirmation.
3. **Modification/Cancellation**: It does not mention whether users can
modify or cancel their reservations after confirmation.
4. **Guest Details**: It lacks details on what guest information is required for
the reservation (e.g., names, contact details).
5. **Error Handling**: It does not specify how the system handles errors or
unavailability of rooms.
6. **User Accounts**: It does not mention if users need to create an account
or can book as guests.
7. **Special Requests**: It omits whether users can make special requests
(e.g., extra beds, late check-out).
**Functional Requirements**:
1. **Patient Registration**: The system should allow for the registration of new
patients, capturing personal and medical information.
2. **Appointment Scheduling**: The system should enable scheduling,
rescheduling, and cancellation of appointments.
3. **Medical Records**: The system should maintain detailed medical records
for each patient, including history, diagnoses, treatments, and medications.
4. **Access Control**: The system should provide role-based access control,
allowing different levels of access for doctors, nurses, and administrative staff.
5. **Billing and Payments**: The system should manage billing, invoicing, and
payment processing for medical services.
**Non-Functional Requirements**:
1. **Security**: The system must ensure data privacy and security, complying
with relevant regulations like HIPAA.
2. **Performance**: The system should have fast response times, handling
large volumes of data and multiple simultaneous users efficiently.
3. **Reliability**: The system should be reliable, with minimal downtime and
robust backup and recovery mechanisms.
4. **Usability**: The system should be user-friendly, with an intuitive interface
that can be easily used by medical staff with varying levels of technical
expertise.
5. **Scalability**: The system should be scalable, able to accommodate
growing numbers of patients and expanding hospital services.
6. **Interoperability**: The system should be able to integrate with other
hospital systems and external healthcare providers for seamless data exchange.
### 11. Key Sections in an SRS (IEEE Format) for a CRM System
1. **Title Page**
2. **Table of Contents**
3. **Introduction**
- Purpose
- Scope
- Definitions, Acronyms, and Abbreviations
- References
- Overview
4. **Overall Description**
- Product Perspective
- Product Functions
- User Classes and Characteristics
- Operating Environment
- Design and Implementation Constraints
- Assumptions and Dependencies
5. **Specific Requirements**
- External Interface Requirements
- Functional Requirements
- Performance Requirements
- Logical Database Requirements
- Design Constraints
- Software System Attributes
6. **Appendices**
**Title Page**
**Table of Contents**
**Introduction**
- Purpose: Outline the objectives.
- Scope: Define the boundaries.
- Definitions, Acronyms, Abbreviations: Clarify terminology.
- References: Cite sources.
- Overview: Summarize content.
**Overall Description**
- Product Perspective: Context and interactions.
- Product Functions: Booking, payment, cancellations.
- User Classes and Characteristics: Regular users, admins.
- Operating Environment: Web-based, mobile support.
- Design and Implementation Constraints: Technology stack.
- Assumptions and Dependencies: Internet connectivity.
**Specific Requirements**
- **Functional Requirements**:
- User Registration and Authentication.
- Movie Listings and Search.
- Seat Selection and Booking.
- Payment Gateway Integration.
- Booking Confirmation and Notifications.
- **Non-Functional Requirements**:
- Performance: Load time < 3 seconds.
- Security: Data encryption, secure payment.
- Usability: Intuitive interface.
- Reliability: 99.9% uptime.
**Appendices**
- Glossary, diagrams, additional references.
1. **Performance**:
- **Example**: An e-commerce website must handle 10,000 simultaneous
users during peak shopping seasons with page load times under 2 seconds.
2. **Security**:
- **Example**: A banking application must use multi-factor authentication
and encrypt all sensitive user data to protect against unauthorized access and
data breaches.
3. **Reliability**:
- **Example**: A cloud storage service must ensure 99.99% uptime and
provide data redundancy to prevent data loss in case of hardware failures.
Unit 2:
Rapid development and delivery is now often the most important requirement for software
systems
User interfaces are often developed using an IDE and graphical toolset.
Agile methods
The aim of agile methods is to reduce overheads in the software process
(e.g. by limiting documentation) and to be able to respond quickly to
changing requirements without excessive rework.
The Sprint cycle
Sprints are fixed length, normally 2–4 weeks. They correspond to the development of
a release of the system in XP.
The starting point for planning is the product backlog, which is the list of work to be
done on the project.
The selection phase involves all of the project team who work with the customer to
select the features and functionality to be developed during the sprint.
### 1. Key Factors Influencing the Choice of a Software Development Model
1. **Passenger**
2. **Driver**
3. **Administrator**
1. **Passenger**:
- Request Ride
- View Ride Details
- Track Ride
- Make Payment
- Rate Driver
2. **Driver**:
- Accept Ride
- View Ride Details
- Start/Complete Ride
- Update Availability
- Rate Passenger
3. **Administrator**:
- Manage Users (Passengers and Drivers)
- Monitor Rides
- Handle Complaints
- Generate Reports
```plaintext
[Use Case Diagram]
+-------------+ +-------------+
| Passenger | | Driver |
+------+------+ +------+------+
| |
+-----------+-----------+ +-----------+-----------+
| | | |
+------+ +-----------+ +------+ +-----------+ +------+
|Request|<->| Accept | | View |<->| Start/End | | Rate |
| Ride | | Ride | | Ride | | Ride | | Driver |
+------+ +-----------+ +------+ +-----------+ +------+
^ ^ ^ ^
| | | |
+----+-------------+ +-------------+
| |
+------+-----------+ +-------------+
| Track Ride | | Make Payment |
+------------------+ +-------------+
+----------------+
| Rate Ride |
+----------------+
```
This diagram visually represents the interactions between the main actors
(Passenger, Driver, Administrator) and the core functionalities they perform
within the ride-sharing system.
**Key Characteristics**:
- **Rapid Iterations**: Develop multiple prototypes quickly to test different
ideas and gather feedback.
- **Quick Feedback**: Engage users and stakeholders to provide immediate
feedback on prototypes.
- **Limited Lifespan**: Prototypes are disposable; once requirements are
finalized, they are discarded in favor of a more robust solution.
**Benefits**:
- **Risk Reduction**: Identifies potential issues early in the development
process.
- **Flexibility**: Adapts easily to changing requirements and user needs.
- **Cost-Effectiveness**: Saves resources by avoiding extensive rework later
in the project.
**Challenges**:
- **Resource Allocation**: Requires sufficient resources for rapid
development cycles.
- **User Engagement**: Continuous user involvement is necessary to
maximize benefits.
### 10. Structural Modelling in Software Design Process
1. **Class Diagram**:
- **Purpose**: Represents the static structure of a system by showing its
classes, attributes, operations, and relationships.
- **Example**:
```plaintext
+---------------------+
| Passenger |
+---------------------+
| - name |
| - email |
+---------------------+
| + requestRide() |
| + trackRide() |
+---------------------+
|
|
+---------------------+
| Ride |
+---------------------+
| - origin |
| - destination |
| - fare |
+---------------------+
| + startRide() |
| + endRide() |
+---------------------+
```
2. **Component Diagram**:
- **Purpose**: Describes how a software system is split up into
components and shows the dependencies among these components.
- **Example**:
```plaintext
+---------------------+
| User Interface |
+---------------------+
|
v
+---------------------+
| Business Logic |
+---------------------+
|
v
+---------------------+
| Data Access |
+---------------------+
|
v
+---------------------+
| Database |
+---------------------+
```
2. **Sequence Diagram**:
- **Purpose**: Shows how objects interact in a particular sequence to
accomplish a specific goal.
- **Example**:
```plaintext
Passenger System Driver
| | |
| requestRide | |
|-------------->| |
| | findDriver |
| |--------------->|
| | |
| rideDetails |<---------------|
|<--------------| |
| | |
| makePayment | |
|-------------->| |
| | |
```
### 13. Process Model for Rapid Prototyping and User Feedback
1. **Requirements Analysis**:
- Capture detailed and well-defined requirements.
- Verification: Requirements Review.
2. **System Design**:
- Create system architecture.
- Verification: System Design Review.
3. **High-Level Design**:
- Define modules and their interfaces.
- Verification: HLD Review.
4. **Low-Level Design**:
- Detailed design of individual modules.
- Verification: LLD Review.
5. **Implementation**:
- Code the modules.
- Verification: Code Review.
6. **Unit Testing**:
- Test individual modules.
- Validation: Unit Test Plan.
7. **Integration Testing**:
- Combine modules and test as a group.
- Validation: Integration Test Plan.
8. **System Testing**:
- Test the entire system.
- Validation: System Test Plan.
1. **Identify Actors**:
- **Librarian**: Manages books, members, and transactions.
- **Member**: Borrows and returns books.
- **Administrator**: Manages the system settings and user roles.
+------------+
| Librarian |
+-----+------+
|
+------+-------+
| Manage Books |
+------+-------+
|
+-----v------+
| Manage Members|
+-------------+
```
### 17. Use Case Modelling for Airline Ticket Reservation System
1. **Identify Actors**:
- **Passenger**: Searches for flights, books tickets, and checks in.
- **Agent**: Assists passengers in booking and managing reservations.
- **System Administrator**: Manages system settings and ensures
smooth operation.
- **Payment Gateway**: Processes payments for bookings.
+-----------+
| Agent |
+-----+-----+
|
+------+------+
| Manage Bookings|
+-------------+
```
**Example**:
1. **Initial Requirements Gathering**:
- Collect basic requirements for an e-commerce website.
2. **Develop Prototype**:
- Create a simple version with key features like product listings, shopping
cart, and checkout.
3. **User Feedback**:
- Gather feedback from potential users about usability and functionality.
4. **Refine Requirements**:
- Update requirements based on feedback.
5. **Develop Full System**:
- Proceed with full-scale development incorporating refined requirements.
**Waterfall Model**:
**Advantages**:
- **Structured Approach**: Clear, sequential phases.
- **Easy Management**: Each phase has specific deliverables.
- **Documentation**: Comprehensive documentation at each stage.
**Disadvantages**:
- **Inflexible**: Hard to accommodate changes once the process has
started.
- **Late Testing**: Testing phase comes late, potentially missing earlier
issues.
- **Requirement Inflexibility**: Assumes well-defined requirements from
the start.
**Incremental Model**:
**Advantages**:
- **Flexibility**: Accommodates changes and evolving requirements.
- **Early Delivery**: Delivers parts of the system early.
- **Reduced Risk**: Smaller, manageable increments.
**Disadvantages**:
- **Integration Complexity**: Combining increments can be complex.
- **Resource Intensive**: Requires continuous testing and integration.
- **Incomplete System**: Initial increments may not provide full
functionality.
**Requirements Analysis**:
- **Clarity**: Clearly depict the flow of information within the system.
- **Communication**: Facilitate communication between stakeholders by
visualizing system processes and data flows.
**System Design**:
- **Structure**: Help in structuring the system's design by identifying key
processes and data stores.
- **Modularity**: Promote modular design by breaking down the system
into smaller, manageable components.
**Documentation**:
- **Comprehensive Documentation**: Provide a visual representation of
the system for documentation purposes.
- **Reference**: Serve as a reference for developers and maintainers,
ensuring consistency and understanding of the system.
- **Decision Coverage**:
- **Decision Points**:
- `score >= 90` (False for `score = 85`)
- `score >= 75` (True for `score = 85`, False for `score = 40`)
- `score >= 50` (True for `score = 85`, True for `score = 40`)
- **Test Cases**: Both `score = 85` and `score = 40` cover all decision
outcomes.
- **Path Coverage**:
- **Paths Covered**:
- Path 1: `score >= 90` is False, `score >= 75` is True, `score >= 50` is True.
- Path 2: `score >= 90` is False, `score >= 75` is False, `score >= 50` is True.
- Paths covered by provided test cases are sufficient for 100% path coverage.
**Purpose**:
- **Objective**: Ensures that all possible execution paths in a program are
tested to verify correct behavior and uncover potential issues.
- **Focus**: Identifies logical paths and verifies that each path produces
expected results.
**Strategies**:
1. **Identify Paths**: Determine all possible paths through the code based on
conditional statements and loops.
2. **Create Test Cases**: Develop test cases for each path to ensure complete
coverage.
3. **Automate Testing**: Use automated tools to run extensive path tests and
manage complex paths efficiently.
4. **Integrate with Workflow**: Include path testing in the testing phase of the
development lifecycle, ensuring it complements other testing methods like unit
and integration testing.
**Boundary Analysis**:
- **Lower Boundary**: 18 (inclusive), 17 (exclusive).
- **Upper Boundary**: 60 (inclusive), 61 (exclusive).
- **Test Cases**: 18, 17, 60, 61.
**Steps**:
1. **Document Configuration Items**: Ensure all items are documented with
detailed descriptions.
2. **Implement Configuration Management Tools**: Use tools like Git for
version control and configuration management.
3. **Establish Change Control Procedures**: Define processes for proposing,
reviewing, and approving changes.
4. **Maintain Configuration Baselines**: Regularly update and maintain
baselines to track changes.
5. **Conduct Regular Audits**: Perform audits to ensure documentation and
configurations are up-to-date and accurate.
6. **Training and Communication**: Educate team members on configuration
management practices and importance.
**Type of Maintenance**:
- **Adaptive Maintenance**: This type involves making changes to the
software to adapt it to new environments, such as new versions or
configurations. Since users are facing issues with new features, it's likely that
the software needs adjustments to ensure compatibility and correct
functionality.
2. **Analyze Problems**:
- **Code Review**: Examine recent changes to identify potential causes.
- **Check Compatibility**: Ensure that new features are compatible with
existing systems and configurations.
3. **Develop Fixes**:
- **Implement Corrections**: Modify the code or configuration to resolve
identified issues.
- **Test Fixes**: Conduct thorough testing of the fixes to ensure they resolve
the problems without introducing new ones.
4. **Deploy Updates**:
- **Release Patches**: Deploy the corrected code or configuration to users.
- **Monitor Performance**: Track the system post-deployment to ensure
that the issues are resolved and no new problems arise.
2. **Reverse Engineering**:
- **Extract Design and Code**: Deconstruct the existing system to
understand its architecture and functionality.
- **Document Findings**: Create detailed documentation of the current
system’s design and code.
3. **Redesign**:
- **Develop New Architecture**: Design a new system architecture based on
the analysis and objectives.
- **Create a Prototype**: Build a prototype to validate the new design
concepts.
4. **Reconstruction**:
- **Implement Changes**: Rewrite or modify the code according to the new
design.
- **Integrate New Features**: Add or improve functionalities as defined in
the objectives.
5. **Testing**:
- **Conduct Thorough Testing**: Test the reengineered system to ensure it
meets the new requirements and performs well.
- **Validate with Users**: Gather feedback from end-users to ensure the
system meets their needs.
6. **Deployment**:
- **Deploy the Reengineered System**: Roll out the updated system to users.
- **Monitor and Support**: Monitor the system for any issues and provide
support as needed.
**Software Reengineering**:
- **Objective**: Involves redesigning and reconstructing a software system to
improve its performance, functionality, or maintainability. It is a more
comprehensive process that often includes significant changes or updates to
the system's architecture.
- **Scope**: Focuses on substantial modifications, such as refactoring code,
redesigning architecture, or adding new features.
- **Outcome**: Results in a redefined system that may differ significantly from
the original in structure and functionality.
**Software Maintenance**:
- **Objective**: Involves making incremental changes to a software system to
correct defects, adapt to new environments, or improve performance without
altering its core architecture. It is typically a continuous process that maintains
and improves the existing system.
- **Scope**: Includes activities such as bug fixing, minor updates, and
adaptation to new environments or requirements.
- **Outcome**: Maintains or slightly enhances the existing system without
fundamentally altering its design or structure.
**Key Differences**:
- **Reengineering** involves significant redesign and restructuring, while
**maintenance** focuses on incremental improvements and corrections.
- **Reengineering** is often triggered by major shifts in requirements or
technology, whereas **maintenance** addresses ongoing operational issues
and minor updates.
Unit 4:
Risk = some adverse circumstance that may happen and affect negatively
the project, the product, and/or the business
▶ Categories of risk:
▶ Project risks
▶ Product risks
▶ Business risks
Risk management means anticipating risks and preparing plans to reduce their
effect
Risk analysis:
Estimate risk probability:
▶ Very low (< 10%)
▶ Low (10-25%)
▶ Moderate (25-50%)
▶ High (50-75%)
▶ Very high (> 75%)
Establish risk seriousness:
▶ Insignificant
▶ Tolerable
▶ Serious
▶ Catastrophic
Must decide whether to have ALL projects in the repository or, say, only ICT
projects
**Impact Analysis**:
- **Team Dynamics**: Ineffective people management can disrupt team
cohesion, leading to miscommunication and lack of collaboration. For instance,
in the case of the FBI's Virtual Case File project, poor communication and
unclear roles led to significant delays and a failed project.
- **Conflict Management**: Unresolved conflicts among team members can
escalate and derail project progress. For example, in the healthcare.gov launch,
internal conflicts and blame-shifting among contractors contributed to the
project's troubled rollout.
- **Communication**: Poor communication can result in misalignment
between team members and stakeholders, impacting project goals. The UK’s
National Health Service (NHS) IT project faced issues due to poor
communication and unclear expectations.
**Actionable Strategies**:
1. **Enhance Communication**: Implement regular team meetings, updates,
and feedback sessions to ensure transparency and alignment.
2. **Conflict Resolution**: Develop a clear conflict resolution process and
provide training on effective conflict management techniques.
3. **Foster Team Building**: Organize team-building activities to strengthen
relationships and improve collaboration.
4. **Define Roles Clearly**: Clearly define and communicate roles and
responsibilities to prevent overlaps and misunderstandings.
5. **Monitor Team Dynamics**: Regularly assess team dynamics and address
issues proactively through coaching and mentoring.
**Prioritization**:
- **Impact and Likelihood Matrix**: Categorize risks based on their potential
impact and likelihood. Use a risk matrix to classify risks into categories such as
high, medium, or low risk.
- **Example**: A risk with high impact and high likelihood (e.g., critical
technology failure) should be prioritized over a risk with low impact and low
likelihood (e.g., minor scope creep).
**Risk Strategies**:
1. **Risk Avoidance**: Alter plans to avoid the risk. Example: Use proven
technologies to avoid the risk of technology failure.
2. **Risk Mitigation**: Implement measures to reduce the risk’s impact or
likelihood. Example: Regularly update and test backup systems.
3. **Risk Transfer**: Share the risk with third parties, such as through
insurance or outsourcing. Example: Outsource non-core functions to
specialized vendors.
4. **Risk Acceptance**: Acknowledge the risk and prepare contingency plans.
Example: Prepare for potential delays with buffer time in the project schedule.
**Activities**:
1. **Project Planning**:
- **Example**: Develop a detailed project plan with timelines, milestones,
and resource allocation.
- **Contribution**: Provides a roadmap for project execution and helps in
managing scope, schedule, and resources effectively.
2. **Execution**:
- **Example**: Oversee daily project activities, ensuring tasks are completed
as per the plan.
- **Contribution**: Ensures that project work is performed according to the
plan and adjusts as necessary.
3. **Risk Management**:
- **Example**: Identify potential risks and implement mitigation strategies.
- **Contribution**: Minimizes the impact of risks on project objectives.
4. **Team Coordination**:
- **Example**: Facilitate communication and collaboration among team
members.
- **Contribution**: Ensures that team members work together effectively,
enhancing productivity and morale.
**Definition**:
- **Software Project Management** involves planning, organizing, and
overseeing software projects to ensure successful completion within scope,
time, and budget constraints.
**Significance**:
1. **Ensures Alignment**: Ensures that the project aligns with business goals
and stakeholder expectations.
2. **Manages Risks**: Identifies and mitigates risks to prevent project failures.
3. **Optimizes Resources**: Allocates resources efficiently to maximize
productivity and minimize waste.
4. **Controls Scope and Changes**: Manages scope changes to prevent scope
creep and ensure project objectives are met.
5. **Enhances Communication**: Facilitates effective communication among
stakeholders, team members, and other involved parties.
**Principles**:
1. **Clear Objectives**: Define clear and achievable project goals and
objectives.
2. **Structured Planning**: Develop detailed project plans, including scope,
schedule, and resource plans.
3. **Effective Communication**: Maintain open and regular communication
with stakeholders and team members.
4. **Risk Management**: Identify, assess, and manage risks throughout the
project lifecycle.
5. **Monitoring and Control**: Track project progress and make adjustments
as needed to stay on track.
**Practices**:
1. **Use of Project Management Tools**: Employ tools like Gantt charts,
Kanban boards, and project management software for planning and tracking.
2. **Regular Status Meetings**: Conduct frequent status meetings to review
progress and address issues.
3. **Documentation**: Maintain comprehensive documentation to track
changes, decisions, and progress.
**Methods**:
1. **Expert Judgment**: Seek estimates from experienced team members or
industry experts based on their knowledge of similar projects.
2. **Analogous Estimating**: Use data from previous, similar projects to
estimate effort.
3. **Parametric Estimating**: Use statistical relationships between historical
data and project variables (e.g., lines of code) to estimate effort.
4. **Bottom-Up Estimating**: Break the project into smaller tasks, estimate
the effort for each task, and aggregate these estimates.
5. **Function Point Analysis**: Measure the functionality delivered to the user
and estimate effort based on function points.
**Why**:
- **Accuracy**: Combining different methods provides a more accurate and
reliable estimate.
- **Validation**: Cross-checking estimates helps validate assumptions and
refine planning.
**Strategies**:
1. **Communication Tools**:
- **Slack/Teams**: Use for real-time messaging and creating channels for
different teams or projects.
- **Zoom/Google Meet**: Facilitate video conferencing for meetings across
time zones.
2. **Collaboration Tools**:
- **Asana/Trello/JIRA**: Track tasks, assign responsibilities, and manage
workflows. Utilize boards and task lists to keep everyone updated.
- **Google Drive/Dropbox**: Share and collaborate on documents and files.
5. **Regular Check-ins**:
- **Daily Stand-ups**: Hold brief daily meetings to discuss progress and
address any issues.
- **Weekly Syncs**: Schedule more in-depth weekly meetings to review
progress and plan the upcoming week.
**Steps**:
1. **Technical Feasibility**:
- **Assess Technology**: Evaluate whether the current technology can meet
project requirements.
- **Example**: Verify if the existing infrastructure supports the new
software's technical demands.
2. **Economic Feasibility**:
- **Cost-Benefit Analysis**: Compare the projected costs with the potential
benefits to determine if the project is financially viable.
- **Example**: Calculate development costs, maintenance costs, and
potential revenue or cost savings.
3. **Operational Feasibility**:
- **Resource Availability**: Ensure that the organization has the necessary
resources, including personnel and expertise.
- **Example**: Assess if the team has the skills required for the project or if
additional training is needed.
4. **Legal Feasibility**:
- **Compliance**: Check if the project complies with legal and regulatory
requirements.
- **Example**: Ensure that the software adheres to data protection
regulations.
5. **Schedule Feasibility**:
- **Timeline**: Determine if the project can be completed within the desired
timeframe.
- **Example**: Create a project schedule to assess if deadlines are realistic.
### 10. Strategies for Developing and Adhering to a Realistic Project Schedule
**Strategies**:
1. **Define Clear Milestones**:
- **Breakdown Tasks**: Divide the project into smaller, manageable tasks
with clear milestones.
- **Example**: Set milestones for key deliverables and review points.
2. **Estimate Realistically**:
- **Use Historical Data**: Base time estimates on data from similar past
projects.
- **Example**: Apply past project durations to estimate task completion
times.
3. **Buffer Time**:
- **Include Contingency**: Add buffer time to account for unforeseen delays.
- **Example**: Allocate 10-15% additional time to critical tasks.
4. **Regular Monitoring**:
- **Track Progress**: Use project management tools to monitor progress and
adjust the schedule as needed.
- **Example**: Update the Gantt chart regularly to reflect actual progress.
5. **Adjust Plans**:
- **Adapt to Changes**: Be flexible and revise the schedule if necessary
based on progress and feedback.
- **Example**: Reallocate resources or adjust deadlines if project scope
changes.
**Risk Identification**:
1. **Project Risks**:
- **Scope Creep**: Changes or additions to project scope without
adjustments to time, cost, and resources.
- **Example**: A client requests new features mid-project that impact the
timeline.
2. **Product Risks**:
- **Technical Failures**: Issues with software performance or integration.
- **Example**: Incompatibility with existing systems or critical bugs.
3. **Business Risks**:
- **Regulatory Compliance**: Failure to meet legal and regulatory
requirements.
- **Example**: Non-compliance with financial data protection regulations.
**Steps**:
1. **Risk Workshops**: Conduct workshops with stakeholders to identify
potential risks.
2. **Risk Assessments**: Use tools like SWOT analysis or risk checklists to
evaluate risks.
**Prioritization**:
1. **Risk Matrix**: Use a matrix to evaluate risks based on their impact and
likelihood.
2. **Example**: High impact and high likelihood risks should be addressed
first.
**Strategies**:
1. **Mitigation**: Develop strategies to reduce the impact or likelihood of
high-priority risks.
- **Example**: Implement robust testing procedures to mitigate technical
failures.
3. **Acceptance**: Accept the risk when the cost of mitigation is higher than
the impact.
- **Example**: Prepare contingency plans for potential delays.
**Activities**:
1. **Project Planning**:
- **Example**: Develop a detailed project plan with scope, schedule, and
resources.
- **Contribution**: Provides a roadmap and helps manage expectations and
deliverables.
2. **Execution**:
- **Example**: Oversee daily activities and ensure tasks are completed on
time.
- **Contribution**: Ensures that the project stays on track and meets
deadlines.
3. **Risk Management**:
- **Example**: Identify, assess, and address risks proactively.
- **Contribution**: Reduces the impact of potential issues on project
success.
4. **Team Coordination**:
- **Example**: Facilitate communication and collaboration among team
members.
- **Contribution**: Enhances team productivity and addresses issues
promptly.
**Impact**:
- **Case Studies**:
- **Healthcare.gov**: Poor management led to delays and a failed launch due
to lack of coordination and conflict among contractors.
- **FBI’s Virtual Case File**: Miscommunication and unclear roles resulted in
project failure and wasted resources.
**Strategies**:
1. **Improve Communication**: Implement regular updates and feedback
sessions.
2. **Conflict Resolution**: Establish clear conflict resolution processes.
3. **Team Building**: Organize team-building activities to enhance
collaboration.
4. **Define Roles**: Clearly define and communicate team roles and
responsibilities.
**Steps**:
1. **List Tasks**: Identify all project tasks and milestones.
2. **Set Durations**: Estimate the time required for each task.
3. **Define Dependencies**: Determine which tasks depend on others.
4. **Create Chart**: Use tools like Microsoft Project or Excel to create a visual
representation.
5. **Update Regularly**: Adjust the chart as the project progresses.
**Key Information**:
- **Task Names**: List of all tasks and milestones.
- **Start and End Dates**: Timeline for each task.
- **Dependencies**: Relationships between tasks.
- **Progress**: Percentage completion of each task.
Unit 5:
ISO 9126 Software product quality
Attributes of software product quality
Internal qualities i.e. apparent to the developers of the deliverables and the
intermediate products
Quality Models
It is a model of the software:
Constructed with the objective to describe, assess and/or predict quality.
Popular models:
Garvin’s model
Boehm’s model
ISO 9126
Dromey’s Model
4. Identify the relevant internal measurements and the intermediate products in which they
would appear
For example, at software design stage the estimated execution time for a
transaction could be calculated
### 1. ISO 9001 Framework Overview
**ISO 9001** is an international standard for Quality Management Systems (QMS) that
outlines a framework for ensuring consistent quality in products and services. It is designed
to help organizations improve their overall performance and meet customer expectations.
The core processes include:
1. **Leadership**:
- **Management Commitment**: Top management must demonstrate commitment to
the QMS, establish a quality policy, and set quality objectives.
- **Customer Focus**: Ensure that customer needs and expectations are met.
2. **Planning**:
- **Risk Management**: Identify and address risks and opportunities.
- **Quality Objectives**: Define clear and measurable quality objectives aligned with the
quality policy.
3. **Support**:
- **Resource Management**: Ensure adequate resources (human, infrastructure, and
environment) are provided.
- **Competence**: Ensure personnel are competent based on education, training, and
experience.
4. **Operation**:
- **Process Management**: Plan and control operational processes to ensure products
and services meet requirements.
- **Product Realization**: Manage product development and delivery processes.
5. **Performance Evaluation**:
- **Monitoring and Measurement**: Regularly monitor, measure, and analyze
performance to ensure compliance and identify areas for improvement.
- **Internal Audits**: Conduct audits to assess the effectiveness of the QMS.
6. **Improvement**:
- **Nonconformity and Corrective Action**: Address and correct nonconformities and
implement corrective actions.
- **Continual Improvement**: Continuously improve the QMS based on performance data
and feedback.
3. **Compatibility Issues**:
- **Description**: Interface components are not compatible with different versions or
platforms.
- **Importance**: May prevent the software from functioning correctly across different
environments.
4. **Latency Problems**:
- **Description**: Delays in data transmission or processing between interfaces.
- **Importance**: Affects system performance and user experience.
5. **Security Vulnerabilities**:
- **Description**: Weaknesses in data transmission or access control mechanisms.
- **Importance**: Can lead to unauthorized access or data breaches.
6. **Inadequate Documentation**:
- **Description**: Poor or missing documentation for interface functionality.
- **Importance**: Hinders maintenance and integration efforts.
7. **Interface Misalignment**:
- **Description**: Mismatched expectations between interfacing components.
- **Importance**: Can cause functionality issues or data inconsistencies.
**Diagram**:
```
+---------------------+
| Planning Review |
+---------------------+
|
v
+---------------------+
| Requirement Review |
+---------------------+
|
v
+---------------------+
| Design Review |
+---------------------+
|
v
+---------------------+
| Code Review |
+---------------------+
|
v
+---------------------+
| Testing Review |
+---------------------+
|
v
+---------------------+
| Final Review |
+---------------------+
```
**Explanation**:
- **Planning Review**: Define the scope and objectives of the review.
- **Requirement Review**: Ensure requirements are complete and clear.
- **Design Review**: Evaluate design for feasibility and compliance with requirements.
- **Code Review**: Assess code quality and adherence to standards.
- **Testing Review**: Verify testing coverage and results.
- **Final Review**: Conduct a comprehensive review before release.
**ISO-9126** provides a model for evaluating software quality based on six key
characteristics. To incorporate it:
**Implementation**:
- **Define Metrics**: Establish metrics for each characteristic.
- **Integrate into Development**: Include quality assessments in design, development, and
testing phases.
- **Continuous Review**: Regularly evaluate and adjust based on feedback.
2. **Feedback Mechanisms**:
- Implement channels for team and customer feedback.
- Use feedback to identify areas for improvement.
4. **Process Refinement**:
- Analyze current processes and identify inefficiencies.
- Implement changes and monitor their impact.
5. **Benchmarking**:
- Compare performance against industry standards or competitors.
- Use insights to drive enhancements.
1. **Functionality**:
- **Definition**: The degree to which the software meets the specified requirements.
- **Application**: Verify all features work as intended and meet user needs.
2. **Reliability**:
- **Definition**: The ability of the software to maintain its performance under specified
conditions.
- **Application**: Test for stability and fault tolerance.
3. **Usability**:
- **Definition**: The ease with which users can learn and operate the software.
- **Application**: Evaluate user interfaces and conduct usability tests.
4. **Efficiency**:
- **Definition**: The performance of the software in terms of resource usage and
response time.
- **Application**: Measure performance and optimize resource utilization.
5. **Maintainability**:
- **Definition**: The ease with which the software can be modified to correct defects or
add features.
- **Application**: Assess code modularity and documentation quality.
6. **Portability**:
- **Definition**: The ability of the software to operate in different environments.
- **Application**: Test across various platforms and configurations.
1. **Data Mismatch**:
- **Description**: Discrepancies in data formats or types between interfacing systems.
- **Importance**: Can lead to data corruption or application errors, affecting functionality.
2. **Communication Failures**:
- **Description**: Issues in message exchange, such as lost or delayed messages.
- **Importance**: Disrupts the interaction between components, leading to system
instability.
3. **Protocol Violations**:
- **Description**: Deviations from expected communication protocols or standards.
- **Importance**: Can cause incompatibility and data exchange issues.
5. **Performance Bottlenecks**:
- **Description**: Slow response times or resource contention in interface operations.
- **Importance**: Degrades system performance and user experience.
7. **Compatibility Issues**:
- **Description**: Incompatibility with different versions of interfacing components.
- **Importance**: Prevents proper integration and operation.
8. **Documentation Gaps**:
- **Description**: Missing or unclear documentation for interface specifications.
- **Importance**: Hinders development, maintenance, and troubleshooting.
9. **Security Vulnerabilities**:
- **Description**: Weaknesses in interface security measures.
- **Importance**: Exposes the system to potential attacks or data breaches.
5. **Implement Redundancy**:
- **Measures**: Use redundant systems or components to ensure continued operation.
- **Testing**: Validate redundancy mechanisms through failover tests.
```
+--------------------------+
| Planning & Preparation |
+--------------------------+
|
v
+--------------------------+
| Requirements Review |
+--------------------------+
|
v
+--------------------------+
| Design Review |
+--------------------------+
|
v
+--------------------------+
| Code Review |
+--------------------------+
|
v
+--------------------------+
| Testing Review |
+--------------------------+
|
v
+--------------------------+
| Final Review |
+--------------------------+
```
**Explanation**:
- **Planning & Preparation**: Define the scope and objectives of the review.
- **Requirements Review**: Ensure requirements are complete and understood.
- **Design Review**: Evaluate the design for compliance with requirements.
- **Code Review**: Assess code quality and adherence to standards.
- **Testing Review**: Verify that testing is thorough and results are as expected.
- **Final Review**: Conduct a comprehensive review before release.
2. **Implement QA Processes**:
- **Steps**: Develop and follow QA processes, including reviews, testing, and inspections.
- **Action**: Ensure rigorous testing and validation.
5. **Continuous Improvement**:
- **Steps**: Implement feedback and improve processes.
- **Action**: Demonstrate commitment to quality and client satisfaction.