Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
20 views84 pages

Unit 1 - Final

This document provides an overview of software engineering, covering topics such as software development processes, types of software products, and the software development lifecycle (SDLC). It discusses various domains of software development, technologies used, challenges faced, and the importance of DevOps in enhancing collaboration and efficiency. Additionally, it outlines the phases of software release and maintenance practices essential for ensuring software effectiveness and reliability.

Uploaded by

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

Unit 1 - Final

This document provides an overview of software engineering, covering topics such as software development processes, types of software products, and the software development lifecycle (SDLC). It discusses various domains of software development, technologies used, challenges faced, and the importance of DevOps in enhancing collaboration and efficiency. Additionally, it outlines the phases of software release and maintenance practices essential for ensuring software effectiveness and reliability.

Uploaded by

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

UNIT 1

Introduction to Software Engineering

School or Dept. Name here 1


Topics Covered

The story of Software development and issues faced, Need for Systematic
process for addressing issues, Products, custom solutions, services, domains,
Technologies, Software life cycle, software development lifecycle, software
release process, source control, versioning, maintenance of software. DevOps.

Software Development Processes: Waterfall, Iterative, Spiral.

School or Dept. Name here 2


Software definition

School or Dept. Name here


Software Engineering definition

School or Dept. Name here


Legacy software

School or Dept. Name here


Examples of Software Development
• Web Development
• Mobile Development
• Software Tool Development
• Application Development
• Data Management Software Development
• Security Software Development
• Embedded Systems Development
• Cloud Computing Software Development

School or Dept. Name here


Work product of SDLC

Requirement gathering SRS

Design ER,DFD,Design document

Coding Source code

Testing Test plan

Maintanence
School or Dept. Name here User manual
Software Characteristics

School or Dept. Name here


Failure curve for Hardware

School or Dept. Name here


Failure curve for Software

School or Dept. Name here


School or Dept. Name here
School or
Ref: Cloud Dept.
Computing: TheoryName here
and Practice. By Dan
12
C. Marinescu
Changes in software over a span of 50
years
Era of computing Software

Early years Batch processing, customized software

Second era Multi users, real time systems

Third era Distributed systems

Fourth era Object oriented systems, expert systems,parallel


computing
School or Dept. Name here
Fifth era Mobile computing
School or Dept. Name here
School or Dept. Name here
School or Dept. Name here
School or Dept. Name here
School or Dept. Name here
School or Dept. Name here
School or Dept. Name here
School or Dept. Name here
Products
There are two kinds of software products:

1.Generic products These are stand-alone systems that are produced by a development organization and sold

on the open market to any customer who is able to buy them. Examples of this type of product include
software for PCs such as databases, word processors, drawing packages, and project-management tools. It
also includes so-called vertical applications designed for some specific purpose such as library information
systems, accounting systems, or systems for maintaining dental records.

2. Customized (or bespoke) products These are systems that are commissioned by a particular customer. A
software contractor develops the software especially for that customer. Examples of this type of software
include control systems for electronic devices, systems written to support a particular business process, and
air traffic control systems.

School or Dept. Name here


Custom Solutions
• Codebase/Source Code: The actual program written in a programming language. This is the core product
of software development.
• Executable/Binaries: Compiled versions of the source code that can be run on specific hardware and
operating systems.
• Documentation: Technical documentation, user manuals, and other written materials that provide
information about the software's design, functionality, and usage.
• Requirements Specification: A document outlining the functional and non-functional requirements of the
software, including features, constraints, and user expectations.
• Design Artifacts: Diagrams, flowcharts, and other design documents that illustrate the architecture and
structure of the software.
• Prototypes: Early versions of the software designed to demonstrate key features and gather feedback
from stakeholders.
• Test Cases and Test Plans: Documents outlining the testing strategy, including test cases and plans for
unit testing, integration testing, system testing, and acceptance testing.
• Bug Reports: Documents reporting issues and defects found during testing or in the production
environment.
School or Dept. Name here
• Release Versions: Different versions of the software released to users, each containing new
features, improvements, and bug fixes.
• User Interfaces (UI) and User Experience (UX) Designs: Designs and mockups for the
graphical user interface and the overall user experience of the software.
• Database Schemas: Definitions of the structure and organization of databases used by the
software.
• Configuration Files: Files that specify the configuration settings for the software, allowing
customization and adaptation to different environments.
• Installation Packages: Software installers or packages that facilitate the installation of the
software on users' machines.
• Maintenance and Support Documentation: Information on how to maintain, troubleshoot,
and support the software after it has been deployed.
• Training Materials: Materials created to train users or administrators on how to use and
manage the software effectively.
• Legal and Licensing Documents: Documents specifying the terms of use, licensing
agreements, and any legal considerations related to the software.

