Set 3
Set 3
1. Class Diagrams: Represent the static structure of a system, showing classes, their attributes,
methods, and relationships between classes.
2. Object Diagrams: Depict instances of classes and their relationships at a specific point in
time.
3. State Diagrams: Illustrate the states of objects and the transitions between these states.
4. Interaction Diagrams: Such as sequence diagrams and collaboration diagrams, which show
how objects interact over time.
5. Use Case Diagrams: Describe the interactions between a system and its external actors,
focusing on the functionality provided by the system.
the Object Modeling Technique (OMT) Data Flow Diagram (DFD) for an ATM
systems
This DFD illustrates the flow of data in a basic ATM system:
The "User Interface" interacts with the user, accepting inputs such as
account information and transaction requests.
The "Transaction Logic" processes the user's requests, checking for valid
transactions, deducting or adding funds from/to the account, and
updating the database accordingly.
The "Database" stores information about user accounts, balances,
transaction logs, etc.
1. Waterfall Model:
Merits:
Simple and Sequential: The linear and sequential nature of the waterfall
model makes it easy to understand and implement.
Clear Milestones: Each phase has well-defined deliverables and
milestones, aiding in project tracking and management.
Documentation: Emphasizes documentation at each stage, ensuring
clear documentation of requirements, design, and implementation.
Prevents Scope Creep: Requirements are finalized upfront, reducing the
likelihood of scope creep during development.
Easy Management: Due to its structured approach, the waterfall model
is relatively easy to manage, especially for smaller projects with stable
requirements.
Demerits:
Rigidity: Lack of flexibility makes it difficult to accommodate changes
once the project moves to the next phase.
Late Testing: Testing occurs at the end of the development lifecycle,
which may lead to issues being discovered late, increasing the cost of
fixing defects.
Limited Customer Feedback: Customer feedback is limited until the later
stages of development, which may result in mismatches between the
final product and customer expectations.
High Risk: The risk of project failure is high if requirements are not well
understood or change significantly during development.
No Working Software Until Late: Working software is only produced
towards the end of the project, leading to potential delays in delivering
value to the customer.
2. Agile Model:
Merits:
Customer Satisfaction: Agile prioritizes customer satisfaction by
delivering working software iteratively and frequently, incorporating
customer feedback throughout the development process.
Adaptability: Highly adaptable to changes, allowing for flexibility in
responding to evolving requirements.
Early Detection of Issues: Early and continuous testing and integration
help in early detection and resolution of issues.
Collaboration: Promotes collaboration and communication among team
members and stakeholders, enhancing transparency and shared
understanding.
Reduced Risk: Incremental and iterative development reduces the risk of
project failure by delivering value early and frequently.
Demerits:
Active Customer Involvement Required: Agile requires active
involvement and commitment from customers throughout the
development process, which may not always be feasible.
Scope Creep: Continuous changes and iterations may lead to scope creep
if requirements are not managed effectively.
Documentation: Agile prioritizes working software over comprehensive
documentation, which may lead to a lack of documentation, especially in
fast-paced environments.
Skill Dependency: Requires skilled and experienced team members for
effective collaboration, communication, and decision-making.
Not Suitable for Fixed Requirements: Not suitable for projects with fixed
requirements or tight deadlines, as the iterative nature may lead to
uncertainty in project timelines and costs.
3. Spiral Model:
Merits:
Risk Management: Incorporates risk analysis and mitigation from the
early stages, allowing for proactive management of risks throughout the
development lifecycle.
Adaptability: Highly adaptable and flexible, making it suitable for
projects with changing or evolving requirements.
Early Prototyping: Allows for early prototyping and user feedback,
reducing the risk of building the wrong product.
Iterative Development: Provides opportunities for incremental
development and refinement, allowing for continuous improvement.
Large and Complex Projects: Suitable for large, complex projects where
requirements are not well understood initially.
Demerits:
Complexity: The spiral model can be complex and may require extensive
resources, making it less suitable for smaller projects.
Risk Analysis Overhead: Risk management can become time-consuming
and costly, especially for projects with high uncertainty.
Difficulty in Estimation: Difficult to estimate project timelines and costs
accurately, especially in the early stages.
Skill Dependency: Requires highly skilled team members for effective
risk assessment, management, and decision-making.
Documentation Challenges: Documentation can be challenging to
maintain due to the iterative nature of the model, leading to potential
gaps in documentation.
4. V-Model:
Merits:
Early Emphasis on Testing: Testing activities are integrated into each
phase of development, leading to early detection and resolution of
defects.
Clear Correspondence: Each development phase has a corresponding
testing phase, ensuring that all requirements are validated and verified.
Well-Structured: Provides a systematic and structured approach to
development, making it easier to manage and track progress.
Reduced Risk: Ensures that requirements are properly validated and
verified, reducing the risk of building the wrong product.
Documentation: Emphasizes documentation at each stage, ensuring
clear documentation of requirements, design, and testing activities.
Demerits:
Rigidity: Similar to the waterfall model, the V-model can be rigid and
inflexible, making it difficult to accommodate changes once the project is
underway.
Late Feedback: Customer feedback is limited until later stages of
development, which may lead to mismatches between the final product
and customer expectations.
Limited Adaptability: Less adaptable to changes compared to agile
methodologies, making it less suitable for projects with evolving
requirements.
Complexity: Requires careful planning and coordination of development
and testing activities, which can be complex and time-consuming.
Documentation Overhead: Emphasizes documentation at each stage,
which may lead to documentation overhead, especially for smaller
projects.
5. Incremental Model:
Merits:
Early Delivery of Basic Functionality: Allows for early delivery of partial
functionality, providing value to customers sooner.
Reduced Risk: Incremental delivery reduces the risk of project failure by
delivering working software early and frequently.
Flexibility: Each increment builds on the previous one, providing
opportunities for feedback and adaptation.
Customer Involvement: Encourages customer involvement and feedback
throughout the development process, ensuring alignment with customer
needs.
Clear Progression: Each increment provides a clear progression towards
the final product, enhancing transparency and stakeholder satisfaction.
Demerits:
Careful Planning Required: Requires careful planning and design of
increments to ensure that each increment adds value and aligns with
project goals.
Integration Challenges: May lead to integration issues if not planned
properly, especially as the number of increments increases.
Increased Complexity: Managing multiple increments simultaneously
can increase complexity, especially for larger projects.
Estimation Challenges: Difficulty in estimating overall project timeline
and cost, especially in the early stages when requirements are not fully
understood.
Not Suitable for Fixed Deadlines: May not be suitable for projects with
fixed deadlines or requirements, as the iterative nature may lead to
uncertainty in project timelines and costs.
4. Write detailed notes on UML class diagram.
Class diagrams are a type of UML (Unified Modeling Language) diagram used in
software engineering to visually represent the structure and relationships of
classes in a system. UML is a standardized modeling language that helps in
designing and documenting software systems. They are an integral part of the
software development process, helping in both the design and documentation
phases.
Class diagrams provide a high-level overview of a system’s design, helping to
communicate and document the structure of the software. They are a
fundamental tool in object-oriented design and play a crucial role in the
software development lifecycle.
What is a class
In object-oriented programming (OOP), a class is a blueprint or template for
creating objects. Objects are instances of classes, and each class defines a set of
attributes (data members) and methods (functions or procedures) that the objects
created from that class will possess. The attributes represent the characteristics or
properties of the object, while the methods define the behaviors or actions that the
object can perform.
UML Class Notation
class notation is a graphical representation used to depict classes and their
relationships in object-oriented modeling.
1. Class Name:
The name of the class is typically written in the top compartment
of the class box and is centered and bold.
2. Attributes:
Attributes, also known as properties or fields, represent the data
members of the class. They are listed in the second compartment
of the class box and often include the visibility (e.g., public,
private) and the data type of each attribute.
3. Methods:
Methods, also known as functions or operations, represent the
behavior or functionality of the class. They are listed in the third
compartment of the class box and include the visibility (e.g.,
public, private), return type, and parameters of each method.
Relationships between classes
In class diagrams, relationships between classes describe how classes are
connected or interact with each other within a system. There are several types
of relationships in object-oriented modeling, each serving a specific purpose.
Here are some common types of relationships in class diagrams:
1. Association
An association represents a bi-directional relationship between two classes. It
indicates that instances of one class are connected to instances of another
class. Associations are typically depicted as a solid line connecting the classes,
with optional arrows indicating the direction of the relationship.
2. Directed Association
A directed association in a UML class diagram represents a relationship
between two classes where the association has a direction, indicating that one
class is associated with another in a specific way.
In a directed association, an arrowhead is added to the association line
to indicate the direction of the relationship. The arrow points from the
class that initiates the association to the class that is being targeted or
affected by the association.
Directed associations are used when the association has a specific flow
or directionality, such as indicating which class is responsible for
initiating the association or which class has a dependency on another.
3. Aggregation
Aggregation is a specialized form of association that represents a “whole-part”
relationship. It denotes a stronger relationship where one class (the whole)
contains or is composed of another class (the part). Aggregation is represented
by a diamond shape on the side of the whole class. In this kind of relationship,
the child class can exist independently of its parent class.
4. Composition
Composition is a stronger form of aggregation, indicating a more significant
ownership or dependency relationship. In composition, the part class cannot
exist independently of the whole class. Composition is represented by a filled
diamond shape on the side of the whole class.
5. Generalization(Inheritance)
Inheritance represents an “is-a” relationship between classes, where one class
(the subclass or child) inherits the properties and behaviors of another class
(the superclass or parent). Inheritance is depicted by a solid line with a closed,
hollow arrowhead pointing from the subclass to the superclass.
7. Dependency Relationship
A dependency exists between two classes when one class relies on another,
but the relationship is not as strong as association or inheritance. It represents
a more loosely coupled connection between classes. Dependencies are often
depicted as a dashed arrow.
8. Usage(Dependency) Relationship
A usage dependency relationship in a UML class diagram indicates that one
class (the client) utilizes or depends on another class (the supplier) to perform
certain tasks or access certain functionality. The client class relies on the
services provided by the supplier class but does not own or create instances of
it.
Test Driven Development is the process in which test cases are written before
the code that validates those cases. It depends on repetition of a very short
development cycle. Test driven Development is a technique in which
automated Unit test are used to drive the design and free decoupling of
dependencies.
The following sequence of steps is generally followed:
1. Add a test – Write a test case that describe the function completely. In
order to make the test cases the developer must understand the features
and requirements using user stories and use cases.
2. Run all the test cases and make sure that the new test case fails.
3. Write the code that passes the test case
4. Run the test cases
5. Refactor code – This is done to remove duplication of code.
6. Repeat the above mentioned steps again and again
Process of tdd
1. Red – Create a test case and make it fail
2. Green – Make the test case pass by any means.
3. Refactor – Change the code to remove duplicate/redundancy.
Benefits:
Unit test provides constant feedback about the functions.
Quality of design increases which further helps in proper maintenance.
Test driven development act as a safety net against the bugs.
TDD ensures that your application actually meets requirements defined
for it.
TDD have very short development lifecycle.
SCM Process
It uses the tools which keep that the necessary change has been implemented
adequately to the appropriate component. The SCM process defines a number
of tasks: