[go: up one dir, main page]

0% found this document useful (0 votes)
33 views36 pages

Module 1

Uploaded by

Abdul Basit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views36 pages

Module 1

Uploaded by

Abdul Basit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 36

Topic 1: What is Software Engineering?

🧠 Definition of Software Engineering

 Software Engineering is the application of scientific principles to the design


and creation of software.
 It uses a systematic approach to:
o Collect and analyze business requirements.
o Design, build, and test software applications that meet those
requirements.

Historical Context & Evolution

 Late 1950s: Computing began; software engineering was undefined.


 1960s: Recognized as a formal engineering discipline.
 Trends shifted from ad hoc (informal) programming to standardized, scientific
methods.

⚠️The Software Crisis (Mid-1960s to Mid-1980s)

 Software often:
o Ran over budget.
o Was delayed.
o Contained unmanageable, buggy code.
 Software solutions became obsolete before completion due to fast tech
advancements.
 Small system methods failed to scale to large projects.

✅ Resolution of the Crisis

 Adoption of engineering principles helped resolve many issues.


 Standardized development methodologies improved scalability and structure.
 CASE (Computer-Aided Software Engineering) tools emerged:
o Categories:
1. Business analysis & modeling
2. Development tools (e.g., debugging)
3. Verification & validation
4. Configuration management
5. Metrics & measurement
6. Project management

Software Engineer vs. Software Developer

Aspect Software Engineer Software Developer


Scope Broader Narrower
Focus Systematic, big-picture approach Specific functionalities
Tasks Design, build, maintain entire systems Write code for individual features
Common in Large-scale projects Specific tasks within a project

Responsibilities of a Software Engineer

 Design, build, and maintain software systems.


 Write and test code.
 Consult with:
o Clients
o Third-party software vendors
o Security specialists
o Other team members

🔄 Influence on Modern Development

 Modern software development follows the Software Development Lifecycle


(SDLC).
o SDLC guides the steps for creating high-quality software.
o Further details on SDLC and software quality traits will follow in later
videos.

📝 Key Takeaways

 Software engineering = systematic, scientific approach to software


design/development.
 Engineers build systems; developers implement parts of those systems.
 Engineering principles and CASE tools helped resolve historical inefficiencies.
Topic 2: Insider’s Viewpoint: What is Software Engineering?

🧠 General Definitions of Software Engineering

 Engineering + Programming: Software engineering is the use of programming


languages combined with engineering principles to build digital products.
 These products may include:
o Web apps, mobile apps, desktop apps
o Operating systems and networking systems
 It's considered critical to modern society, enabling essential technological functionality.

Scope and Roles in Software Engineering

 Software engineering is a broad discipline, including multiple specialized roles such as:
o Frontend engineer
o Backend engineer
o Security engineer
o Mobile engineer
o Test engineer
o Full-stack engineer
o DevOps
o Cloud engineer
o Data engineer
o Machine learning engineer

🔄 Full Lifecycle Process

 Software engineering is more than coding—it includes:


o Designing, envisioning, implementing, supporting, and maintaining software.
o Begins before any code is written, at the idea stage.
o Involves a creative process that spans the entire lifecycle from concept to
maintenance and evolution.

Software Engineer vs. Developer: Different Perspectives

There is no universal agreement on the distinction, and it varies by region, company, and
background. The following viewpoints were shared:
📌 Broader View (Engineer > Developer)

 Engineering is seen as a broader term encompassing:


o Full system design
o Architecture
o Deployment
o Maintenance
 Development is viewed as:
o Writing and implementing code modules.
o More focused on specific tasks within the lifecycle.

📌 Semantic/Title-Based View

 Some consider the difference semantic or gatekeeping-based:


o Job titles may not reflect actual responsibilities.
o Individuals with non-traditional backgrounds (e.g., no CS degree) often find titles
used interchangeably.
o Roles like "full-stack developer" and "software engineer" often overlap heavily in
practice.

📌 Contextual View (Region/Industry Specific)

 In Canada:
o "Software Engineer" implies a licensed professional with training in ethics and
held to standards similar to civil or mechanical engineers.
o "Developer" or "Programmer" may not require this background.
 Immigration and legal documents also treat these titles differently.

🧭 Practical Takeaways

 In practice and job descriptions:


o Software engineer and developer roles are often used interchangeably.
o However, software engineers may be more involved in:
 System-level thinking
 Data handling and architecture
 Long-term design and planning
o Developers may be more focused on:
 Feature development
 App-building tasks
 The engineering mindset typically spans a longer time horizon with multiple
responsibilities, while development may be more narrowly scoped to implementation
tasks.
Topic 3: Intro to SDLC

🧠 What Is the SDLC?

 Software Development Life Cycle (SDLC) is a systematic process for developing


high-quality software within a predictable timeframe and budget.
 Main goal: Ensure the software meets the client’s business requirements.

🔁 Nature of the SDLC

 The SDLC consists of phases, each with its own process and deliverables.
 It includes planning, design, and development steps.
 Can be implemented using iterative approaches (i.e., repeating cycles).
 Benefits:
o Reduces risks and costs.
o Supports the delivery of deployable and efficient software.

History of the SDLC

 Originated in the mid-1960s due to:


o Increasing complexity of software.
o Growing need for structured development in large corporations.
o Demand for managing complex business systems and computational resources.
 Initially used the Waterfall model:
o A linear approach where software moves through sequential stages.
 Later adapted into iterative models to handle:
o Changing customer needs
o Shifting requirements

☑️Note: Different SDLC models like Waterfall and others will be covered in a later lesson.

✅ Key Advantages of the SDLC

1. Provides a Clear Process


o Replaces ad hoc development.
o Helps teams follow a repeatable and reliable process.
o Increases efficiency and reduces risk.
2. Discrete, Well-Defined Phases
o Every team member knows:
 What they should work on.
 When their part of the process is active.
o Enhances clarity and workflow management.
3. Facilitates Communication
o Enables better communication between:
 Customers
 Stakeholders
 Development teams
o Stakeholders can see where they fit in the process.
4. Improves Cross-Team Coordination
o Teams from different domains know:
 When their tasks start and end.
 When to handoff work to other teams.
5. Supports Iteration
o At the end of a cycle, the process can loop back.
o Allows for adding new requirements when needed.
6. Encourages Early Problem Solving
o Identifies and solves problems in early stages like design.
o Reduces costly errors during the coding phase.
7. Clearly Defined Roles
o Every team member has a specific responsibility.
o Prevents conflict and overlapping duties.

📝 Final Takeaways

 SDLC = A structured framework for software development.


 Originally created due to the growing complexity of software systems.
 Offers major benefits:
o Roadmap to reduce risk and boost efficiency.
o Better team and stakeholder communication.
o Clear responsibilities and support for iteration.
o Early-stage problem-solving.
Topic 4: Phases of SDLC
📘 Summary: Phases of the Software Development Life Cycle (SDLC)

🔢 The Six Core Phases of the SDLC

1. Planning
2. Design
3. Development
4. Testing
5. Deployment
6. Maintenance

Each phase is discrete—tasks in one phase do not overlap with the next.

Originally modeled as a linear Waterfall approach, but modern adaptations allow for iteration
to handle shifting requirements.

1️⃣ Planning Phase

 Purpose: Define requirements and scope.


 Also known as: Requirements, Strategy, or Analysis phase (varies by organization).
 Key Activities:
o Gather, analyze, and prioritize requirements.
o Consider:
 End users
 Purpose of the software
 Input/output data
 Legal/regulatory compliance
 Risks and QA needs
 Budget, time, and resource allocation
o Identify project team and assign roles.
o Estimate costs (labor and materials) vs. time.
 Prototyping may be used:
o To clarify vague requirements.
o As a small-scale version to test design ideas.
o Can also occur in other phases as needed.
 Output:
o A clearly approved Software Requirements Specification (SRS) document,
understood by both stakeholders and developers.
2️⃣ Design Phase

 Purpose: Convert requirements (SRS) into software architecture.


 Involves multiple team members for collaborative design.
 Stakeholders review and provide feedback.
 Prototypes can be built for demonstration.
 Output:
o A Design Document that outlines the system's architecture and guides
development.

3️⃣ Development Phase (a.k.a. Building or Implementation Phase)

 Purpose: Begin coding the software solution.


 Developers use the design document to assign and carry out tasks.
 Use of:
o Programming tools
o Languages and frameworks
o Organization-specific coding standards and software stacks

4️⃣ Testing Phase

 Purpose: Ensure the software is functional, stable, and secure.


 May involve a dedicated testing team.
 Testing types (manual, automated, or hybrid):
o Unit Testing
o Integration Testing
o System Testing
o Acceptance Testing
(Details covered in a later video)
 Bugs are:
o Reported
o Tracked
o Fixed and retested

5️⃣ Deployment Phase

 Purpose: Release software into the production environment.


 Can be staged:
o First deployed to User Acceptance Testing (UAT) environment.
o After client approval, released to production.
 Applies to:
o Websites
o Mobile apps
o Corporate software distribution systems

6️⃣ Maintenance Phase

 Begins after deployment into production.


 Key Activities:
o Fix remaining bugs or UI issues missed during testing.
o Gather feedback from real users and stakeholders.
o Identify unaddressed or new requirements.
o Suggest code enhancements for future releases.
 Possible Restart:
o If major changes are needed, the SDLC restarts with updated requirements.

📝 Final Takeaways

 SDLC phases follow a structured path from planning to maintenance.


 Each phase has a clear output, ensuring control and visibility.
 Allows for iteration and continuous improvement.
 Minimizes errors, improves quality, and aligns software with business goals.
Toipc 5: Building Quality Software
This video explains six essential software engineering processes that help ensure the creation of
high-quality software:

✅ 1. Requirements Gathering

 Purpose: Define what the software must do and how it should behave.
 Documented in the Software Requirements Specification (SRS).
 May include use cases to describe user flows and business needs.
 Four major types of software requirements:
o Functional Requirements – Describe features and behavior.
o External/UI Requirements – Define interfaces and user interactions.
o System Features – Include performance, capacity, etc.
o Non-functional Requirements – Address security, scalability, reliability, etc.

These categories will be discussed further in a future video.

2. Design

 Purpose: Convert requirements into a design structure ready for coding.


 Output: Software architecture and design documents.
 Activities include:
o Breaking requirements into components with clear:
 Behaviors
 Boundaries
 Interactions
o Specifying:
 System functions, performance, platform details
 Business rules and application logic
 APIs (how components interact or connect to databases)
 UI design and Database schemas

💻 3. Coding for Quality

 Code quality attributes:


o Maintainability
o Readability
o Testability
o Security
 Good quality code:
o Is bug-free, efficient, and well-documented
o Uses consistent formatting and naming conventions
 Best Practices:
o Follow standard coding patterns, styles, and conventions
o Use linters to catch syntax/style issues
o Include comments to explain logic for future developers

🧪 4. Testing

 Purpose: Ensure software meets requirements and is free from defects.


 Validates:
o Reliability
o Security
o Performance
o Efficiency
 Testing can be:
o Manual, Automated, or Hybrid
 Levels of Testing:
o Unit Testing: Tests individual components (done by developers)
o Integration Testing: Verifies interaction between components
o System Testing: Tests full system behavior
o User Acceptance Testing (UAT): Final testing by real end-users
 Types of Testing:
o Functional Testing
o Non-functional Testing
o Regression Testing

Details on testing types and levels will follow in another video.

🚀 5. Releases

 Release = distribution of a software version


 Types of releases:
o Alpha Release:
 First functional version shared internally with select stakeholders
 May lack features and contain bugs
o Beta Release (Limited Release):
 Shared externally with users outside the dev team
 Used in real conditions to find remaining bugs
o GA (General Availability):
 Final stable version for all users
 Incorporates feedback and fixes from alpha/beta stages

📚 6. Documenting

 Helps users and developers understand and use the software


 Two documentation types:
o System Documentation (for technical users):
 Includes: README files, architecture diagrams, inline code comments,
design specs, verification steps, and maintenance guides
o User Documentation (for non-technical users):
 Includes: User guides, manuals, help videos, online and in-app help
content

More about documentation will be covered in a later video.

📝 Final Recap

 ✅ Requirements Gathering – Establish what the software must do


 Design – Translate requirements into a buildable structure
 💻 Coding for Quality – Follow clean coding practices for reliability
 🧪 Testing – Verify correctness and stability
 🚀 Releases – Alpha → Beta → General Availability
 📚 Documenting – Aid both technical and non-technical users
Topic 6: Requirements
This video covers the requirement gathering process and three main documents used to
capture different types of software and system requirements: SRS, URS, and SysRS.

✅ Requirement Gathering Process (6 Steps)

Requirement gathering defines the problem to solve and documents how to solve it. The steps
are:

1. Identify Stakeholders
o Stakeholders = people affected by or involved in the project.
o Examples: decision-makers, end-users, admins, engineering, marketing, sales, and
support.
2. Establish Goals and Objectives
o Goals: Broad, long-term outcomes (e.g. business or customer outcomes).
o Objectives: Specific, measurable steps to achieve the goals.
3. Elicit Requirements
o Gather input using surveys, interviews, and questionnaires.
4. Document Requirements
o Must be clear, understandable, and aligned with goals/objectives.
5. Analyze and Confirm Requirements
o Ensure clarity, consistency, completeness.
o Review and approval from stakeholders.
6. Prioritize Requirements
o Use labels like:
 Must-have
 Highly desired
 Nice to have
o Order them within each category when possible.

📄 Key Documents Produced

1. SRS – Software Requirements Specification

 Most common document.


 Captures:
o What the software must do (functionalities)
o How well it must perform (benchmarks/service levels)
🔹 SRS Components:

 Purpose Statement:
o Intended use, audience, scope.
 Constraints, Assumptions & Dependencies:
o Constraints: Limitations (e.g., standards, hardware)
o Assumptions: OS, devices needed
o Dependencies: Other software or systems
 Types of Requirements:

1. Functional: Software behavior and logic


2. External Interface: Interactions with users, systems, or hardware
3. System Features: Specific functions required by the system
4. Non-Functional: Performance, security, quality, safety

2. URS – User Requirements Specification

 Describes business needs and user expectations.


 Written as:
o User Stories or Use Cases
 Answers:

1. Who is the user?


2. What function is needed?
3. Why does the user need it?
 Validated through User Acceptance Testing (UAT).
 Sometimes merged into the SRS.

3. SysRS – System Requirements Specification

 Often confused with SRS but is broader in scope.


 Includes both software and hardware requirements.

🔹 SysRS Contents:

 System capabilities and interfaces


 User characteristics
 Policy and regulatory requirements
 Personnel, performance, and security requirements
 System acceptance criteria
 Hardware and software expectations
📝 Final Recap

 📌 Requirement gathering involves:


o Identifying stakeholders
o Setting goals and objectives
o Eliciting, documenting, confirming, and prioritizing requirements
 📘 SRS: Functional, external, system, and non-functional requirements
 🧾 URS: User needs expressed as stories or use cases
 SysRS: Complete system-level specs including hardware, policies, and personnel
Topic 7: Software Development Methodologies
This video explains three major approaches to the Software Development Life Cycle (SDLC):

 Waterfall Model
 V-Shape Model
 Agile Methodology

It also compares their workflows, advantages, and disadvantages.

📌 Purpose of Software Development Methodologies

 Help teams structure the development process


 Clarify team communication
 Define how and when information is shared

1. Waterfall Model

🔄 Structure:

 Sequential model
 Each phase must complete before the next starts
 Customer only sees the product at the testing phase

🔧 Phases:

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

✅ Pros:

 Simple and easy to understand


 Clear, well-defined stages
 Easier to estimate budget and timeline due to upfront planning
❌ Cons:

 Inflexible to changes in requirements


 Late visibility for customers
 Difficult to make changes once development has started

2. V-Shape Model

🔄 Structure:

 Also sequential (like Waterfall)


 Follows a V-shaped flow:
o Left side = Verification phases
o Right side = Validation phases
 Emphasizes testing early in the cycle

🪜 V-Model Phases:

 Left (Verification):
1. Planning
2. System Design
3. Architecture Design
4. Module Design
 Bottom:

o Coding
 Right (Validation):

1. Unit Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing

✅ Pros:

 Simple and structured


 Test plans are created early, saving time later
 Clear traceability between requirements and tests

❌ Cons:

 Very rigid and hard to adjust


 Cannot handle changing requirements easily
 Changes late in the process are expensive
3. Agile Methodology

🔄 Structure:

 Iterative and incremental model


 Development happens in short cycles called sprints (1–4 weeks)
 Each sprint ends with a sprint demo and feedback loop
 Final stage is feedback, not maintenance

⚙️Agile Practices:

 Frequent delivery of working code


 Continuous stakeholder feedback
 After several sprints, a Minimum Viable Product (MVP) is released to validate
assumptions

📜 Agile Manifesto: 4 Core Values

1. Individuals & interactions over processes & tools


2. Working software over comprehensive documentation
3. Customer collaboration over contract negotiation
4. Responding to change over following a plan

✅ Pros:

 Flexible to new and changing requirements


 Continuous delivery and feedback
 Encourages stakeholder and customer involvement
 Focus on working code and collaboration

❌ Cons:

 Budgeting and scheduling can be unpredictable


 Scope is not always clearly defined upfront
 Requires experienced, collaborative teams

📊 Comparison of the Three Models

Feature Waterfall V-Shape Agile

Approach Sequential Sequential + Testing Iterative & Cyclical


Feature Waterfall V-Shape Agile

Flexibility Low Very Low High

Customer Feedback Late Late Continuous

Testing After coding Planned early In every sprint

Change Accommodation Difficult Very difficult Easy

Planning & Budgeting Predictable Predictable Challenging

Popularity Traditional projects Some regulated systems Most modern development

🧾 Final Recap

 Waterfall and V-Shape are traditional, sequential models that are simple but rigid.
 Agile is modern, flexible, and based on short development cycles and continuous
feedback.
 Agile is more adaptable to real-world software needs, though it poses challenges in
planning.
Topic 8: Software Versions
📌 Learning Objectives

 Understand the purpose of software version numbers


 Identify version formats
 Recognize the importance of compatibility across versions

🔢 What Are Software Versions?

 Version numbers communicate important information about software.


 They help users know what version they're using.
 They help developers track changes, updates, and patches.

📈 Format of Version Numbers

 Version numbers are usually made of 2, 3, or 4 number sets separated by periods (e.g.,
1.0, 2.1.3, 18.04.2).
 Format may vary by developer or software type.

🧩 Typical Meanings in Semantic Versioning

(Semantic versioning is a common standard, though not universally used)

Position Meaning

1st Number Major changes (e.g., new features, breaking changes)

2nd Number Minor changes (e.g., small improvements or enhancements)

3rd Number Patches (e.g., bug fixes)

4th Number Build number or date (e.g., internal tracking info)

🔹 Example: 3.2.5.8 → Major version 3, minor version 2, patch 5, build 8


🧪 Beta Versions

 Versions below 1.0, like 0.9, are often in beta/testing stage.

📅 Date-Based Versioning

 Some software uses release dates in version numbers.


o Example: Ubuntu 18.04.2
 Released: April 2018
 .2 = second point release/update

🔍 Finding Version Info

 Usually found in About or Help sections of the software.


 Example for Google Chrome:
o Click the 3 dots in top-right corner
o Go to Help > About
o Chrome displays the current version

