KEMBAR78
Software Engineering Lesson 1 | PDF | Software Testing | Software Development Process
0% found this document useful (0 votes)
18 views21 pages

Software Engineering Lesson 1

it is about software Engineering

Uploaded by

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

Software Engineering Lesson 1

it is about software Engineering

Uploaded by

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

Software Engineering

Introduction to software & software engineering


Definition of key terms

Software
# A set of instructions or programs that tell a computer what to do.

Software engineering
# The application of engineering principles and techniques to the design,
development, testing, and maintenance of software systems
Types of software

1. System Software: Operating systems, device drivers, and utilities that


manage computer hardware resources.
2. Application Software: Programs that perform specific tasks or provide
services to users, such as word processors, web browsers, and games.
3. Utility Software: Programs that perform maintenance or management
tasks, such as disk formatting, backup, and antivirus software
Software development life cycle

1. Requirements Gathering: Identifying and documenting software


requirements.
2. Design: Creating a detailed design for the software system.
3. Implementation: Writing the software code.
4. Testing: Verifying that the software meets the requirements and works
correctly.
5. Deployment: Delivering the software to the end-users.
6. Maintenance: Updating, fixing, and improving the software after
deployment.
Software application domains
# Business Application Domains
1. Enterprise Resource Planning (ERP): Software for managing business operations, such as finance, HR, and supply chain
management.
2. Customer Relationship Management (CRM): Software for managing customer interactions, sales, and marketing.
3. Accounting and Financial Management: Software for managing financial transactions, accounting, and budgeting.
4. Human Resource Management: Software for managing employee data, payroll, benefits, and performance.
# Healthcare Application Domains
1. Electronic Health Records (EHRs): Software for managing patient medical records, history, and treatment plans.
2. Medical Imaging and Diagnostics: Software for analyzing medical images, diagnosing diseases, and developing treatment
plans.
3. Clinical Decision Support Systems: Software for providing healthcare professionals with clinical decision-making support.
4. Telemedicine and Remote Healthcare: Software for delivering remote healthcare services, including video consultations and
monitoring.
# Education Application Domains
1. Learning Management Systems (LMS): Software for managing online courses, assignments, and student progress.
2. Student Information Systems (SIS): Software for managing student data, enrollment, and academic records.
3. Online Courseware and Educational Resources: Software for creating and delivering online educational content.
4. Assessment and Testing Software: Software for creating, administering, and grading assessments and tests.
# Scientific and Engineering Application Domains
1. Computational Fluid Dynamics (CFD): Software for simulating fluid dynamics, heat transfer, and mass transport.
2. Computer-Aided Design (CAD): Software for designing, modeling, and simulating physical systems.
3. Scientific Computing and Simulation: Software for simulating complex scientific phenomena, such as climate modeling and
molecular dynamics.
4. Data Analysis and Visualization: Software for analyzing, visualizing, and interpreting large datasets.
# Games and Entertainment Application Domains
1. Game Engines: Software for creating, developing, and deploying games across various platforms.
2. Game Development Tools: Software for designing, testing, and debugging games.
3. Virtual Reality (VR) and Augmented Reality (AR): Software for creating immersive VR and AR experiences.
4. Multimedia and Graphics Software: Software for creating, editing, and manipulating multimedia content, such as images,
videos, and audio.
# Other Application Domains
1. Artificial Intelligence (AI) and Machine Learning (ML): Software for developing, training, and deploying AI and ML models.
2. Cybersecurity: Software for protecting computer systems, networks, and data from cyber threats.
3. Internet of Things (IoT): Software for connecting, managing, and analyzing data from IoT devices.
4. Mobile and Web Applications: Software for developing, deploying, and managing mobile and web applications.
Characteristics of software

# Functional Characteristics
1. Portability: Software can be run on different hardware platforms with minimal modifications.
2. Scalability: Software can handle increased workload, users, or data without compromising performance.
3. Reliability: Software consistently performs its intended functions without errors or failures.
4. Performance: Software executes efficiently, using minimal resources and time.
5. Security: Software protects data, prevents unauthorized access, and ensures confidentiality, integrity, and
authenticity
# Non-Functional Characteristics
1. Usability: Software is easy to learn, use, and navigate, providing a positive user experience.
2. Maintainability: Software is easy to modify, update, and repair, reducing maintenance costs and time.
3. Flexibility: Software can adapt to changing requirements, environments, or technologies.
4. Reusability: Software components can be reused in other applications or contexts.
5. Interoperability: Software can communicate and exchange data with other systems or applications.
# Quality Characteristics
1. Correctness: Software performs its intended functions correctly and
accurately.
2. Efficiency: Software optimizes resource usage, minimizing waste and
maximizing productivity.
3. Integrity: Software maintains data consistency, accuracy, and
completeness.
4. Availability: Software is accessible and usable when needed, with minimal
downtime or errors.
5. Supportability: Software provides adequate support, documentation, and
resources for users and maintainers.
Software engineering principles

