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 fuctionalityperformancemaintainabledependableusable
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
- Agile Development
- Waterfall Model
- DevOps
- Spiral Model
- Extreme Programming (XP)
- Rapid Application Development
- 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
- Runs on local computer , no need network
- Interactive transaction based application
- Execute on a remote computer but access using PCs or Terminals
- e-commerce application
- Food delivery apps
- Ticket booking platforms
- Execute on a remote computer but access using PCs or Terminals
- Embedded control system
- Software contorl systems , Control and manage hardware., majority of softwares.
- Engine Control Units - ECU
- Antilock Braking System - ABS
- Printers
- Software contorl systems , Control and manage hardware., majority of softwares.
- Batch Processing Systems
- Process data in large batches
- Payroll proccesing
- Utility bill generation
- Acedemic grading system
- Process data in large batches
- Entertrainment Systems
- Primaraliy for personal usage
- Video game consoles
- Meadia streaming platforms / devices
- Virtual reality
- Primaraliy for personal usage
- 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
- Developed by scienstists and engineers to model physical activity and situations.
- Data collection Systems
- Collect data from environmet using sensors , then send them to process.
- Traffic Controlling system
- Field data collecting applications
- Web analytical apps
- Collect data from environmet using sensors , then send them to process.
- Systems of system
- Composed (යොදනවා) on other computer systems.
- Ballistic Missile Defense System
- Integrated Healthcare Delivery System
- Composed (යොදනවා) on other computer systems.
- 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
- Computer system or application that incorporates AI to perfom a task.
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
Post a Comment