🔄 Software Compatibility

 Compatibility issues often arise between older and newer versions.


 Updating to a newer version may fix such issues.
 Some programs are backwards compatible:
o Older files/programs still work with newer software versions.

✅ Key Takeaways

 Version numbers reflect a program’s update history.


 Semantic versioning typically uses 4-part numbering (major.minor.patch.build).
 Compatibility between versions isn't always guaranteed.
 Always check your software version to troubleshoot or ensure compatibility.
Topic 9: Software Testing

Video Summary: Software Testing

📌 Learning Objectives

 Define functional, non-functional, and regression testing


 Understand and compare the different levels of software testing

🧪 Purpose of Software Testing

 Ensures the software meets expected requirements


 Verifies that the application is error-free
 Involves creating test cases with:
o Steps
o Inputs
o Data
o Expected outputs
 Test cases are based on finalized requirements and vary by development method (e.g.,
Agile, Waterfall)

🔍 Categories of Testing

1. ✅ Functional Testing

 Focuses on functional requirements


 Uses black-box testing (no knowledge of internal code)
 Tests input-output behavior of the system under test (SUT)
 Can be manual or automated
 Ensures:
o Proper functioning of features
o Usability and accessibility
o Graceful handling of user errors and edge cases

2. 📊 Non-Functional Testing

 Focuses on attributes like:


o Performance
o Scalability
o Security
o Availability
 Verifies the SUT's behavior under different conditions:
o Load/stress handling
o Concurrent user access
o Multi-OS behavior
o Disaster recovery
o Documentation consistency

3. 🔁 Regression Testing (Maintenance Testing)

 Confirms that recent changes (e.g., bug fixes) haven’t broken existing features
 Involves re-running test cases
 Selection is based on:
o Frequent defect areas
o Frequently used features
o Recent changes
o Complex or unstable test cases

🧩 Levels of Software Testing

Each level focuses on testing at different stages of development to reduce time and avoid
redundancy.

1. 🧪 Unit Testing

 Tests individual functions/modules


 Conducted by developers
 Detects construction-level errors
 Improves code quality and development efficiency

2. 🔗 Integration Testing

 Combines unit-tested modules


 Identifies bugs in module interactions
 Uses black-box testing
 Detects issues such as:
o Logic conflicts between modules
o Communication failures
o Poor exception handling
o Unfinished or altered requirements

3. 🧷 System Testing

 Performed on a fully integrated system


 Validates against overall requirements
 Includes both functional and non-functional testing
 Conducted in a staging environment similar to production

4. ✅ Acceptance Testing

 Validates user/business requirements


 Performed by stakeholders or customers
 Confirms the system is ready for production
 Conducted during the maintenance phase

✅ Key Takeaways

 Functional testing checks core features via input-output testing


 Non-functional testing evaluates performance, security, and other attributes
 Regression testing ensures recent updates don’t break existing features
 Testing levels include unit, integration, system, and acceptance—each serving a different
purpose in SDLC
Topic 10: Software Documentation

✅ Purpose of the Video

After watching this video, you should be able to:

 List documentation formats


 Distinguish product vs. process documentation
 Describe categories and types of documentation
 Explain the purpose of standard operating procedures (SOPs)

📘 What is Software Documentation?

Software documentation is information describing:

 What the software is


 How to use it
It can include:
 Written (e.g., manuals)
 Video (e.g., tutorials)
 Graphical (e.g., flowcharts, diagrams)

It is essential at all stages of the Software Development Life Cycle (SDLC).

👥 Documentation for Different Audiences

 End-users
 Software developers
 QA engineers
 System administrators
 Other stakeholders

📂 Main Categories of Documentation

1. Product Documentation:
o Describes how the product works
o Focuses on software functionality
2. Process Documentation:
o Describes how to complete a task
o Ensures quality and consistent execution of processes

📄 Types of Product Documentation (5 categories)

1. Requirements Documentation
o Created in the planning phase
o Intended for developers, architects, QA
o Includes:
 Software Requirements Specifications (SRS)
 System Requirements Specifications
 User Acceptance Criteria
