You are on page 1of 8

Compare and contrast different software models and explain when each model should be used in

software development.
1.Waterfall Model:
 Also known as the Classical/Traditional Model.
 Phases (requirements analysis, design, development,
testing, deployment) are executed sequentially.
 Detailed documentation is necessary.
 Early-stage planning is essential.
 High risk due to its linear nature.
 Long waiting time for running software.
 Not suitable for large projects.
 Flexibility to change is difficult.
 Testing occurs after the coding phase.
 No returning to previous stages.
 Requires a large team.
 Overlapping of phases is not possible.
 Customer involvement mainly at the beginning.
 Linear framework type.
 Least customer control over the administrator.
 Reusability is limited.

o Use when:
 Requirements are well-defined and unlikely to change significantly.
 Predictable projects with a clear scope.
 Detailed documentation is essential.
 Sequential execution aligns with project needs.
 Large teams are available.
o Avoid when:
 Flexibility and adaptability are crucial.
 Rapid changes in requirements are expected.
 Risk tolerance is low.
2.Evolutionary Model:
 Involves multiple development cycles.
 Each cycle produces a working software increment.
 Detailed documentation is necessary but not excessive.
 Early-stage planning is essential.
 Lower risk compared to Waterfall.
 Short waiting time for running software.
 Not ideal for large projects.
 Flexibility to change is easier.
 Testing occurs after every iteration.
 Returning to previous stages is possible.
 Requires a smaller team.
 Overlapping of phases is possible.
 Intermediate customer involvement.
 Linear with iterative framework type.
 More customer control over the
administrator

o Use when:
 Requirements are not fully clear initially.
 Iterative development is acceptable.
 Early feedback from users is valuable.
 Risk management is a priority.
 Medium-sized projects with moderate complexity.
o Avoid when:
 Strict deadlines or fixed schedules are critical.
 Highly stable requirements exist.
3.Incremental Model:
 Divides the project into smaller iterative cycles.
 Working software produced during the first module.
 Detailed documentation is necessary but less than Waterfall.
 Early-stage planning is essential.
 Low risk.
 Short waiting time for running software.
 Not suitable for large projects.
 Flexibility to change is easy.
 Testing occurs after every iteration.
 Returning to previous stages is possible.
 Smaller teams are required.
 Overlapping of phases is possible.
 Intermediate customer involvement.
 Linear with iterative framework type.
 More customer control over the
administrator

o Use when:
 Partial functionality can be delivered early.
 Iterative development is preferred.
 Risk management is important.
 Modules can be developed independently.
 Medium-sized projects with moderate complexity.
o Avoid when:
 Highly stable requirements exist.
 Tight schedules are non-negotiable.
4.Prototyping Model:
 Involves creating a prototype to gather requirements and feedback.
 Iterative process with user involvement.
 Focuses on understanding user needs.
 Risk depends on the quality of the prototype.
 Suitable for exploring new ideas.
 Less emphasis on documentation.
 Flexibility to change based on user
feedback.
 Testing occurs during prototype
iterations.
 Returning to previous stages is
possible.
 Smaller teams are required.
 Overlapping of phases is possible.
 High customer involvement.
 Iterative framework type.
 High customer control over the
administrator

o Use when:
 User requirements are unclear or evolving.
 Early user feedback is crucial.
 Exploring new ideas or concepts.
 Risk tolerance is moderate.
 Small to medium-sized projects.
o Avoid when:
 Detailed documentation is a strict requirement.
 Stable and well-defined requirements exist.
5.Spiral Method:
 Combines elements of Waterfall and Prototyping.
 Iterative cycles with risk analysis.
 Focuses on risk management.
 Risk-driven approach.
 Suitable for complex and large projects.
 Emphasizes documentation.
 Flexibility to change based on risk assessment.
 Testing occurs during each spiral.
 Returning to previous stages is possible.
 Requires a skilled team.
 Overlapping of phases is possible.
 High customer involvement.
 Iterative framework type.
 High customer control over the administrator

o Use when:
 Risk management is a top priority.
 Complex projects with evolving requirements.
 Iterative development is essential.
 High-quality documentation is needed.
 Experienced teams are available.
o Avoid when:
 Short timeframes are non-negotiable.
 Small-scale projects with minimal risk.

6.Rapid Application Development (RAD) Model:


 Breaks down the project into smaller iterative cycles.
 Involves rapid prototyping, user feedback, and refinement.
 Quick development and deployment.
 Suitable for time-critical projects.
 Documentation is minimal.
 Flexibility to change based on user feedback.
 Testing occurs during each iteration.
 Returning to previous stages is possible.
 Requires a skilled team.
 Overlapping of phases is possible.
 Intermediate customer involvement.
 Iterative framework type.
 More customer control over the administrator
