SE 2 - Software Processes

Software Process

Software Process (Software methodologies)

  • Set of related activities that leads to the production of the computer
  • Development of the software from the scratch or modifing an existing system

What is UML - Unified Modeling Language

  • Usage:
    • It's a drawing language for softwares (diagrams)
    • No codes
    • Give an idea how software works
    • What it does
    • What are the inputs, outputs and processes
    • Helps to write code better
    • Saves time and mistakes later
📘 Name 🤔 What It Shows 🧸 Simple Example
Class Diagram The parts (like blueprints) of the software Like showing each LEGO house’s shape
Use Case Diagram What users can do Like showing what buttons a game has
Sequence Diagram Who talks to who and when Like a comic strip of people talking
Activity Diagram Steps in doing something Like showing how to make a sandwich 🥪
State Diagram How something changes over time Like a traffic light: red → green → yellow 🚦

Fundamental SE Processes

Common for all software processes
  • Specification
    • Defining what the system should do
    • Fucntionality of the software
    • Consraints on its operations
  • Design and imlimentattion
    • Define organization of the system [ sructured / object oriented ]
    • Impliment the system -- > put the system in use
  • Verication and Validation
    • Confirm the software specification meets the customer needs.
  • Evolution / Maintance
    • Change the system according to changing customer needs

Software Process Description

  • Products / outputs
    • Outcome of process activity after testing
  • Roles / actors
    • Who is responsible
  • Pre-conditions
    • What must be true before testing
  • Past-conditions
    • What must be true after teesting
  • Input
    • What produce after testing
Examples for these processes:
Process Example Diagram

Software Process Types

  1. Plan-driven Processes
    • Activities are planned
    • Progressed measured against plan
    • Used for formal documentation
  2. Agile Development
    • Incrimental Planing
    • Easy to change requirements
    • Flexible - less formal

What is "coping with change"?

  • Designing, developing and managing the system for changing requuirements, technology and context by minimizing cost and effort.

Two approches to reduce rework cost

  • Change anticipation
    • Developer thinks the system should change in future, so developer build it in a way to update easily when those requirements appear.
  • Change tolarance
    • Even if something change without expecting, but the system can handle it without any break-down.

Two ways of coping with changes

  • System Prototyping - simple model
    • Throw-away prototyping
      • Source code of prototyping is not use after preview prototype
    • Evolutionary prototype
      • Edit the source code for whole system
  • Incrimental Delivery - develop piece by piece

1. Waterfall Model

  • Requirement Analysis & Definition
  • System & Software Design
  • Implimantation
  • Testing
  • Deployment
  • Operation and maintance
Features Problems
Simple and easy to undersstand Late client feedback
Clear stucture and well documentation Inflexiable for evolution
Well define stages Risk of errors
Estaminishing final cost and date Not ideal for larger projects
Waterfall Model Diagram

2. Incremental Develompent

  • Develop the system parts by parts
  • Get user feedback for each small developed part
Advantages Disadvantages
Lower risk No completed documnetations
Flexiable to change Putting parts together is tricky
User can view every stage Not suaitable for complex systems
Devolopers can focused on small parts at once Later parts will not match as ealier parts
Incremental Development Diagram

3. Reuse - oriented Software Engineering

  • Use existing code for your project.
Advantages Disadvantages
Faster to build Parts may not be perfectly match
Save money and time Hard to modify some codes
Less bugs Don't know how it was built
Easy to maintaince Legal issues of copyright
Reuse-oriented Diagram

4. Rational Unified Process (RUP)

  • Setup by step processing the system
  • It has 4 big phases
    • Inception - what to build
    • Eloboration - how we build it
    • Constuction - let's build it
    • Transition - give some one to test and fix broken things
  • Not getting feedback from user to every developed part
Advantages Disadvantages
Has a clear 4 stages Not suatable for small projects
Find problem ealry by planning and testing Need a lot of plans and documents
Use for big systems to safe and clean work Bit slow and expensive if over-used
Support updates in development hard to adjust faster moving projects
RUP Diagram

5.Boehm's Spiral Model

  • Plan - check - build - test , repeat these steps in a every circle.
Advantages Disadvantages
Good for risky projects Need experts
Find problem ealry No specific documents
Flexiable to change Gets a lot of time
User gives feedback often Expensive
Spiral Model Diagram
Source: Software Engineering — Software Process and Software Process Models (Part 2) | by Omar Elgabry | Medium

Comments

Popular posts from this blog

SE 1 - Introduction