2. Design Documentation
o Written by software architects/developers
o Describes how software will be built
o Includes both conceptual and technical design documents
3. Technical Documentation
o Code comments
o Working papers and notes from engineers
o Helps developers understand code behavior
4. Quality Assurance (QA) Documentation
o For testing team’s strategy and progress
o Includes:
 Test plans, data, scenarios, cases, strategies
 Traceability Matrices (mapping tests to requirements)
5. User Documentation
o For end-users
o Explains how to operate, install, or troubleshoot software
o Examples:
 FAQs, Installation Guides, Tutorials, User Manuals

🧾 Standard Operating Procedures (SOPs)

 Detailed step-by-step written instructions


 Organization-specific guidance for completing complex but common tasks
 Go deeper than process overviews
 Examples:
o How to commit/merge code within an organization
 Can be in:
o Flowcharts
o Hierarchical outlines
o Step-by-step format
🔁 Maintaining Documentation

 Must be kept up to date, especially for:


o UI changes in cloud-based applications
 Updating usually occurs during maintenance phase of SDLC
 Documentation should be reviewed regularly for accuracy

📌 Key Takeaways

 Documentation formats: Written, Video, Graphical


 Process documentation: Describes how to complete a task
 Product documentation: Describes how the product works
 Product documentation includes:
o Requirements
o Design
o Technical
o QA
o User
 SOPs: Specific detailed procedures followed within an organization
Topic 11: Roles in Software Engineering Projects

✅ Learning Objectives

After watching this video, you should be able to:

 List common roles in a software engineering project


 Describe each role
 Explain the responsibilities of each role

👥 Common Roles in a Software Engineering Project

Note: Names and responsibilities may differ based on development methodologies (Agile vs.
Waterfall) or company-specific naming.

1. Project Manager / Scrum Master

 Project Manager (Waterfall):


o Plans, schedules, and budgets
o Allocates personnel and resources
o Executes the software plan
o Ensures smooth team communication
 Scrum Master (Agile):
o Facilitates team success and communication
o Focuses on people and collaboration
o Removes obstacles and promotes Agile values

2. Stakeholder

 Represents:
o Customers, end-users, decision-makers, sysadmins
 Responsibilities:
o Define project requirements
o Provide feedback and clarification
o Participate in beta and acceptance testing

3. System / Software / Solution Architect

 Designs and communicates system architecture


 Defines internal structure and technical aspects
 Provides technical guidance throughout the SDLC

4. UX (User Experience) Designer

 Focuses on user-centered design


 Balances usability with functionality
 Defines software behavior from the end-user’s perspective
 Designs interface flow and interaction

5. Software Developer

 Implements code based on:


o Design documents
o Requirements specifications
o UX designs
 Builds functional and technical components

6. Tester / QA Engineer

 Ensures product quality and requirement compliance


 Writes and executes test cases
 Identifies and reports bugs or deficiencies
 Provides feedback to developers

7. Site Reliability Engineer (SRE) / Ops Engineer

 Bridges development and IT operations


 Tracks incidents and leads post-incident reviews
 Automates systems and processes
 Troubleshoots and ensures operational reliability

8. Product Manager / Product Owner

 Defines the product vision and roadmap


 Understands client and user needs
 Guides development to deliver stakeholder value
9. Technical Writer / Information Developer

 Creates user-friendly documentation for non-technical audiences


 Supports end-users and feedback loops
 Writes manuals, FAQs, white papers, and press releases

📌 Key Takeaways

 Software projects involve diverse roles, each with specific responsibilities


 Roles include: project manager, stakeholder, architect, UX designer, developer, tester,
SRE, product manager, and technical writer
 Effective collaboration among roles ensures successful software development
Topic 12: Insider’s Viewpoint: Job Roles in Sotware
Engineering Team

✅ Learning Objectives

After watching this video, you should be able to:

 Understand how real-world engineering teams operate


 Identify common roles and responsibilities
 See how these roles collaborate in modern software development

