Oose 1
Oose 1
A software process refers to a set of activities, methods, practices, and transformations applied
during the development of software systems. It provides a structured approach to building, testing,
and maintaining software to ensure quality and efficiency.
5. What is Inheritance?
Inheritance in software development refers to the mechanism where a new class (derived class)
inherits attributes and behaviors from an existing class (base class). It promotes code reusability and
establishes a parent-child relationship between classes.
Testing Debugging
Testers are responsible for testing activities Developers are responsible for debugging activities
Testing Debugging
Depth of Allows for in-depth exploration Generates ideas and consensus through
Information of individual perspectives group dynamics
Feedback Direct and personal, allowing for Indirect, as feedback might need to be
Mechanism immediate clarification solicited from the group or facilitator
Skill Requires strong interviewing and Demands facilitation skills to manage group
Requirement interpersonal skills dynamics and ensure participation
Or
Aspect Interviews Workshops
Interaction Format One-on-one chats with stakeholders Group sessions with many people
Cost Can be affordable per session Initial setup cost, but can save time
Stakeholder
Tailored to individuals Engages many people at once
Involvement
Project Scheduling Technique: Program Evaluation and Review Technique (PERT)
1. PERT
• Definition: PERT is a project management technique used to analyze and represent the tasks
involved in completing a project.
2. Steps in PERT
• Identifying Activities:
• Listing all tasks required to complete the project.
• Defining dependencies between tasks.
• Estimating Task Durations:
• Using three time estimates for each task: optimistic, pessimistic, and most likely.
• Calculating the expected duration using weighted averages.
• Constructing the Network Diagram:
• Drawing a network diagram representing the sequence of tasks and their
dependencies.
• Using nodes to represent tasks and arrows to represent dependencies.
• Calculating Expected Time and Variance:
• Determining the expected time for each task based on the weighted average.
• Calculating the variance to measure the uncertainty or risk associated with each task.
• Identifying Critical Path:
• Finding the longest path through the network diagram based on expected durations.
• Tasks on the critical path have zero slack or float.
• Determining Project Duration:
• Total duration of the critical path represents the expected project duration.
Benefits of PERT:
1. Visual Representation: Graphical depiction aids in understanding project flow.
2. Time Estimation: Provides estimates for project duration and completion time.
3. Identifies Critical Path: Highlights the longest sequence of dependent tasks.
4. Resource Allocation: Facilitates optimal allocation of resources based on task
dependencies.
5. Risk Management: Assists in identifying and mitigating potential risks throughout the
project lifecycle.
Limitations of PERT:
1. Complexity: Complex calculations and analysis can be time-consuming.
2. Assumption Dependency: Relies heavily on assumptions, which may impact accuracy.
3. Resource Constraints: Limited resources may affect the accuracy of estimates.
4. Limited Flexibility: Less adaptable to changes in project scope or schedule.
5. Overemphasis on Critical Path: May overlook non-critical activities, leading to skewed
priorities.
SCM
1. Identify What Needs Managing:
• What: List all software components like code, documents, libraries, and third-party
dependencies that need to be managed.
• Dependencies: Identify interdependencies between components to ensure comprehensive
management.
2. Keep Track of Changes:
• How: Use tools like Git to track changes to these components over time.
• Branching Strategy: Implement a structured branching strategy to manage parallel
development efforts effectively.
3. Set Baselines for Stability:
• When: Establish fixed points (baselines) after key milestones to mark stable versions.
• Tagging Releases: Tag each stable release to facilitate easy reference and rollback if
necessary.
4. Control Changes:
• Process: Put in place a system for requesting, reviewing, and approving changes
methodically.
• Change Impact Analysis: Perform a thorough analysis of proposed changes to assess their
potential impact on the overall system.
5. Track Configuration Status:
• Record Keeping: Keep records of all components, versions, and changes for easy reference.
• Configuration Item Identification: Assign unique identifiers to configuration items for
accurate tracking and management.
6. Regular Audits and Reviews:
• Purpose: Check if everything matches the set standards regularly.
• Compliance Checks: Conduct periodic audits to ensure compliance with regulatory
requirements and industry standards.
7. Plan and Coordinate Releases:
• Before Release: Make sure that the correct components are included in the software release.
• Release Planning Meetings: Hold regular meetings to plan and coordinate release
activities, including feature prioritization and scheduling.
8. Use Configuration Management Tools:
• Automation: Leverage tools to automate and simplify the management process.
• Integration with CI/CD: Integrate configuration management tools with Continuous
Integration/Continuous Deployment pipelines for seamless software delivery.
Focuses on program logic, paths, and code Focuses on inputs, outputs, and
Focus
coverage. functionality.