Overview of System Analysis and Design and introductory stuff -- Software Engineering


Index

  1. Overview of System Analysis and Design
  2. Business System Concept
  3. Software Development Life Cycle (SDLC)
  4. 1. Phases of SDLC
  5. Example of SDLC in action
  6. Waterfall Model
  7. Classic Waterfall Model
  8. Iterative Waterfall Model
  9. Spiral Model
  10. Prototype Model (Extra)
  11. Feasibility Analysis
  12. Technical Feasibility
  13. Cost-Benefit Analysis
  14. COCOMO Model

Overview of System Analysis and Design

System Analysis and Design (SAD) is the process of examining a business problem, understanding the requirements, and creating a plan to develop a software solution. This process ensures that the developed system meets the needs of users while being efficient, reliable, and maintainable.

1. What is System Analysis?


2. What is System Design?


3. The Relationship Between Analysis and Design


Key Takeaways


Business System Concept

A Business System is a structured way in which an organization operates to achieve its objectives. In the context of software engineering, understanding the business system concept is crucial because it lays out the processes, information flows, and relationships within an organization. This helps ensure that the software being developed aligns with the organization's goals and processes.

1. What is a Business System?


2. Components of a Business System


3. Types of Business Systems


4. Importance in Software Engineering


5. Example Scenario


Key Takeaways


Software Development Life Cycle (SDLC)

https://www.youtube.com/watch?v=kSU2MPeptpM&list=PLxCzCOWd7aiEed7SKZBnC6ypFDWYLRvB2&index=3

https://www.geeksforgeeks.org/software-development-life-cycle-sdlc/

Pasted image 20241108131004.png

The System Development Life Cycle (SDLC) is a systematic process used to develop software through a series of clearly defined phases. Each phase has specific goals, deliverables, and activities to ensure that the final product is high-quality, meets requirements, and is delivered on time and within budget.

1. Phases of SDLC

a. Requirement Analysis:

b. System Design:

c. Implementation (Coding):

d. Testing:

e. Deployment:

f. Maintenance:


2. Importance of the SDLC



Example of SDLC in action

Let's understand this using an example : Building a school website

  1. Planning:
    • What happens: Decide the purpose — we need a website to manage school activities, track student progress, and share important information with parents and teachers

Pasted image 20241108133636.png

  1. Defining:
    • What happens: List out what each user (students, teachers, parents) needs. For example,
      students need access to their assignments, teachers need to upload grades, and parents
      need to view their child’s progress.

    • This is fulfilled by utilizing SRS (Software Requirement Specification). This is a sort of
      document that specifies all the pre-requisites that need to be defined and created during the entire project cycle
      .

Pasted image 20241108134946.png


  1. Designing:

Pasted image 20241108135625.png


  1. Development:
    • What happens: Developers start building the website by coding each section. They make sure users can log in, access assignments, view grades, and check announcements.

Pasted image 20241108135821.png


  1. Testing:
    • What happens: Testers use the website to make sure everything works well. They check each feature, like logging in or viewing grades, works without errors.

Pasted image 20241108140044.png


  1. Deployment and Maintenance:
    • What happens: Launch the website online, making it accessible to students, teachers, and parents.
    • What happens: Fix any issues that come up after launch and add improvements, like notifications for parents or a messaging feature for teachers.

Pasted image 20241108141716.png


Waterfall Model

The Waterfall Model is a traditional, linear approach to software development within the
Software Development Life Cycle
(SDLC).

There are two types of waterfall models : Classic and Iterative


Classic Waterfall Model

Pasted image 20241108143105.png

The Classic Waterfall Model is the traditional approach to the Waterfall Model and follows a strictly linear and sequential process. Each phase must be completed before moving on to the next, and there is minimal overlap or iteration. This model is straightforward but rigid, and it's best suited for projects where requirements are well-defined and unlikely to change.

