SE 1 - Introduction

Software Engineering Notes

History of software engineering

  • First digital computer apeared in eraly 1940s.
  • It came up with stored program architecture ( store program instructions in electrical memory or von neumann architecture)
  • Program languages started to apear in 1950s. ( Fortran , ALGOL , COBOL )
  • Software crysis - facing to chalangers to develop softwares , increasing complexity and demand
  • NATO in 1968 is organized to discuss software crysis

Software engineering Key-words

  • deliver the required fuctionality 
  • performance
  • maintainable
  • dependable
  • usable

Importance of Software

  • Economical compared to hardware
  • Automation & efficiency 
  • Commiunication & Creativity
  • Data managment
  • More systems are software controlled

Importance of Software Engineering

  • Society relies on advanced software systems to  produce reliablity , maintainability and usability , economically and quickly.It can run in long in low cost.

Difference between software engineering and computer science

Computer science is focued on theories , fundamentals and new concepts while software engineering is developing new systems through the concepts and maintain them.

The Best SE Techniques and Methods

There is not a specific technique or method in SE , it depends on the software type  ( Security Software , Real-Time Software , Critical Systems ) , user requirements , background of developing team

Security Software - Antivirus , Firewallls , Password managers
Real-Time Software - Flight Control System  , Medical Devices , Online Gaming
Critical Systems - Air traffic contorl system , Nuclear power plant system , Spacecraft and navigation system

  1. Agile Development
  2. Waterfall Model
  3. DevOps
  4. Spiral Model
  5. Extreme Programming (XP)
  6. Rapid Application Development
  7. V-Model (Validation and verification )

Software Products

Generic Products - stand-alone application that are marketed and sold to any customer who wants it.
Customized Products - Systems that made for specific target people or organization to meet thier requirements.
Open-Source Products - Free and commiunity driven softwares
Embedded Systems - Software Integrated into hardware devices

Attributes of a Good Software

  • Deliver required fuctionality 
  • Deliver a good performance
  • Usability and Maintainable 
  • Testablity and Reliablity

Essential Attributes for quality software

  • Efficiancy 
  • Acceptability
  • Maintainability
  • Dependability
  • Security

Fundamental In SE

  • Software specification
    • Mainly customer requirements , both developers and customer involve
  • Software design and development
    • Design the system and program it
      • Database Structure
      • Class diagram
      • Timing diagram
      • Colloboration diagram
      • Case diagrams
      • SRS - Software Requirement Specification
  • Software validation
    • Testing to ensure user requirements are met
  • Software evolution / maintance
    • Change the build software to meet changing user requirements and marketing perpose.

Software Cost

Cost that spend when developing a system or maintaining it -- ( > greater than mark ) 
  • Software cost > Computer system cost
  • Development cost > Testing cost -
    • Development cost - 60%
    • Testing cost - 40%
  • Maintaince cost > Development cost

Application Types

Software is a broad term referring to any set of instructions that tells a computer what to do, while an application is a specific type of software designed for a particular task or set of tasks.
  • Stand-alone applications
    • Runs on local computer , no need network
      • Office package
      • CAD softwares
  • Interactive transaction based application
    • Execute on a remote computer but access using PCs or Terminals
      • e-commerce application
      • Food delivery apps
      • Ticket booking platforms
  • Embedded control system
    • Software contorl systems , Control and manage hardware., majority of softwares.
      • Engine Control Units - ECU
      • Antilock Braking System - ABS
      • Printers
  • Batch Processing Systems
    • Process data in large batches
      • Payroll proccesing
      • Utility bill generation
      • Acedemic grading system
  • Entertrainment Systems
    • Primaraliy for personal usage
      • Video game consoles
      • Meadia streaming platforms / devices
      • Virtual reality
  • System for modeling and simulation
    • Developed by scienstists and engineers to model physical activity and situations.
      • Computational fluid dynamics
      • Electronic circuit simulators
      • Agent based modeling
  • Data collection Systems
    • Collect data from environmet using sensors , then send them to process.
      • Traffic Controlling system
      • Field data collecting applications
      • Web analytical apps
  • Systems of system
    • Composed (යොදනවා) on other computer systems.
      • Ballistic Missile Defense System
      • Integrated Healthcare Delivery System
  • AI based system
    • Computer system or application that incorporates AI to perfom a task.
      • Virtual personal assistanst
      • Self driving vehicals
      • Image and facial recognize system

Software Project Failures

  • People
    • Social interaction
    • Skills
    • Motivation
  • Tasks
    • Sale customers
    • Requirements
    • Project managment
    • Quality Control
    • Software Testing
  • Methods
    • Devepolment Work
    • User project team
    • Top Management
    • External agents
  • Environment
    • Project compinity
    • Available assets
    • Policies technologies
    • Bussiness domain
    • Organization Structure

  • Examples
    • Incomplete reqiurements
    • Lack of user involvement
    • Lack of resource
    • Unrealistic Expectations
    • Lack of executive support
    • Changing requrements & specifications

Web Software Engineering

Increased availability of software and developing highly distributed services based systems.Provide commiunication functionality over the internet ( web service ) , Provide platform for running apps , us e cloud computing.
  • Google docs
  • Notion
  • Amazon
  • Github
  • Moodle

Key Challangers 

  • Meeting Deadlines
  • Colloboration & Commiunication
  • Technical Debt
  • Security concerns
  • Keeping up with new technologies
  • Complexity managment
  • Trustworthy
  • Reduce delivery times

Software engineering Ethics

  • Respect the confidentiality of employees and clients
  • Shouldn't mispresent the level of competence
  • Should be aware of local lawas governing the use of intellecctual property
  • Protect intellectual (බුද්ධිමය) peroperties of employees and clients.
  • Shouldn't use technical knowledge to misuse other computers
  • Must behave in ethical and responsible way
  • Follows a set of morally correct principles

Comments

Popular posts from this blog

SE 2 - Software Processes