👥 Key Roles Discussed & Their Responsibilities

1. Product Manager / Product Owner

 Works with sales, marketing, and stakeholders to define what needs to be built
 Aligns business goals with development priorities
 Often acts like a scrum master in Agile
 Leads standups, checks on blockers, helps resolve issues
 Provides clarity, timelines, and expectations

2. Project or Program Manager

 Supports the engineering team by:


o Setting up timelines
o Unblocking issues
o Keeping communication flowing
o Coordinating updates with stakeholders
 Helps “tie everything together” in complex projects

3. Software Engineers

 Core contributors responsible for:


o Writing code
o Translating business logic into computer logic
o Following UX designs and system architecture
 Vary in focus:
o Some specialize in architecture
o Others in coding, DevOps, infrastructure, or QA
4. Tech Lead / Senior Engineer

 Reviews code from team members


 Ensures architectural alignment
 Mentors junior developers

5. QA Engineers / Testers

 Receive completed features from developers


 Write and execute detailed test plans
 Report bugs and regressions
 Validate fixes and perform re-tests
 May specialize in test automation and CI/CD pipeline testing

6. UX Designers / UX Engineers

 Use tools like Figma to create:


o Interface specs
o Interactive mockups
o Wireframes
 Work closely with engineers to:
o Ensure design fidelity
o Iterate on user interfaces
 May collaborate with UX researchers for user feedback and usability studies

7. Site Reliability Engineers (SREs) / System Admins

 Handle:
o Deployment
o Monitoring
o Infrastructure reliability
 Collaborate with engineers to ensure smooth production releases
 Manage automation and incident resolution

🤝 Collaboration & Workflow Insights


 Most effective teams work collaboratively, not in silos
 Standups, group chats, and brainstorming sessions help cross-functional alignment
 Engineers don’t work alone—they constantly interact with other roles
 Close feedback loops improve code quality, user satisfaction, and delivery speed

📌 Key Takeaways

 Real software development is a team effort involving multiple specialized roles


 Common roles include product managers, tech leads, UX designers, developers, QA, and
SREs
 Communication and collaboration are essential for successful delivery
 Agile practices, such as regular check-ins and iterative development, support this
collaboration
Summary & Highlights

Congratulations! You have completed this module. At this point, you know:

 Software engineering is the application of scientific principles to the design and creation
of software.
 Responsibilities of a software engineer include designing, building, and maintaining
software systems.
 Using the SDLC can improve efficiency and reduce risks by:
 letting team members know what they should be working on and when
 facilitating communication between the customer, other stakeholders, and the
development team
 letting stakeholders know where they fit into that process and
 letting cross-domain teams know when they have completed their tasks so development
can move to the next phase.
 Common software engineering processes are requirements gathering, design, coding,
testing, releasing, and documenting.
 The requirement gathering process entails identifying stakeholders, establishing goals
and objectives, eliciting requirements from the stakeholders, documenting the
requirements, analyzing, prioritizing, and confirming the requirements.
 An SRS is a document that captures the functionalities that the software should perform
and also establishes benchmarks or service levels for its performance.
 A URS is a subset of the SRS that details user specification requirements.
 The SysRS contains the same information as an SRS, but can also additionally include
system capabilities, interfaces, and user characteristics, policy requirements, regulation
requirements, personnel requirements, performance requirements, security
requirements, and system acceptance criteria.
 Waterfall, V-shape model, and agile are all different methodologies for implementing the
software development life cycle.
 Functional testing is concerned with inputs and corresponding outputs of the system
under test, non-functional testing tests for attributes such as performance, security,
scalability, and availability. Whereas regression testing confirms that a recent change to
the application, such as a bug fix, does not adversely affect already existing
functionality.
 Types of documentation include requirements, design, technical, quality assurance, and
user.
 There are many different roles involved in a software engineering project. Some of them
include project manager or scrum master, stakeholder, system or software architect, UX
designer, software developer, tester or QA engineer, site reliability or Ops engineer,
product manager or owner, and technical writer or information developer.

You might also like