1 cs145 lecture 26 what’s next?. 2 what software questions do we study? where is software headed?
TRANSCRIPT
1
CS145 Lecture 26
What’s next?
2
What’s next?
• What software questions do we study?
• Where is software headed?
3
What software questions do we study
• Basic Questions• System Software• Network Software• Middleware• Information Systems• Scientific Computing
• Embedded and Real-Time Systems
• Graphics• Artificial Intelligence• Software
Engineering
4
Basic Questions
• Data structures for storing and representing different kinds of application data– Some kinds of structures
• Maps (map one type of object to another)• Trees, Graphs• Sets
• Analysis of Algorithms– Time and space efficiency of algorithms and data structures
• Computer Architectures– How to make computers work better with various kinds of
software• Better = Faster, Cheaper, Less Power Consumption, etc.
5
System Software
• System Software: Software that supports other kinds of software– As opposed to application software: Software that
faces the user
• Some kinds of system software:– Operating systems– Programming Languages
• Compilers and Virtual Machines
– Database Management Systems
6
Network Software
• Supports communication between systems and software– Definition and Implementation of communication
protocols
• Interesting protocols– TCP/IP– HTTP (as opposed to HTML)– FTP– SSL
7
Middleware
• Software that sits between systems and applications– Typically systems type software with more of an
application focus
• Some examples– Software for integrating different applications– Model Driven Architecture
• Build your integration software by drawing the right kinds of diagrams
8
Information Systems
• Usually systems that support the operation of a business– More generally: Systems that store and manipulate
business kinds of information
• Some interesting areas:– Data Base (the organization of data, not the underlying
software)– Business applications
• ERP, CRS, …
– Business rules• Just describe the rules and the necessary software is
automatically generated
9
Scientific Computing
• Large numeric computations for science and engineering applications
• Issues– Efficient algorithms for large computations– Efficient coordination of large computing resources
• Some examples– Predict the weather or climate– Wind tunnel– Simulate nuclear weapons– Protein folding
10
Embedded and Real-Time Systems
• Control operation of machines, equipment, etc.
• Some issues– Operating systems supporting real-time (deadline)
processing• Examples
– Fly an airplane– Drive a car– Run a factory– Record a television program– Run the graphics card in your computer
11
Graphics
• Generate realistic graphics (pictures, video) from digital descriptions
• Issues– Understanding how light interacts with physical
objects– Efficient algorithms
• Examples– Shrek, Gollum, Polar Express– Cleaning up old movies
12
Artificial Intelligence
• Software and systems that behaves as if they were intelligent
• This is a large area with many subareas:– Rule based systems– Neural Network– Natural language processing– Evolutionary algorithms– Machine Learning– Robotics– Game playing– Proving Software Correct
13
Software Engineering
• How to we go about building software?• Areas of interest
– Requirements, Requirements Management– Architecture and Design– Testing– Software Methodology and Process– Diagramming Software (e.g. UML)– Managing Building Software– Costing and Scheduling of Software Development
14
Where is software headed?
• How good is your crystal ball?• Programming languages and systems
– Try to make software developers more efficient
• Artificial Intelligence– More “intelligent” systems
• Business applications– Standard “easily tailorable” applications
15
Where is software headed? (continued)
• All areas– Make better use of increasing processing
power and storage capacity
• Software Engineering– “Software is always late and over budget”– Can we fix this?