School or Dept. Name here 24


What is Utility Software?

School or Dept. Name here


School or Dept. Name here 26
Configuration services

School or Dept. Name here


School or Dept. Name here 28
Integrated services

School or Dept. Name here


Independent services

School or Dept. Name here


Domains
In software engineering, the term "domains" can refer to different contexts or areas of application where software development is applied.

•Web Development: Designing and building applications that are accessed through web browsers. This includes both front-end development (user interface)
and back-end development (server-side logic).

•Mobile App Development: Creating applications specifically designed for mobile devices, such as smartphones and tablets. This includes both Android
and iOS platforms.

•Desktop Application Development: Developing software applications that run on desktop computers, typically with a graphical user interface (GUI).

•Embedded Systems: Designing software for embedded systems, which are specialized computing systems embedded within other devices or systems.

Examples include firmware for IoT devices or control systems in appliances.

•Database Development: Focusing on designing, implementing, and maintaining databases. This involves creating database structures, optimizing queries,
and ensuring data integrity.

School or Dept. Name here


• Game Development: Creating interactive and immersive software for entertainment purposes. Game

development involves graphics programming, physics simulation, and user interaction design.

• Cloud Computing: Developing applications that leverage cloud services, including Infrastructure as

a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS).

• Artificial Intelligence (AI) and Machine Learning (ML): Building software that uses AI and ML

techniques to analyze data, make predictions, and automate tasks.

• Cybersecurity: Developing software to secure systems and data from unauthorized access, attacks,

and vulnerabilities.

• Networking: Creating software for network management, communication protocols, and data

transmission.

School or Dept. Name here 32


• Healthcare Informatics: Developing software solutions for healthcare systems, including electronic health
records (EHR), medical imaging, and healthcare data analysis.

• Financial Software: Creating applications for financial institutions, including banking software, accounting
systems, and financial analysis tools.

• E-commerce: Building software for online retail and electronic commerce platforms, including shopping cart
systems and payment processing.

• Educational Software: Developing software for educational purposes, such as learning management systems
(LMS), educational games, and interactive learning applications.

• Human-Computer Interaction (HCI): Focusing on designing software with a strong emphasis on user
experience and interface design.

School or Dept. Name here 33


Technologies
Software engineering encompasses a wide range of technologies that are used to design, develop, test, deploy,
and maintain software applications. The choice of technologies depends on various factors, including the type of
application, project requirements, scalability needs, and the preferences of the development team.

Programming Languages: Java, Python, JavaScript, C#, C++, Ruby, PHP, Swift, Kotlin, Go, Rust: Different
programming languages are chosen based on factors such as application type, performance requirements, and
developer preferences.

Web Development: HTML, CSS, JavaScript, TypeScript, React, Angular, Vue.js: These technologies are used
for building interactive and dynamic web applications.

Mobile App Development: Swift, Objective-C, Kotlin, Java, Flutter, React Native: For developing mobile
applications on platforms like iOS and Android.

School or Dept. Name here


Server-Side Development: Node.js, Django, Flask, Ruby on Rails, ASP.NET, Spring: Frameworks and technologies
for building server-side logic and APIs.

Database Management Systems (DBMS): MySQL, PostgreSQL, MongoDB, Oracle, Microsoft SQL Server: Used
for managing and organizing data in databases.

Cloud Computing: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP): Platforms
providing cloud infrastructure, storage, and services for deploying and scaling applications.

Containerization and Orchestration: Docker, Kubernetes: Technologies for packaging, deploying, and managing
applications in containers for improved scalability and portability.

Version Control: Git, GitHub, GitLab, Bitbucket: Tools for version control to track changes in the source code and
facilitate collaboration among developers.

DevOps Tools: Jenkins, Travis CI, CircleCI: Continuous Integration (CI) tools that automate the testing and
integration of code changes.

Code Editors and Integrated Development Environments (IDEs): Visual Studio Code, IntelliJ IDEA, Eclipse:
Software for writing, testing, and debugging code efficiently.

School or Dept. Name here 35


Testing Frameworks: JUnit, Selenium, Jest, pytest: Tools for automating and performing tests to ensure the quality of the software.

Front-End Libraries and Frameworks: React, Angular, Vue.js: Libraries and frameworks for building interactive user interfaces in web
applications.

Backend Frameworks: Express (Node.js), Django, Flask, Ruby on Rails, Spring: Frameworks for building the server-side logic and handling
HTTP requests.