Phases of the Classic Waterfall Model

  1. Requirement Analysis/Feasibility Study:

    • In this phase, all requirements of the software are gathered and documented. Requirements are expected to be complete and fully defined before moving forward.
    • Output: Requirements Specification Document.
  2. System Design:

    • Based on the gathered requirements, a system design is created. This includes high-level design (HLD) for system architecture and low-level design (LLD) for detailed component-level specifications.
    • Output: Design documents, including architecture diagrams and detailed design specifications.
  3. Implementation (Coding):

    • The actual coding of the software takes place based on the system design. Developers work on each module or component and ensure that each part functions independently.
    • Output: Source code or executable program for each module.
  4. Testing:

    • After implementation, all components are tested to verify they function as expected. Testing includes unit testing, integration testing, system testing, and acceptance testing.
    • Output: Test reports and bug fixes if any issues are found.
  5. Deployment:

    • The fully tested system is deployed in the target environment for the end-users. User training and documentation may be provided if necessary.
    • Output: Deployed software and user manuals.
  6. Maintenance:

    • Once deployed, the software enters the maintenance phase. Any issues encountered are resolved, and necessary updates or improvements are made over time.
    • Output: Bug fixes, patches, and updates as needed.

Pros and Cons of the Classic Waterfall Model


Iterative Waterfall Model

The Iterative Waterfall Model (sometimes called the "Modified Waterfall Model") is an adaptation that allows for limited feedback loops, enabling the team to revisit previous phases if issues are discovered. This model introduces a slight flexibility compared to the classic approach, making it somewhat more adaptable to changes.

Pasted image 20241108182330.png

How the Iterative Waterfall Model Differs


Phases of the Iterative Waterfall Model

The phases are the same as in the Classic Waterfall Model:

  1. Requirement Analysis
  2. System Design
  3. Implementation
  4. Testing
  5. Deployment
  6. Maintenance

However, in the Iterative model:


Pros and Cons of the Iterative Waterfall Model


When to Use Each Model


Key Takeaways


Spiral Model

https://www.youtube.com/watch?v=y2CnstDLhXM&list=PLxCzCOWd7aiEed7SKZBnC6ypFDWYLRvB2&index=10

The Spiral Model is an evolutionary software development model that combines elements of both iterative and waterfall models, focusing heavily on risk assessment. It was introduced by Barry Boehm in 1986 and is particularly useful for large, complex, and high-risk projects where requirements are unclear or likely to evolve.

Pasted image 20241108183421.png

Key Features of the Spiral Model

  1. Risk Management: The Spiral Model emphasizes risk assessment and mitigation at each phase of development. Before moving on to the next phase, risks are identified, analyzed, and minimized. This risk-focused approach helps prevent costly issues later in the project.

  2. Iterative Cycles (Spirals): The development process is divided into cycles or "spirals," each consisting of several phases. Each spiral results in a progressively refined version of the software, allowing for frequent feedback and flexibility to adapt to changing requirements.

  3. Prototyping: In each cycle, a prototype or partial version of the software may be created. This helps with understanding requirements, identifying issues early, and ensuring alignment with user expectations.

  4. Flexibility and Customer Feedback: The model accommodates changes in requirements after each spiral. Feedback from stakeholders is collected and incorporated into the next iteration, making it suitable for projects where requirements are expected to evolve.


Structure of the Spiral Model

The Spiral Model consists of four main phases in each spiral. Each spiral represents a full iteration of these phases and results in either an improved prototype or a more complete version of the software.

  1. Planning Phase:

    • In this phase, the project objectives, alternatives, and constraints are defined. Requirements are gathered, and a rough outline of the software is created.
    • Key activities include determining system requirements, estimating costs and schedules, and identifying potential risks.
    • Output: Updated project plan and requirements for the current cycle.
  2. Risk Analysis Phase:

    • In this phase, risks associated with the project are identified, analyzed, and evaluated. This phase also includes creating strategies for risk mitigation.
    • Often, a prototype is developed as part of this phase to better understand potential risks or uncertain requirements. This prototype is tested, and its outcomes are used to refine the requirements.
    • Output: Risk analysis report, prototype, and strategies for minimizing identified risks.
  3. Engineering Phase:

    • This phase involves the actual development and testing of the software. The software is designed, coded, and tested according to the plan and risk analysis from earlier phases.
    • Each iteration produces a more refined version of the product, gradually moving toward the final version.
    • Output: Developed and tested software product or module for the current cycle.
  4. Evaluation Phase:

    • The developed software is reviewed, and feedback from stakeholders is gathered. This phase also includes a formal review of the project status and any necessary adjustments to the plan.
    • Based on this feedback, decisions are made about proceeding to the next spiral or refining the current cycle further.
    • Output: Stakeholder feedback, updated project requirements, and a decision on the next steps.