1. Modularity: Breaking down a software system into smaller, independent


modules.
2. Abstraction: Focusing on essential features while hiding non-essential
details.
3. Separation of Concerns: Dividing a software system into distinct
components, each responsible for a specific concern.
4. Reusability: Designing software components to be reused in other
contexts.
Software engineering layered
approach
It is a framework for organizing and structuring software development activities. It consists of multiple layers, each representing
a different level of abstraction and focus.
# Layer 1: Requirements Layer
1. Eliciting requirements: Gathering requirements from stakeholders and users.
2. Analyzing requirements: Examining and refining requirements to ensure clarity and feasibility.
3. Specifying requirements: Documenting requirements in a clear and concise manner.
# Layer 2: Design Layer
1. Architecture design: Defining the overall structure and organization of the software system.
2. Component design: Designing individual components or modules of the software system.
3. Interface design: Defining the interfaces between components, modules, or systems.
# Layer 3: Implementation Layer
1. Coding: Writing the software code in a chosen programming language.
2. Testing: Verifying that the software meets the requirements and works correctly.
3. Debugging: Identifying and fixing errors or defects in the software.
# Layer 4: Testing Layer
1. Unit testing: Testing individual components or modules.
2. Integration testing: Testing how components or modules interact with each other.
3. System testing: Testing the entire software system.
# Layer 5: Deployment Layer
1. Deployment planning: Planning the deployment of the software system.
2. Deployment execution: Executing the deployment plan.
3. Post-deployment review: Reviewing the deployment process and identifying areas for improvement.
# Layer 6: Maintenance Layer
1. Corrective maintenance: Fixing defects or errors in the software.
2. Adaptive maintenance: Updating the software to adapt to changing requirements or environments.
3. Perfective maintenance: Improving the software's performance, functionality, or usability.
Software Process Framework

Phase 1: Requirements Gathering


1. Elicitation: Gather requirements from stakeholders and users.
2. Analysis: Examine and refine requirements to ensure clarity and feasibility.
3. Specification: Document requirements in a clear and concise manner.
Phase 2: Design
1. Architecture: Define the overall structure and organization of the software system.
2. Component: Design individual components or modules of the software system.
3. Interface: Define the interfaces between components, modules, or systems.
Phase 3: Implementation
1. Coding: Write the software code in a chosen programming language.
2. Testing: Verify that the software meets the requirements and works correctly.
3. Debugging: Identify and fix errors or defects in the software.
Phase 4: Testing and Validation
1. Unit Testing: Test individual components or modules.
2. Integration Testing: Test how components or modules interact
with each other.
3. System Testing: Test the entire software system.
Phase 5: Deployment and Maintenance
1. Deployment: Deliver the software system to the end-users.
2. Maintenance: Update, fix, and improve the software system
after deployment.
Software Process Framework Activities

Management Activities
1. Project Planning: Plan the project scope, timeline, budget, and resources.
2. Project Monitoring and Control: Track project progress, identify issues, and take corrective
actions.
3. Risk Management: Identify, assess, and mitigate project risks.
Engineering Activities
1. Requirements Engineering: Gather, analyze, and specify software requirements.
2. Software Design: Design the software architecture, components, and interfaces.
3. Software Construction: Write, test, and debug the software code.
Supporting Activities
1. Configuration Management: Manage changes to software components and documentation.
2. Quality Assurance: Ensure that software development processes meet quality standards.
3. Documentation: Create and maintain software documentation.
Software Process Model