Microservices Architecture: Spring Boot, Flask, Express, .NET Core: Technologies for developing microservices, which are small,
independent, and scalable services that work together.

Artificial Intelligence and Machine Learning: TensorFlow, PyTorch, scikit-learn: Libraries and frameworks for developing AI and machine
learning applications.

Cybersecurity Tools: Wireshark, Metasploit, Nmap: Tools for analyzing and securing network communication and identifying vulnerabilities.

Collaboration and Communication Tools: Slack, Microsoft Teams, Jira, Confluence: Tools for team collaboration, communication, and project
management.

Monitoring and Logging Tools: ELK Stack (Elasticsearch, Logstash, Kibana), Prometheus, Grafana: Tools for monitoring and logging
application performance and health.

School or Dept. Name here 36


School or Dept. Name here
School or Dept. Name here
School or Dept. Name here

Waterfall Model: Sequential development with well-defined stages.


Agile Methods: Iterative and incremental development with a focus on

adaptability.


DevOps: Integration of development and operations for continuous delivery

School or Dept. Name here


Waterfall Model

School or Dept. Name here


School or Dept. Name here
School or Dept. Name here
Challenges in Software Engineering

School or Dept. Name here


44
Common challenges faced in software development
 Security concerns

 Quality assurance

 Keeping up with new technologies

 Managing changing requirements

 Collaboration issues

 Time Delays

 Dealing with legacy code: Developers often have to work with legacy code.

 Balancing short-term and long-term goals: we need to ensure that the software is maintainable and scalable in the long-term.

School or Dept. Name here


45
School or Dept. Name here 46
Software Release Process

School or Dept. Name here


Phases of a Software Release Process
1. Define specific requirements for the release

2. Specify your acceptance criteria

2. Test your software in production

4. Iterate and refine your product

5. Release your product to end-users

School or Dept. Name here


How Does The Software Release Process Typically
Work?

School or Dept. Name here


How Does The Software Release Process Typically
Work?

School or Dept. Name here


School or Dept. Name here
Source control (or version control)

School or Dept. Name here


Version control

School or Dept. Name here


Types of Version Control Systems

School or Dept. Name here


Local Version Control Systems

School or Dept. Name here


Centralized Version Control Systems

School or Dept. Name here


Distributed Version Control Systems

School or Dept. Name here


School or Dept. Name here
Software Maintenance
Software maintenance is a crucial phase in the software engineering life cycle that involves activities to keep a software system
operational, enhance its capabilities, and address issues that may arise during its use. The goal of software maintenance is to ensure that the
software remains effective and efficient throughout its lifecycle.

Corrective Maintenance: This type of maintenance involves fixing defects, bugs, or errors discovered during or after the software
deployment. Corrective maintenance aims to restore the software to a working state and improve its reliability.

Adaptive Maintenance: Adaptive maintenance is performed to adapt the software to changes in its environment, such as operating system
updates, hardware changes, or other external factors. The goal is to ensure that the software remains compatible with evolving
technologies.

Perfective Maintenance: Perfective maintenance focuses on improving the functionality and performance of the software. It includes
enhancements, optimizations, and additions to existing features, often based on user feedback or changing business requirements.

Preventive Maintenance: Preventive maintenance aims to anticipate and address potential issues before they become critical. This
involves activities such as code refactoring, performance tuning, and security updates to proactively enhance the software's maintainability.

School or Dept. Name here


Key Practices in Software Maintenance

Bug Tracking and Resolution: Maintain a systematic approach for identifying, tracking, and resolving software defects. Use bug tracking
systems to prioritize and manage reported issues.

Version Control and Configuration Management: Utilize version control systems to manage changes to the codebase. Configuration
management helps maintain consistency across different environments and configurations.

Documentation: Keep comprehensive documentation for the software, including design documents, user manuals, and API documentation.
This helps new developers understand the system and facilitates easier maintenance.

Testing: Regularly conduct testing, including regression testing, to ensure that new changes do not introduce new defects and that the
existing functionality remains intact.

Code Review: Perform code reviews to ensure code quality, adherence to coding standards, and to catch potential issues early in the
development process.

Monitoring and Logging: Implement monitoring and logging mechanisms to detect and diagnose issues in real-time. This helps identify
performance bottlenecks, errors, and other issues that may arise during runtime.

School or Dept. Name here 60


Security Updates: Stay vigilant about security vulnerabilities and apply timely updates to address them. Regularly review
and update dependencies to ensure a secure software environment.

User Feedback and Communication: Encourage users to provide feedback and promptly address their concerns.
Effective communication channels with users can help in understanding their needs and expectations.