o Use when:
 Quick development and deployment are essential.
 User involvement throughout the process.
 Prototyping and iterative cycles suit the project.
 Time-critical projects.
 Small to medium-sized projects.
o Avoid when:
 Extensive documentation is mandatory.
 Stable and well-defined requirements exist.

Requirement analysis and specification:

1. Requirement Analysis:
o Significant and essential activity after eliciting requirements.
o Analyze, refine, and scrutinize gathered requirements.
o Aims to make requirements consistent and unambiguous.
o May provide a graphical view of the entire system.
o Steps involved:
 Draw the context diagram: Defines system boundaries and interfaces
with the external world.
 Develop a Prototype (optional): Construct a prototype to understand
customer needs.
 Model the requirements: Use graphical representations (e.g., Data Flow
diagrams, Entity-Relationship diagrams).
 Finalize the requirements: Correct inconsistencies, ambiguities, and
analyze data flow among modules.
2. Requirements Specification:
o System analysts collect data about the product.
o Analyze collected data to conceptualize what needs to be done.
o Write the requirements specification document.
o Specifies what exactly needs to be developed based on the analyzed
requirements.

1. Requirement Analysis:
o Definition: Requirement analysis is the initial and crucial phase in the software
development life cycle (SDLC). It involves understanding, documenting, and
defining the expectations of users and stakeholders related to the software
application.
o Activities Involved:
 Problem Recognition: Identifying the need for a software solution. What
problem does the software aim to solve?
 Evaluation and Synthesis: Thoroughly examining existing requirements,
gathering additional information, and synthesizing a comprehensive
understanding.
 Modeling: Creating models (e.g., data flow diagrams, use cases) to
represent the system’s behavior and interactions.
 Specification: Documenting the requirements in a clear and unambiguous
manner.
 Review: Ensuring that all critical needs are captured accurately.
o Purpose and Importance:
 Clear Definition: Requirement analysis defines the necessary features and
overall product vision.
 Stakeholder Expectations: It clarifies and aligns stakeholder expectations
for the software product.
 Avoiding Disagreements: Having well-defined requirements helps
prevent disagreements and misunderstandings during development and
testing.
 Scope Management: Ensures that the final software adheres to specified
requirements, avoiding scope creep.
 Resource Optimization: Minimizes rework and optimizes resource
utilization.
 Mutual Agreement: All project stakeholders (developers, end users,
managers) reach a mutual agreement on the envisioned product,
preventing surprises upon delivery.

2. Requirements Specification:
o Definition: Once the requirements are analyzed, the next step is to create a
detailed requirements specification document.
o Purpose:
 Documenting Requirements: Clearly articulate what needs to be
developed based on the analyzed requirements.
 Guiding Development: Providing a roadmap for developers to build the
software.
 Quality Assurance: Serving as a reference for testing and validation.
 Communication: Facilitating effective communication among team
members and stakeholders.

In summary, requirement analysis ensures that software development starts on the right track by
understanding user needs, documenting expectations, and setting the groundwork for a
successful project. Without proper analysis and specification, software projects can face
significant challenges and risks

Object oriented Software Development:

Object-Oriented Programming (OOP) is a fundamental programming paradigm used by


nearly every developer at some point in their career. It serves as the standard way to code for
most of a programmer’s educational journey. Let’s delve into the basics of OOP:

1. What is Object-Oriented Programming?


o OOP relies on the concept of classes and objects.
o Classes act as abstract blueprints, defining attributes and methods.
o Objects are specific instances created from these classes.
o OOP languages include JavaScript, C++, Java, and Python.
o Some languages allow both procedural and object-oriented styles.
2. Building Blocks of OOP:
o Class: An abstract blueprint defining attributes (e.g., color, brand) and methods
(e.g., repaint).
o Object: A specific instance of a class (e.g., myCar) with unique property values.
o Class Templates: Blueprints used to create individual objects (e.g.,
goldenRetriever).
3. Four Principles of OOP:
o Encapsulation: Bundling data (attributes) and methods (functions) into a single
unit (class).
o Abstraction: Hiding complex implementation details and exposing only essential
features.
o Inheritance: Creating new classes based on existing ones (reusing code).
o Polymorphism: Objects of different classes can be treated uniformly (e.g.,
method overloading)

You might also like