# Software process framework models provide a structure for managing and guiding software development
projects, ensuring that they are completed efficiently, effectively, and to a high standard.
Waterfall Model
1. Sequential phases: Requirements, design, implementation, testing, deployment, and maintenance.
2. Linear approach: Each phase completes before the next one begins.
Agile Model
1. Iterative and incremental: Break down work into small chunks, and continuously improve.
2. Flexibility and adaptability: Respond quickly to change and prioritize customer satisfaction.
V-Model
1. Verification and validation: Emphasizes testing and validation at each stage.
2. Phases: Requirements, design, implementation, unit testing, integration testing, and system testing.
Spiral Model
1. Risk-driven: Focuses on identifying and mitigating risks early in the project.
2. Iterative development: Develops the system in a series of incremental releases.
Incremental Model
1. Iterative development: Breaks down the system into smaller, manageable pieces.
2. Incremental delivery: Delivers the system in increments, with each increment building on the previous
one.
Rational Unified Process (RUP)
1. Iterative and incremental: Emphasizes continuous improvement and delivery.
2. Use-case driven: Focuses on identifying and prioritizing use cases.
Scrum Framework
1. Agile principles: Emphasizes collaboration, flexibility, and continuous improvement.
2. Roles and ceremonies: Defines specific roles (e.g., Product Owner, Scrum Master) and ceremonies (e.g.,
Sprint Planning, Daily Scrum).
Kanban Framework
1. Visualize workflow: Emphasizes visualizing the workflow to identify bottlenecks and areas for
improvement.
2. Limit work in progress: Focuses on limiting the amount of work in progress to improve flow and efficiency.
Umbrella Activities
These are overarching activities that span across multiple phases or stages of the software development life
cycle. These activities provide essential support functions that ensure the successful completion of the project.
Project Management
1. Project Planning: Defining project scope, timeline, budget, and resources.
2. Project Monitoring and Control: Tracking project progress, identifying issues, and taking corrective
actions.
3. Risk Management: Identifying, assessing, and mitigating project risks.
Quality Assurance
1. Quality Planning: Defining quality standards, processes, and metrics.
2. Quality Control: Monitoring and controlling quality throughout the project.
3. Testing: Verifying that software meets requirements and works correctly.
Configuration Management
1. Configuration Identification: Identifying and documenting configuration items.
2. Configuration Control: Controlling changes to configuration items.
3. Configuration Status Accounting: Maintaining records of configuration item changes.
Documentation
1. Documentation Planning: Defining documentation requirements and standards.
2. Documentation Development: Creating and maintaining project documentation.
3. Documentation Control: Controlling changes to documentation.
Communication
1. Stakeholder Identification: Identifying project stakeholders and their communication needs.
2. Communication Planning: Defining communication strategies and plans.
3. Communication Execution: Executing communication plans and disseminating information.
Training
1. Training Needs Analysis: Identifying training needs for project team members.
2. Training Planning: Defining training strategies and plans.
3. Training Execution: Executing training plans and delivering training.
Software Myths

# Myth 1: Adding More People to a Late Software Project Will Speed It Up


Reality: Adding more people can actually slow down the project due to increased communication
overhead, training, and integration costs.
# Myth 2: Software Development Is a Linear Process
Reality: Software development is an iterative process, with requirements changing, and designs
evolving over time.
# Myth 3: The Best Software Is the One with the Most Features
Reality: Too many features can lead to complexity, usability issues, and maintenance problems. The best
software is often the one that balances features with simplicity and usability.
# Myth 4: Software Quality Is Ensured by Testing Alone
Reality: While testing is crucial, software quality is also influenced by design, coding practices, and
continuous integration.
# Myth 5: Agile Development Means No Planning or Documentation
Reality: Agile development emphasizes flexibility and adaptability, but still requires planning,
documentation, and continuous improvement.
# Myth 6: Open-Source Software Is Always Free and of High Quality
Reality: While open-source software can be free and of high quality, it's not always the
case. Quality and support can vary greatly depending on the project and community.
# Myth 7: Software Security Is Someone Else's Problem
Reality: Software security is everyone's problem. Developers, users, and organizations all
play a role in ensuring software security.
# Myth 8: Waterfall Development Is Always Bad
Reality: While agile development has gained popularity, waterfall development can still
be effective for certain projects, such as those with well-defined requirements and low
complexity.
# Myth 9: The Best Software Developers Are the Ones Who Write the Most Code
Reality: The best software developers are often those who write clean, maintainable, and
efficient code, rather than just focusing on quantity.
# Myth 10: Software Maintenance Is a Low-Skill Activity
Reality: Software maintenance requires a deep understanding of the codebase, as well
as problem-solving and analytical skills. It's a critical activity that requires skilled professionals.
The end
Psalms 46 vs 10

He says, “Be still, and know that I am God; I will be exalted among the nations,
I will be exalted in the earth.”

You might also like