CCS356 Oose
CCS356 Oose
UNIT – 1
2 MARKS
2. What is Software Development Lifecycle (or) Software Process? List out its phases.
The Software Development Lifecycle (SDLC) is a structured process for developing software
that includes distinct phases:
Phases: Requirements gathering, System design, Implementation, Testing, Deployment, and
Maintenance.
• Waterfall Model: Linear and sequential; each phase must be completed before
moving to the next.
• Spiral Model: Combines iterative development with risk analysis; involves repeated
cycles (spirals) of planning, risk assessment, and prototyping.
13 MARKS
1.Introduction to Agility:
Agility in software development refers to the ability to respond quickly and effectively to
changes, whether in requirements, market conditions, or customer needs. Agile teams aim to
deliver high-quality software through iterative development, continuous feedback, and
close collaboration with stakeholders.
Agile Process:
The Agile process is a development approach that breaks the project into small, manageable
units called iterations or sprints, typically lasting 1 to 4 weeks. At the end of each iteration:
This process allows for adaptive planning, frequent reassessment, and faster delivery of
value.
Agile Methodology:
Agile methodology refers to a set of principles and practices for software development
based on the Agile Manifesto. It includes various frameworks such as:
• Scrum – Focuses on roles, time-boxed sprints, and meetings (e.g., daily stand-ups).
• Extreme Programming (XP) – Emphasizes coding practices like pair programming
and TDD.
• Kanban – Focuses on visualizing the workflow and limiting work-in-progress.
Pros of Agile:
Cons of Agile:
Introduction:
Software development models provide a structured approach for planning, executing, and
managing software projects. They guide teams in organizing development activities,
improving productivity, and ensuring quality outcomes.
Perceptive models are traditional or generic software development approaches that follow a
well-defined sequence of phases such as requirements gathering, design, coding, testing, and
maintenance. These models are best suited for predictable and well-understood projects.
Prescriptive process models are traditional models that define a set of activities, milestones,
and deliverables in a specific sequence. They assume that software projects follow
predictable paths.
Key Characteristics:
The Waterfall Model is the earliest and simplest prescriptive model. It follows a linear
sequential flow, where progress is seen as flowing steadily through phases.
1. Requirement Analysis
2. System Design
3. Implementation
4. Testing
5. Deployment
6. Maintenance
Advantages:
Limitations:
The Incremental Model divides the system into smaller parts (increments) that are
developed and delivered over time.
How It Works:
Advantages:
Limitations:
Key Features:
Advantages:
The Evolutionary Model focuses on developing an initial version of the software, then
continuously refining it based on feedback.
1. Planning
2. Risk Analysis
3. Engineering
4. Evaluation
Advantages:
Limitations:
Comparison Summary:
Specialized models are tailored for specific project types, domains, or development
constraints. Unlike general-purpose (prescriptive) models, specialized models address
unique requirements such as high risk, need for rapid prototyping, or strong mathematical
precision.
They offer flexibility, risk handling, or domain-specific solutions, especially for complex
or evolving systems.
Key Concepts:
Advantages:
Disadvantages:
Formal methods use mathematical models and logic to specify, develop, and verify
software systems—especially critical where failure is unacceptable (e.g., avionics, medical
systems).
Advantages:
Disadvantages:
• Logging
• Security
• Error handling
Core Idea:
Separates core business logic from cross-cutting concerns to improve modularity and
maintainability.
Key Concepts:
Advantages:
Disadvantages:
Comparison Table:
Petri Nets are a mathematical modeling tool used to represent concurrent, distributed, and
parallel systems. They consist of places, transitions, and tokens and help analyze system
behavior such as deadlocks and synchronization.
An SRS is a detailed document that clearly describes the software system's functional and
non-functional requirements. It acts as an agreement between stakeholders and developers,
serving as a basis for design, development, and testing.
3. List out the various diagrams used in object modeling using UML.
13 MARKS
1.Requirements Are Gathered And Analyzed
Introduction:
a) Stakeholder Identification:
• Identify people who have an interest in the system (users, clients, developers,
regulators).
• Determine their needs and expectations.
• A use case describes how a user (actor) interacts with the system to achieve a goal.
• Diagrams are used to visualize actors and their interactions.
• Helps in understanding functional behavior early on.
Once the requirements are gathered, the analysis focuses on organizing, modeling, and
validating them.
a) Identifying Classes and Objects:
c) Modeling Interactions:
e) Activity Diagrams:
3. Validation of Requirements:
• Ensure that all use cases, scenarios, and object models are consistent, complete, and
correct.
• Conduct walkthroughs, reviews, and prototyping for validation.
• Confirm that requirements reflect user needs and can be implemented.
Advantages of Requirements:
Definition:
1. Introduction
o Purpose
o Scope
o Definitions
o References
2. Overall Description
o Product perspective
o Product functions
o User characteristics
o Constraints and assumptions
3. Specific Requirements
o Functional requirements (what the system should do)
o Non-functional requirements (performance, reliability, etc.)
o Interface requirements (user, hardware, software)
4. Appendices (Glossaries, diagrams, etc.)
Importance of SRS:
Definition:
Formal System Specification is a process of describing the software system using formal
mathematical methods such as logic, set theory, and algebra to ensure high precision,
accuracy, and verification of requirements.
Key Elements:
• Z notation
• VDM (Vienna Development Method)
• B-Method
• Alloy
Advantages:
Disadvantages:
Comparison Table:
1. Actors:
3. System Boundary:
4. Relationships:
Software design patterns are reusable solutions to common design problems. They are
generally categorized as:
The Adapter pattern is a structural design pattern that allows incompatible interfaces to
work together. It acts as a bridge between two incompatible classes by converting one
interface into another expected by the client.
5. What is UI Design?
UI (User Interface) Design refers to the process of designing the visual layout and
interactive elements of software applications. It focuses on usability, aesthetics, and user
experience, ensuring intuitive and user-friendly interfaces.
13 MARKS
1.Architectural Styles
• Architectural style is a pattern for creating the system architecture for the given
problem. Most of the large systems are heterogeneous and do not follow a single
architectural style.
• These styles can provide ideas for creating an architectural view for the given
problem.
• Styles can be combined to form richer views.
• Many systems use multiple styles and different parts of a system may use different
styles.
• Various architectural styles are -
1. Layered architectural style
2. Client Server style
3. Tiered architecture
4. Pipe and Filter style
1. Layered Architecture:
Advantages:
Disadvantages:
Advantages:
Disadvantages:
Tiered architecture is a software design model that separates the system into multiple
logical layers (tiers), where each tier is responsible for a specific functionality. This
promotes modularity, scalability, and maintainability.
Common Tiers:
Advantages:
Disadvantages:
Example:
Advantages:
Disadvantages:
Definition:
The software design process transforms requirements into a blueprint for constructing
software. It bridges the gap between requirement specification and implementation,
focusing on structure, behavior, and interaction of software components.
3. Interface Design:
• Describes interactions between system components and between system and users.
• Includes API definitions, UI screens, and communication protocols.
5. Design Validation:
• Ensure that the design aligns with requirements using walkthroughs, reviews, or
prototyping.
• Modularity
• Abstraction
• Information hiding
• Separation of concerns
• Consistency
1. Functional Independence:
2. Cohesion:
• Measures the degree to which the elements within a module belong together.
• High cohesion means a module performs a single, well-defined task.
3. Coupling:
• High cohesion and low coupling ensure modularity, which leads to:
o Easier debugging
o Simpler updates
o Better scalability
o Reusability of components
UNIT – 4
2 MARKS
1. What is Symbolic Execution?
Symbolic execution is a software testing technique where program inputs are treated as
symbolic values instead of concrete data. It explores program paths by analyzing the logic
with symbolic inputs to detect bugs, unreachable code, and security issues.
Model checking is an automated technique used to verify whether a system model satisfies
formal specifications (e.g., properties expressed in temporal logic). It exhaustively checks
all possible system states to detect errors like deadlocks, safety violations, and liveness
issues.
3. Define: Debugging
Regression testing is the process of re-testing a software system after changes (like bug
fixes or enhancements) to ensure that existing functionalities still work as intended and that
new bugs haven’t been introduced.
5. Write the Difference Between Black Box and White Box Testing:
13 MARKS
Definition:
Software testing is the process of evaluating a software application to ensure it meets the
specified requirements and is free of defects. It helps to verify the correctness, completeness,
and quality of the software product.
Definition:
Integration testing focuses on verifying data flow and interactions between integrated
modules.
Purpose:
Approaches:
Example:
In an online shopping app, after unit testing the "cart" and "payment" modules, integration
testing checks:
2. System Testing:
Definition:
System testing validates the entire software system against its functional and non-functional
requirements.
Purpose:
• Functional testing
• Performance testing
• Security testing
• Usability testing
Example:
• A user logs in, searches for a product, adds it to the cart, makes payment, and receives
a confirmation.
• All functions are tested in sequence.
Software testing ensures that a system works correctly, meets requirements, and is free of
defects. Two primary testing methods used during the software development lifecycle are
White Box Testing and Black Box Testing.
Definition:
White box testing (also called structural, clear box, or glass box testing) is a method where
the internal structure and logic of the program are known and tested.
Characteristics:
Advantages:
Disadvantages:
Applications:
Definition:
Black box testing is a method where the tester does not know the internal logic or code of
the application and tests it purely based on inputs and expected outputs.
Characteristics:
Advantages:
Disadvantages:
Applications:
Comparison Table:
Feature White Box Testing Black Box Testing
Knowledge Requires code knowledge No code knowledge needed
Required
UNIT – 5
2 MARKS
Project Scheduling is the process of defining and organizing project tasks and timelines,
allocating resources, and establishing start and end dates to ensure the project progresses in a
controlled and timely manner.
Deployment tools are software utilities that help automate the process of deploying
applications to production environments. Examples include Docker, Jenkins, Ansible, and
Kubernetes, which streamline updates, rollbacks, and environment management.
13 MARKS
1. Project Scheduling
Definition:
Project scheduling is the process of defining the timeline, tasks, resources, and milestones
of a software project to ensure timely delivery.
Objectives:
Tools Used:
• Microsoft Project
• JIRA
• GanttPRO
• Trello
Benefits:
2. DevOps
Definition:
DevOps Tools:
Benefits:
Definition:
• Microsoft Azure
• Google App Engine
• AWS Elastic Beanstalk
• Heroku
Features:
Advantages:
Use Cases:
Definition:
• Developers write code and commit changes to a version control system (VCS).
• Tool Examples: Git, GitHub, GitLab, Bitbucket
2. Build Phase
3. Automated Testing
• Unit, integration, and functional tests are run to validate the code.
• Ensures code quality before proceeding to next stages.
• Tool Examples: JUnit, Selenium, TestNG
• Combines code from multiple developers and tests the integrated code automatically.
• Detects errors early.
• Tool Examples: Jenkins, CircleCI, Travis CI
5. Artifact Repository
6. Staging Environment
8. Production Deployment
1. Structural Diagrams
Structural diagrams focus on the static aspects of the system, such as objects, classes,
and components. They describe the system's structure and the relationships between
elements.
• Purpose:
Describes the static structure of a system in terms of its classes, attributes,
methods, and their relationships (associations, inheritance, dependencies).
• Usage:
It is used to model the objects and classes in the system, their attributes, and
their interactions.
• Purpose:
Represents a snapshot of the system at a particular moment in time, showing
instances of classes and their relationships.
• Usage:
Used to visualize real-time instances or objects and their state at a certain point
in time.
1.3. Component Diagram
• Purpose:
Describes the organization and dependencies of the components within the
system, including their interfaces and the relationships between them.
• Usage:
Used to model the physical structure of the system and the interaction between
various components (e.g., libraries, services)
• Purpose:
Describes the physical deployment of software artifacts on hardware nodes. It
represents how software components are distributed across servers,
workstations, and other devices.
• Usage:
Used to model the hardware architecture of the system, focusing on physical
nodes (computers, devices) and their communication
• Purpose:
Shows how the system is divided into packages (groups of related classes,
components, etc.) and how they depend on each other.
• Usage:
Used to organize and manage large systems, displaying dependencies between
packages.
2. Behavioral Diagrams
Behavioral diagrams describe the dynamic aspects of the system, focusing on the
interaction, flow, and state of components.
• Purpose:
Represents the functional requirements of a system by showing actors (users or
other systems) and the use cases (system functionalities) that they interact with.
• Usage:
Used to capture the requirements and user interactions with the system.
• Purpose:
Models the interactions between objects or components over time, showing the
sequence of messages exchanged between objects.
• Usage:
Used to capture the detailed flow of control in a use case or scenario.
• Purpose:
Represents the interaction between objects, focusing on the organization of
objects and the messages they exchange.
• Usage:
Used to show the collaboration between components during a specific interaction
or scenario.
2.4. State Machine Diagram (Statechart)
• Purpose:
Represents the states of an object or system and the transitions between those
states based on events.
• Usage:
Used to model the behavior of objects over time, especially those with complex
states (e.g., workflows, state-based systems).
• Purpose:
Describes the flow of control and activities within a process, showing activities,
decisions, and concurrent actions.
• Usage:
Used to model business workflows, processes, or algorithms.
2.6. Communication Diagram
• Purpose:
Similar to the sequence diagram, but focuses on the objects and their
relationships rather than the time sequence of interactions.
• Usage:
Used to model dynamic interactions between objects, emphasizing collaborations
rather than sequential messages.
• Purpose:
Focuses on the timing constraints of messages exchanged between components,
often used in real-time systems.
• Usage:
Used to model time-sensitive interactions and constraints.
• Example:
A timing diagram for network communication, showing time delays between
data packets.
2.8. Interaction Overview Diagram
• Purpose:
A high-level overview of interactions, combining elements from activity
diagrams and sequence diagrams to model a flow of control.
• Usage:
Used to model complex interactions or high-level workflows involving several
scenarios.
• Example:
An interaction overview for the E-commerce checkout process showing the
interaction between User, Cart, Payment, and Shipping.