Software
Engineering 1
                Week 1
    01
Introduction
                           What is Software ?
     ●   Software is more than just a program code
     ●   Software is the collection of computer programs, data ,procedures rules and associated
         documentation
                                                                                  Programs
Software Is Classified into The Following Two Classes:                            Software
                                                                        Data                  Documentation
1.   Generic Software:
o    Stand-alone systems that are marketed and sold to any customer who wishes to buy them.
• Examples: PC software such as office (word, excel), graphics programs, project management tools .
2.   Customized Software (bespoke):
o    Software that is commissioned by a specific customer to meet their own needs.
• Examples: embedded control systems, air traffic control software, traffic monitoring systems.
                        Software Crisis
●   Example 1 : Ariane 5 Explosion
European Space Agency spent 10 years and $7
billion to produce Ariane 5.
Crash after 36.7 seconds.
Caused by an overflow error. Trying to store a 64-
bit number into a 16-bit space.
                           Software Crisis
Example 2 : 1992, London Ambulance Service
 • Considered the largest ambulance service in the
   world.
 • Overloaded problem.
 • It was unable to keep track of the ambulances
   and their statuses. Sending multiple units to
   some locations and no units to other locations.
 • Generates many exceptions messages.
 • 46 deaths
            What is software engineering ?
o       Software engineering goes beyond simply writing code. It's a systematic and
        disciplined approach for developing, maintaining, and documenting software
        systems.
o       It encompasses the entire lifecycle of software, from the initial idea to design,
        development, testing, deployment, and ultimately, ongoing maintenance
    ●    Complex systems need a disciplined approach for designing,
         developing and managing them.
What is difference between software engineering and system engineering ?
o   System engineering is concerned with all aspects of computer-based systems
    development including hardware, software and process engineering. Software
    engineering is part of this more general process.
    What is difference between software engineering and computer science?
    Myths and misconception about Software engineering
     Myth 1: Software engineering                  Myth 2 Creativity has no place
     is all about coding.                          in software engineering, it's
                                                   all about following strict rules
•    Reality : While coding is a crucial       •    Reality : Software engineering
     skill, it's only one aspect of software        combines structured
     engineering.                                   methodologies with creativity,
•     It involves the entire software               focusing on innovative solutions,
     development lifecycle, including               user interfaces, and elegant code
     design, planning, testing, deploymen           structures to solve problems
     t, and maintenance
     Myths and misconception about Software
                  engineering
    Myth 3: All Projects Should                 Myth 4: Documentation Is a
    Follow the Same Development                 Waste of Time
    Process.
•   Reality : Different software projects   •   Reality : documentation plays a
    have unique requirements and                critical role in maintaining and
    constraints. Choosing the right             scaling software systems.
    approach for a specific project is      •   Well-written documentation
    crucial for its success                     improves code comprehension,
                                                facilitates, and assists in
                                                troubleshooting and debugging
           Attributes of Good software
• Good software should deliver the required functionality and performance to the
  user and should be maintainable, dependable and usable.
o Maintainability: software should be written in such a way that it may evolve to
  meet the changing needs of customer.
o Dependability: software dependability has a range of characteristics, including
  reliability, security and safety.
o Efficiency: efficiency includes responsiveness, processing time, memory
  utilization etc.…
o Usability: it should have an appropriate user interface and
  adequate documentation.
Software development
      life cycle
• What is Software Development Life Cycle?
• SDLC or the Software Development Life Cycle is a well-structured flow of phases that help
  an organization to produce software with the highest quality and lowest cost in the
  shortest time possible.
The SDLC Phases
SDLC models
• Is an abstract representation of a process It presents a description of a process from some
  particular perspective.
THE MOST COMMON SDLC Models:
The waterfall model represents the oldest, simplest, and most structured
methodology. Each phase depends on the outcome of the previous phase, and
all phases run sequentially.
 V-Shaped Model: An extension of the waterfall model, this SDLC
methodology tests at each stage of development. As with waterfall, this process
can run into roadblocks.
 Iterative/incremental models: based on repetition Developers create a version
very quickly and for relatively little cost, then test and improve it through rapid
and successive versions.
• The most common example of iterative/incremental SDLC models is agile models.
• The Agile models separate the product into cycles and delivers a working product
  very quickly.
• DevOps: a set of practices that aims to improve collaboration and
  communication between development and operations teams, with an emphasis
  on automating the software delivery process.
Activity
                             Assignment 1
●   Research and compare different SDLC models, identify and explain in detail at least
    five advantages and five disadvantages. And which is the most suitable model for
    specific scenarios For each model .
●   NOTE : Upload your PDF file through this form
●   https://forms.gle/MNESHLSKH1FBY3Mv8