Each spiral completes one full cycle of these four phases, gradually moving toward a more complete product with each iteration. The model typically continues spiraling until the software is fully developed and meets all requirements.


Advantages of the Spiral Model


Disadvantages of the Spiral Model


When to Use the Spiral Model

The Spiral Model is most suitable for:


Prototype Model (Extra)

https://www.youtube.com/watch?v=nNzH2rlEH6A&list=PLxCzCOWd7aiEed7SKZBnC6ypFDWYLRvB2&index=7

Pasted image 20241109111702.png

Advantages :


Disadvantages :


Feasibility Analysis

Feasibility Analysis is the process of assessing the practicality and viability of a proposed project. Its purpose is to determine if the project is achievable within given constraints, such as time, budget, and resources, and whether it will ultimately meet business needs. It involves evaluating several types of feasibility, including technical, economic, and operational aspects.

Types of Feasibility Analysis

  1. Technical Feasibility:

    • This aspect assesses whether the organization has the technical resources and capabilities to carry out the project. It examines if the current technology, software, hardware, and technical skills are sufficient to develop the system.
    • Key questions include:
      • Do we have the necessary technology to implement the project?
      • Are the required technical skills available in-house, or will we need to hire or train staff?
    • Example: For a company considering a new cloud-based data analytics platform, technical feasibility would involve evaluating if they have the cloud infrastructure, expertise in data analytics, and the ability to manage large volumes of data.
  2. Economic Feasibility (also called Cost-Benefit Analysis):

    • This involves assessing the financial aspects of the project to determine if the expected benefits justify the costs. It calculates potential costs (both initial and ongoing) against the expected financial gains or savings.
    • Key questions include:
      • What are the projected costs of the project, including development, maintenance, and operational costs?
      • What financial benefits will the project deliver, and will these benefits offset the costs?
      • What is the return on investment (ROI)?
    • Example: If a company plans to develop a customer relationship management (CRM) tool, economic feasibility would involve comparing the costs of development and deployment to the potential revenue increase or customer retention improvements the tool could bring.
  3. Operational Feasibility:

    • Operational feasibility evaluates how well the proposed solution fits within the organization’s operations, culture, and workflow. It assesses if the system can be effectively used by stakeholders and if it aligns with organizational objectives.
    • Key questions include:
      • Will the system solve the problem or address the opportunity it’s meant for?
      • Is it acceptable to users, and does it fit with existing processes?
    • Example: For a hospital implementing an electronic health record (EHR) system, operational feasibility would assess if the medical staff is comfortable using the new system and if it improves their workflow rather than disrupting it.
  4. Legal Feasibility:

    • This type checks if the project complies with relevant legal requirements, regulations, and standards. It ensures that there are no legal obstacles that could hinder or halt the project.
    • Key questions include:
      • Does the project comply with data protection, privacy, or industry-specific regulations?
      • Are there any contractual obligations or liabilities associated with the project?
    • Example: A financial institution developing a customer data management system must ensure it complies with data protection regulations like GDPR or CCPA.
  5. Schedule Feasibility:

    • Schedule feasibility evaluates whether the project can be completed within the given timeframe. It checks if the project timeline is realistic, given available resources and project scope.
    • Key questions include:
      • Can the project be completed by the deadline?
      • Are there enough resources to meet the project schedule?
    • Example: A software company developing a product for a seasonal event must determine if they can complete the development and testing phases in time for a timely release.

Steps in Feasibility Analysis

  1. Define the Project Scope and Objectives:

    • Start by defining what the project aims to achieve, including its goals, scope, and deliverables. Having clear objectives helps to focus the feasibility analysis on relevant factors.
  2. Identify Potential Solutions:

    • Identify possible approaches or alternatives to achieving the project goals. This can involve brainstorming different solutions or technologies that could be used for the project.
  3. Conduct Feasibility Assessments:

    • Perform the various types of feasibility studies (technical, economic, operational, etc.) as outlined above, to assess each aspect of the project.
  4. Evaluate Risks:

    • Identify potential risks, such as technology changes, cost overruns, or project delays. Analyze how these risks may impact the feasibility of the project.
  5. Document Findings:

    • Create a feasibility report summarizing the findings from each type of feasibility analysis. The report should outline the strengths, weaknesses, and overall viability of the project.
  6. Make a Recommendation:

    • Based on the feasibility assessment, decide whether to proceed with the project, adjust its scope, or abandon it. The recommendation should consider both the feasibility analysis results and the organization’s strategic goals.

