Software Engineer Notes
Software Engineer Notes
Characteristics of software
Software has several key characteristics that define its nature and quality:
Intangibility – Unlike hardware, software has no physical form; it exists as code
and instructions executed by a computer.
Functionality – Software is designed to perform specific tasks, whether it's
processing data, managing systems, or enabling user interactions.
Scalability – Well-designed software can handle increased loads, users, or data
without significant performance degradation.
Maintainability – Software should be easy to modify, debug, and update to adapt
to changing requirements or fix issues.
Reliability – It must function correctly under defined conditions for a specified
period, minimizing failures and errors.
Efficiency – Software should use system resources (CPU, memory, storage)
optimally to deliver high performance.
Portability – Good software can run across different operating systems or
environments with minimal changes.
Reusability – Components of the software can be reused in other projects to save
time and effort.
Security – It must protect data and operations against unauthorized access, threats,
and vulnerabilities.
User-Friendliness – Software should be intuitive and easy to use, enhancing user
experience and productivity.
Qualities of Software
In software engineering, software quality is determined by several key attributes that define
how well a software system meets requirements and expectations. These qualities are often
categorized into functional and non-functional aspects.
1. Functional Qualities
These are related to the correctness and completeness of the software in fulfilling its
intended purpose.
2. Non-Functional Qualities
These attributes impact the overall user experience and performance of the software.
Usability – The ease with which users can learn and interact with the system.
Accessibility – The software is usable by people with disabilities.
D. Security & Safety
Security – Protection against cyber threats, unauthorized access, and data breaches.
Data Integrity – Ensuring the accuracy and consistency of stored data.
Safety – Preventing hazards in critical systems (e.g., medical or aviation software).
is System Analysis?
System analysis is the process of studying, evaluating, and designing information systems to
improve efficiency and effectiveness. It involves examining the components, processes, and
interactions within a system to understand its objectives and functionality. The primary goal is
to identify problems, define requirements, and propose solutions that enhance the system's
performance.
A System Analyst acts as a bridge between business needs and technological solutions. They
analyze business problems, design solutions, and ensure system functionality aligns with
organizational goals.
Key Responsibilities
Skills Required
A system analyst plays a crucial role in developing efficient, scalable, and cost-effective
information systems tailored to an organization's needs.
The System Development Life Cycle (SDLC) is a structured process used for planning,
creating, testing, deploying, and maintaining information systems. It ensures high-quality
software development while minimizing risks and costs.
Phases of SDLC:
1. Planning – Identify project scope, objectives, and feasibility.
2. Requirement Analysis – Gather and document user and system requirements.
3. Design – Create system architecture, UI design, and database models.
4. Development – Write code and build the system based on design specifications.
5. Testing – Identify and fix bugs to ensure functionality and performance.
6. Deployment – Release the system for users (pilot, phased, or full rollout).
7. Maintenance – Monitor, update, and improve the system post-deployment.
Software Development Life Cycle (SDLC) models provide structured approaches to software
development. Here are the main types:
1. Waterfall Model
Advantages:
2. easy to manage
5. In this model once a phase is successfully completed then only we can move to the
next phase. So there is no overlapping between the phases.
Disadvantages:
Disadvantages:
The critical feature of this model is the use of powerful development tools and
techniques. A software project can be implemented using this model if the project can be
broken down into small modules wherein each module can be assigned independently to
separate teams. These modules can finally be combined to form the final product.
Development of each module involves the various basic steps as in the waterfall model
i.e. analyzing, designing, coding, and then testing, etc. as shown in the figure. Another
striking feature of this model is a short period i.e. the time frame for delivery(time-box) is
generally 60-90 days.
Phases in RAD:
Advantages:
1. The use of reusable components helps to reduce the cycle time of the project.
2. Feedback from the customer is available at the initial stages.
3. Reduced costs as fewer developers are required.
4. The use of powerful development tools results in better quality products in
comparatively shorter periods.
5. The progress and development of the project can be measured through the various
stages.
Disadvantages:
1. The use of powerful and efficient tools requires highly skilled professionals.
2. The absence of reusable components can lead to the failure of the project.
3. The team leader must work closely with the developers and customers to close the
project on time.
4. The systems which cannot be modularized suitably cannot use this model.
5. Customer involvement is required throughout the life cycle.
4. Prototype Model
Advantages:
1. Users are not Satisfied with the prototype, then a new prototype is created again.
2. Customer feedback is available for better system.
3. It takes less time to make this project because once we have done the
requirement analysis from the customer, then it will take less time to develop the
project.
4. Error can be tested at earlier stage.
Disadvantages:
Each SDLC model has its strengths and is chosen based on project complexity, budget, and
flexibility needs.
Fact-finding techniques are essential in software engineering because they help gather accurate and complete
information about user requirements, system constraints, and operational environments. This information is
critical for developing software that meets user expectations, functions correctly, and is delivered on time and
within budget.
1. Understanding Requirements:
o
To identify what the users need from the system.
o
To define functional and non-functional (security, flexibility, portability) requirements
accurately.
2. Reducing Ambiguity:
o
To avoid misunderstandings and misinterpretations between stakeholders and developers.
3. Ensuring Completeness and Accuracy:
o
To gather comprehensive (understandable) information and avoid missing critical requirements.
4. Improving Communication:
o
To create a common understanding between clients, developers, and project teams.
5. Validating Assumptions:
o
To confirm that the initial assumptions about the system are correct.
6. Identifying Constraints and Limitations:
o
To discover technical, financial, and operational constraints early in the development process.
7. Supporting Better Decision-Making:
o
To provide a solid foundation for design, development, and testing decisions.
8. Enhancing User Satisfaction:
o
To develop a system that meets the actual needs of users and improves user experience.
Conclusion:
Fact-finding techniques help ensure that the software development process starts with a clear and complete
understanding of requirements. This reduces the risk of rework, cost overruns, and user dissatisfaction, leading
to a more successful project outcome.
Unit 2: System Analysis & Design Tools, Software Testing
Decision Tree: A Decision Tree in software engineering is a graphical tool used for decision-making and problem-
solving. It represents different possible choices and their outcomes in a tree-like structure, helping teams analyze
options, risks, and consequences.
Project Management: Helps in selecting the best development methodology (Agile, Waterfall, etc.).
Software Testing: Aids in test case selection based on conditions.
Risk Assessment: Evaluates potential risks and their impact.
Requirement Analysis: Determines feature prioritization and feasibility.
Algorithm & AI Development: Used in machine learning for classification problems.
3. Example Scenario
Suppose a software team needs to decide whether to build a mobile app as a native, hybrid, or web app. A decision tree
can help by:
5. Limitations
o
For custom: "Do we have time to secure it?" (Yes/No)
o
For third-party: "Does it integrate with our stack?" (Yes/No)
Leaves:
o
Custom + Yes = "Secure, tailored solution"
o
Custom + No = "Vulnerable system"
o
Third-party + Yes = "Fast, reliable deployment"
o
Third-party + No = "Integration headaches"
An Entity-Relationship Diagram (ERD) is a visual representation of data and its relationships in a system. It
is widely used in database design and software engineering to model the structure of data before implementing
a database.
1. Entities
o
Represent real-world objects (e.g., Customer, Order, Product).
o
Depicted as rectangles in an ERD.
o
Entities can be classified as:
Strong Entities (exist independently)
Weak Entities (depend on another entity)
2. Attributes
o
Characteristics of an entity (e.g., Customer Name, Product Price).
o
Represented as ellipses (ovals) connected to entities.
o
Types:
Primary Key (PK): Unique identifier for an entity (e.g., Customer ID)
Composite Attributes: Made up of multiple attributes (e.g., Full Name → First Name
+ Last Name)
Derived Attributes: Can be calculated (e.g., Age from Date of Birth)
Multivalued Attributes: Can have multiple values (e.g., Phone Numbers)
3. Relationships
o
Show associations between entities (e.g., Customer places Order).
o
Represented as diamonds (rhombus) connecting entities.
o
Types of relationships:
One-to-One (1:1) (e.g., One person has one passport)
One-to-Many (1:M) (e.g., One customer can place many orders)
Many-to-Many (M:N) (e.g., Students enroll in multiple courses, and each course has
multiple students)
4. Cardinality & Participation
o
Cardinality defines the number of instances in a relationship (e.g., 1:1, 1:M, M:N).
o
Participation determines whether all entities are required in a relationship (Total or Partial).
Benefits of ER Diagrams
Example ER Diagram
It reduces the relationship (duplicity) of data in a table; it also remove inconsistency problem and unwanted
risk.
Advantage:
Types:
1NF
2NF
3NF
BCNF
4NF
5NF
Core Idea:
Normalization is about structuring a database in a way that each piece of information is stored once, in the right
place, and in a way that makes it easy to update and maintain.
Why Normalize?
There are several “normal forms” (NF), each with a set of rules. The most commonly used ones are:
Project Table:
After 1NF:
Project Table:
After 1NF:
Sroll Sname
1 Ankit
2 Hemant
3 Neha
Table 2: Enrollement
Sroll(PK) Sname
1 Ankit
2 Hemant
3 Neha
Table 2: Courses
Table 3: Enrollment
Sroll(PK) Course(FK)
1 C
1 C++
2 Java
2 C
3 C++
3 Java
Data Flow Diagram (DFD):
A Data Flow Diagram (DFD) is a visual representation used in software engineering to show how data moves
through a system. It illustrates the flow of data between processes, data stores, external entities, and data
inputs/outputs, helping in analyzing and designing information systems. It is also known as “Bubble Chart”
through which we can represent the flow of data graphically in an information system.
By using DFD we can easily understand the overall functionality of system because diagram represents the
incoming dataflow, outgoing data flow and stored data in a graphical form.
It describes how data is processed in a system in term of input and output. A DFD Model uses a no. of notations
or symbol to represent flow of data.
1. External Entity
Input Output
2. Data flow
3. Process or Bubble
4. Data Store
Or
Rules for DFD-
1. Each Process should have at least one input and one Output.
Input Output
Process
2. Each data store should have at least one data flow in and one data flow out.
Output
Input
Data Store
Process2
Data
Data
or
Process1
Data Store
4. All the External Entities must be connected through a process and entity can provide something
to the software as well as the entity can consume some data from the software.
Input Software
Entity
Output
Level of DFD:
Levels of DFD:
Output
External Entity
External Entity
2. Level 1
o
Breaks the main process into sub-processes.
o
Shows data flow between sub-processes and external entities.
o
This is a more detailed version of the Previous level that includes all the database and various
important units.
External Entity
Process1
Output
Process2
Data Store
External Entities:
Single Process:
Railway Reservation System – The main system managing reservations, cancellations, train details,
and payments.
Data Flows:
From Passenger:
o
Reservation Request
o
Cancellation Request
o
Inquiry Request
o
Payment Details
To Passenger:
o
Ticket Details
o
Booking Confirmation
o
Cancellation Confirmation
o
Train Information
From Admin:
o
Train Schedule Updates
o
Fare Updates
To Admin:
o
Reports
o
System Logs
To/From Bank System:
o
Payment Request
o
Payment Confirmation / Failure
Processes in Level 1 DFD
Data Stores
External Entities
Passenger
Admin
Bank System / Payment Gateway
External Entity
Passenger
Data Flows
Element Description
Field Name The name of the data element or column
Data Type Type of data stored (e.g., INTEGER, VARCHAR, DATE)
Size Length or size of the data (e.g., 255 characters)
Constraints Rules applied to the field (e.g., NOT NULL, UNIQUE)
Default Value Predefined value if none is provided
Allowed Values Domain or range of acceptable values
Description Human-readable explanation of the field
Example Entry
1. Centralized Repository
o
Acts as a single source of truth for data definitions across the system.
2. Standardized Data Definitions
o
Ensures uniform naming conventions, data types, and formats are used consistently.
3. Metadata Storage
o
Stores information about the data (e.g., type, length, constraints), not the data itself.
4. Data Integrity Support
o
Helps maintain data accuracy and consistency through rules and constraints.
5. Improved Communication
o
Facilitates better understanding between developers, analysts, designers, and stakeholders.
1. Structured English
Description: Uses a limited form of English that follows specific rules and syntax, combining
natural language with programming-like constructs (like IF, THEN, WHILE).
Example:
2. Decision Tables
Description: A tabular method for representing complex logic involving multiple conditions and
actions. Each row represents a rule.
Structure:
o
Conditions: Inputs or tests
o
Actions: Outputs or decisions
o
Rules: Columns that link conditions to actions
3. Decision Trees
Description: A tree-like structure showing decisions and their possible consequences, including chance
outcomes.
Features: Easier to understand than tables in some scenarios.
4. Flowcharts
Description: Diagrams that represent the flow of control in a process using standard symbols.
Symbols include:
o
Rounded Rectangle: Start/End
o
Parallelogram: Process
o
Diamond: Decision
o
Arrows: Flow direction
5. Pseudocode
Description: Informal, high-level description of a process using a mixture of natural language and
programming logic.
Example:
Software Testing is the process of evaluating and verifying that a software application or system meets the
specified requirements and works as expected. The goal is to find bugs, ensure quality, and improve
performance before releasing software to users.
1. Manual Testing
Testers manually execute test cases without using tools.
2. Automated Testing
Tests are run automatically using tools/scripts (like Selenium, JUnit, TestNG).
Categories of Testing
A. Functional Testing
B. Non-Functional Testing
💻 Implementation Phase
What it is:
The Implementation phase is where the actual coding or programming happens. After the design is complete,
developers start building the system according to specifications.
Key Activities:
1. Code Development: Translating design into source code using programming languages.
2. Integration: Combining modules and ensuring they work together.
3. Unit Testing: Testing individual components for correct functionality.
Output:
A working software system that’s ready for system testing and deployment.
Maintenance Phase
What it is:
Once the software is deployed and in use, it enters the Maintenance phase. This is often the longest phase in the
SDLC.
Types of Maintenance:
Key Goals:
Keep the system running smoothly.
Adapt to new requirements.
Minimize downtime and user disruption.
Quick Example:
During Implementation, you write the code, integrate features, and test the app.
During Maintenance, you fix bugs users report, add new features, and ensure it works on the latest
iOS/Android versions.
Need of Testing
The need for testing in software engineering is critical for ensuring that a software product is reliable,
functional, and meets user expectations. Here's a breakdown of why testing is necessary:
Testing helps catch bugs and defects before the software goes live.
Early detection reduces the cost and effort needed to fix issues.
Confirms that the software performs the functions that stakeholders expect.
Helps avoid costly business failures due to unmet requirements.
4. To Ensure Security
Functional and usability testing ensures that users can interact with the software easily and effectively.
A good user experience leads to higher user satisfaction and retention.
1. Changeover
"Changeover" refers broadly to the transition process from an old system to a new one. The goal is to move
from the existing setup to a new software solution with minimal disruption. There are several types of
changeover strategies — the next two terms (pilot and parallel) are examples.
2. Pilot Changeover
A pilot changeover is when the new system is introduced to a small group of users or a specific
department first.
Purpose: To test the new system in a real environment without exposing the entire organization to
potential risks.
If successful, the system is then rolled out to the rest of the organization.
Pros: Low risk, manageable feedback, early problem detection.
Cons: May delay full implementation, requires support for both systems during the pilot.
Example: A university introduces a new grading portal to just the engineering department before expanding to all
faculties.
3. Parallel Changeover
In a parallel changeover, both the old and new systems run at the same time for a certain period.
Users input the same data into both systems and compare outputs to ensure consistency.
Pros: Very safe — if the new system fails, the old one is still functional.
Cons: Expensive, labor-intensive, and may confuse users.
Example: A bank runs its old transaction system alongside the new one for a month to confirm the new system handles
all operations correctly.