Legacy System Management: If dealing with legacy systems, create a plan for their maintenance and eventual migration
or replacement. Legacy systems may require special attention due to outdated technologies and potential security risks.

School or Dept. Name here 61


DevOps:
• DevOps is a software development approach emphasizing collaboration,
automation, and continuous delivery to provide high-quality products to
customers quickly and efficiently.
• DevOps breaks down silos between development and operations teams to enable
seamless communication, faster time-to-market, and improved customer
satisfaction.
• It allows a team to handle the complete application lifecycle, from development
to testing, operations, and deployment. It shows cooperation between
Development and Operations groups to deploy code to production quickly in an
automated and repeatable manner.
• Every phase of the software development lifecycle, including planning, coding,
testing, deployment, and monitoring, is heavily automated in DevOps.
• This improves productivity, ensures consistency, and lowers error rates in the
development process.
School or Dept. Name here 62
School or Dept. Name here
DevOps: Delivery Pipeline

School or Dept. Name here


School or Dept. Name here
C’s of DevOps

1. Continuous Development

2. Continuous Integration

3. Continuous Testing

4. Continuous Deployment/Continuous Delivery

5. Continuous Monitoring

6. Continuous Feedback

7. Continuous Operations

School or Dept. Name here


Benefits of DevOps

School or Dept. Name here


Benefits of DevOps

School or Dept. Name here


Waterfall Model

School or Dept. Name here 3-69


The Classic Model / The Linear Model
/ the Waterfall Model
• Used when requirements are well understood in the beginning.
• Also called the classic life cycle.
• A systematic, sequential approach to software development.
• Begins with customer specification of Requirements and progresses
through planning, modeling, construction, and deployment.
• This Model suggests a systematic, sequential approach to software
development that begins at the system level and progresses through
analysis, design, code, and testing.

School or Dept. Name here


Conti..

Figure: The Waterfall Model

School or Dept. Name here


Advantages:

•Simple goal.
•Simple to understand and use.
•Clearly defined stages.
•Well understood milestones.
•Easy to arrange tasks.
•Process and results are well documented.
•Easy to manage.
•Each phase has a specific deliverable and a review.
•Works well for projects where requirements are well understood.
•Works well when quality is more important than cost/schedule.
•Customers/End users already know about it.

School or Dept. Name here


Disadvantages:

•It is difficult to measure progress within stages.


•Cannot accommodate changing requirements.
•No working software is produced until late in the life cycle.
•Risk and uncertainty are high with this process model.
•Adjusting scope during the life cycle can end a project
•Not suitable for complex projects
•Not suitable for projects of long duration because in long-running projects requirements are
likely to change.
•Integration is done as a "big-bang” at the very end [Single shot], which doesn't allow
identifying any technological or business bottleneck or challenges early.
•Users can only judge quality at the end.
•Attempting to go back two or more phases is very costly.
•Percentage completion of functionality cannot be determined in the middle of the project
development because functionality will be undergoing some phase.
•Very risky, since one process can not start before finishing the other.
School or Dept. Name here
Problems

•Real projects rarely follow the sequential flow since they are always iterative
•The model requires requirements to be explicitly spelled out at the beginning, which is
often difficult.
•A working model is not available until late in the project time plan.
•The customer must have patience.

School or Dept. Name here


Incremental Process Model

C- Communication
P - Planning
M – Modeling
C - Construction
D - Deployment

School or
Delivers Dept. Name
software here
in small but usable pieces, each piece builds on pieces already delivered
The Incremental Model

School or Dept. Name here


The Incremental Model

School or Dept. Name here


Evolutionary Model: Spiral Model

School or Dept. Name here


Spiral Model

School or Dept. Name here


Spiral Model

School or Dept. Name here


Spiral Model

School or Dept. Name here


Spiral Model

Customer communication: it is established

Planning: planning is done, resource time ,schedule

Risk analysis: technical & management risks are calculated

Engineering: tasks required to build one /more applications are carried out

Construction & release: tasks required to construct ,test & install the application

Customer evaluation: customer feedback is obtained based on customer

evaluation
School or Dept. Name here
Advantages of spiral model:

 Requirements can be identified at every stage

 Risks can be identified & rectified

 Disadvantages

• Management is more complex.


• End of project may not be known early.
• Not suitable for small or low risk projects and could be expensive for small projects.
• Process is complex
• Spiral may go indefinitely.
• Large number of intermediate stages requires excessive documentation.

School or Dept. Name here


Thank You

School or Dept. Name here

You might also like