Advantages of Feasibility Analysis


Technical Feasibility

Technical Feasibility is an evaluation of whether a proposed project or solution can be successfully implemented using the current or planned technical resources and skills. This assessment focuses on whether the technology and expertise required to complete the project are available, and whether they can handle the system requirements effectively. Technical feasibility is critical because, without the appropriate technology or technical expertise, the project risks failure even if other aspects (like budget or operational fit) are favorable.

Key Aspects of Technical Feasibility

  1. Availability of Technology:

    • Determines if the necessary technology or equipment for the project exists and is accessible.
    • Includes evaluating software, hardware, infrastructure, and tools.
    • If the required technology is unavailable, the project team must consider alternatives or decide if custom development is necessary.
  2. Technical Expertise:

    • Assesses whether the organization has the in-house skills and knowledge needed to implement and maintain the system.
    • Includes evaluating the experience of software developers, system architects, IT support, and any specialized skills (e.g., machine learning, cybersecurity).
    • If there’s a skills gap, the organization must consider options like hiring new talent, outsourcing, or training existing staff.
  3. Compatibility with Existing Systems:

    • Checks if the new system can be integrated with existing systems, databases, and software within the organization.
    • Evaluates potential interoperability issues, as well as the impact on current infrastructure.
    • For example, if the new system requires a particular operating system or database structure, the feasibility study must consider compatibility and potential upgrades.
  4. Scalability:

    • Determines if the technology chosen can scale with increased demand or expansion of the business.
    • This is especially important for systems expected to handle high traffic, large datasets, or growing user bases.
    • Scalability analysis may involve assessing cloud infrastructure options, network capabilities, or modular design.
  5. Reliability and Security:

    • Evaluates whether the technology meets reliability and security requirements for the project.
    • Reliability involves assessing downtime risks, backup systems, and disaster recovery options.
    • Security considerations include data encryption, access controls, and compliance with relevant data protection regulations.
  6. Technical Risks:

    • Identifies potential technical obstacles and risks associated with the project.
    • Includes risks such as technology obsolescence, changes in software dependencies, or challenges in integrating emerging technologies.
    • Plans for managing or mitigating these risks should be part of the feasibility analysis.

Steps in Conducting Technical Feasibility Analysis

  1. Identify Project Requirements:

    • Start by defining the technical requirements based on the project’s objectives. This may include system specifications, performance metrics, security requirements, and user needs.
  2. Assess Existing Technology and Resources:

    • Evaluate the current technology stack, including hardware, software, and networking infrastructure. Identify if they meet the project’s requirements or if additional resources are needed.
  3. Analyze Technical Alternatives:

    • Identify and evaluate alternative technologies that could meet the project requirements. Compare each alternative for cost, ease of implementation, and alignment with organizational goals.
  4. Evaluate Technical Skills and Staffing:

    • Assess the availability of technical skills in the current team. Determine if additional expertise is required and if so, how it will be sourced (e.g., hiring, outsourcing, training).
  5. Perform Risk Assessment:

    • Identify potential technical risks, such as compatibility issues, system performance limitations, or cybersecurity threats. Develop strategies to address these risks.
  6. Prepare a Technical Feasibility Report:

    • Compile findings into a report, including identified technical requirements, resource assessments, alternatives evaluated, risk analysis, and a final recommendation on the project’s technical feasibility.

Example Scenario

Let’s say a healthcare provider is considering implementing an Electronic Health Records (EHR) system to centralize patient data across various departments. Here’s how they might conduct a technical feasibility analysis:


Cost-Benefit Analysis

Cost-Benefit Analysis (CBA) is a systematic approach to evaluating the financial viability of a project by comparing its anticipated costs to its expected benefits. In software engineering, CBA helps decision-makers determine whether a project should proceed based on whether the benefits outweigh the costs. This analysis is critical for resource allocation, budgeting, and understanding the financial impact of a project on the organization.

Key Aspects of Cost-Benefit Analysis

  1. Identifying Costs:

    • Direct Costs: These are expenses directly tied to the project, such as software development costs, hardware costs, licensing fees, salaries for developers, testing expenses, and any other costs that arise specifically due to the project.

    • Indirect Costs: These include costs that are not directly linked to the project but may be impacted by it. For example, overhead costs like utilities, rent, and administrative expenses can be considered if they increase due to the project.

    • Intangible Costs: These are harder to quantify but may include factors like employee downtime, potential system failures during implementation, or reduced morale due to temporary disruption.

    • Opportunity Costs: The benefits that the organization forgoes from other projects or activities because of investing resources in this project.

  2. Identifying Benefits:

    • Direct Benefits: These include tangible gains that the project will deliver, such as increased revenue, time savings, improved productivity, and reduced operational costs.

    • Indirect Benefits: These might include improved customer satisfaction, enhanced market reputation, or competitive advantage, even if they don’t directly result in revenue gains.

    • Intangible Benefits: These are benefits that are difficult to measure but add value, like employee satisfaction, customer loyalty, and positive impact on brand image.

  3. Calculating the Net Present Value (NPV):

    • NPV helps in understanding the present value of future benefits minus the present value of costs, taking into account a discount rate (often the organization's required rate of return or cost of capital).

    • A positive NPV indicates that the project's benefits outweigh its costs when adjusted for the time value of money, supporting the decision to proceed with the project.

  4. Calculating the Return on Investment (ROI):

    • ROI is a metric to evaluate the profitability of the project, calculated by dividing the net benefits by the total costs and expressing it as a percentage.
    • A higher ROI suggests that the project will yield better returns relative to its costs.
  5. Payback Period:

    • The payback period is the time required to recover the initial investment. It indicates how quickly the project will start generating net benefits.
    • Projects with shorter payback periods are often considered less risky and more attractive.

Steps in Conducting a Cost-Benefit Analysis

  1. Define the Scope of Analysis:

    • Determine the project’s boundaries, objectives, and the timeframe for which costs and benefits should be considered.
  2. Identify All Costs and Benefits:

    • List every possible cost and benefit, both direct and indirect, tangible and intangible. Gather data to quantify these as accurately as possible.
  3. Estimate Costs and Benefits:

    • Calculate the financial values for all identified costs and benefits, using estimates, industry benchmarks, or historical data.
    • For future benefits and costs, apply a discount rate to calculate the present value.
  4. Compare Costs to Benefits:

    • Subtract total costs from total benefits to find the net benefit. If benefits exceed costs, the project is considered financially viable.
    • If comparing multiple projects, prioritize based on which has the highest net benefit, ROI, or NPV.
  5. Conduct Sensitivity Analysis:

    • Test how changes in key assumptions (such as cost estimates, discount rates, or expected benefits) affect the results. Sensitivity analysis helps identify potential risks and provides a range for possible outcomes.
  6. Prepare a Cost-Benefit Report:

    • Document all findings, including estimated costs, benefits, assumptions, and calculated financial metrics. Provide a clear recommendation based on the analysis.

Example Scenario

Imagine a retail company considering the implementation of an automated inventory management system to reduce manual tracking and improve efficiency.

  1. Identified Costs:

    • Direct Costs: Software purchase ($50,000), hardware setup ($10,000), training staff ($5,000), and annual maintenance ($5,000).

    • Indirect Costs: Potential downtime during installation, estimated productivity loss ($2,000).

    • Opportunity Costs: Foregoing an investment in a marketing campaign that could potentially increase sales by 5%.

  2. Identified Benefits:

    • Direct Benefits: Reduction in labor costs by automating inventory checks, estimated to save $20,000 annually. Reduced inventory shortages resulting in an additional $10,000 in revenue.

    • Indirect Benefits: Improved customer satisfaction due to fewer stockouts, enhancing the brand’s reputation.

  3. Financial Metrics:

    • NPV Calculation: Using a 10% discount rate, calculate the present value of expected future benefits over a five-year period.

    • ROI: Calculate based on total net benefits divided by total costs.

    • Payback Period: Determine how long it will take for the labor savings and revenue increase to cover the initial investment.

  4. Sensitivity Analysis:

    • Test different discount rates (e.g., 8%, 12%) to see how they affect the NPV.
    • Assess how variations in labor savings affect the overall ROI.
  5. Final Report:

    • The report concludes with financial metrics showing positive NPV, ROI of 20%, and a payback period of 2 years, supporting the project’s approval.

Importance of Cost-Benefit Analysis

Cost-benefit analysis is a crucial tool in decision-making, helping organizations make informed, financially sound choices. It enables project managers to allocate resources efficiently, prioritize projects based on financial return, and identify potential financial risks early on.


COCOMO Model

The COCOMO (Constructive Cost Model) is a cost estimation model used in software engineering to estimate the effort, cost, and time required for a software development project. Developed by Barry Boehm in 1981, COCOMO provides a systematic way to estimate project parameters based on project size and complexity.

The original COCOMO model has three primary types—Basic, Intermediate, and Detailed—each with increasing levels of detail and factors considered.

COCOMO_Model_Software_Engineering.webp


Types of COCOMO Model

  1. Basic COCOMO:

    • This is the simplest form and estimates software development effort based primarily on project size (measured in KLOC - thousands of lines of code).

    • Basic COCOMO classifies projects into three categories:

      • Organic: Small, simple software with experienced teams and flexible requirements (e.g., inventory management).

      • Semi-detached: Medium-sized, more complex projects with a mix of experienced and less-experienced team members (e.g., embedded systems).

      • Embedded: Large, complex projects with tight constraints and high reliability requirements (e.g., real-time systems).

    • Formula:

      • Effort (person-months) = a(KLOC)b
      • Development Time (months) =c(Effort)b
      • Here, the values of a, b, c, and d vary based on the project type (organic, semi-detached, or embedded).
  2. Intermediate COCOMO:

    • Adds more factors by considering 15 different cost drivers like product reliability, team experience, hardware limitations, and project requirements.

    • Each cost driver has a rating (from very low to extra high) that influences the estimated effort.

    • Formula:

      • Effort = a(KLOC)bEAF
      • EAF (Effort Adjustment Factor) is the product of all cost driver ratings, which adjusts the effort estimation.
    • The intermediate model gives a more accurate effort estimate because it accounts for more factors affecting project complexity.

  3. Detailed COCOMO:

    • The most sophisticated form of COCOMO, considering each phase of the software development lifecycle separately.
    • It uses all the factors from the intermediate model and also divides effort estimation by stages like requirements, design, coding, and testing.
    • Effort is calculated separately for each development stage, then combined to produce the overall project effort estimate.

Steps in Applying the COCOMO Model

  1. Estimate the Project Size (KLOC):

    • Start by estimating the size of the project in terms of lines of code. If you’re developing a new project from scratch, this may involve reviewing similar projects or industry benchmarks.
  2. Select the Project Category:

    • Based on the project’s complexity, assign it to one of the three categories: organic, semi-detached, or embedded.
  3. Calculate Effort Using Basic, Intermediate, or Detailed Model:

    • Use the appropriate formula based on the model type. For intermediate and detailed models, determine the EAF by rating each cost driver.
  4. Calculate Development Time:

    • Once you have the estimated effort (person-months), apply the time calculation formula to estimate the project duration in months.
  5. Refine and Validate Estimates:

    • Review estimates against any historical data from similar projects if available and adjust as needed. This validation helps ensure accuracy, especially if using the model for complex projects.

Example Calculation with Intermediate COCOMO

Let’s say you’re estimating the effort for a semi-detached project expected to have 20 KLOC.

  1. Project Size (KLOC): 20 KLOC.

  2. Effort Formula (for semi-detached): Effort = 3.0(KLOC)1.12.

  3. Calculate Basic Effort:

    • Effort = 3.0(20)1.1260.0 person-months.
  4. Determine EAF: Suppose we have selected cost driver ratings that lead to an EAF of 1.2.

  5. Calculate Final Effort:

    • Final Effort = 60.01.2 = 72 person-months.

The estimated project effort is 72 person-months.


Importance and Limitations of the COCOMO Model

Importance:

Limitations: