Intro to Software Engineering for non-IT Audience
-
Upload
yuriy-guts -
Category
Technology
-
view
189 -
download
4
Transcript of Intro to Software Engineering for non-IT Audience
© Yuriy Guts, 2013
What do we actually do?
Myth #1
Our job is to operate computers
Computer is merely a helper tool in programming
Programmers can even weave cloth!
(Google: Jacquard Loom)
Myth #2
Machines can think
They do only what they’re told to do. Not quite yet.
Our job:
Describe absolutely precisely what to do
We have to speak the same language
For computers, this language is numbers
How to tell the computer to add 19+23?
Example:
160 16 1 138 30 17 1 2 195 162 18 1 180 76 205 33 19 23
(Intel 80386, MS-DOS, .COM)
Fact:
Modern software consists of MILLIONS of instructions
Is there a simpler way?!
Let’s create a more human-readable language and let the computer translate it to numbers
.model tiny
.386 .data num1 db 19 num2 db 23 sum db ? .code org 100h
start: mov al, num1 mov bl, num2 add al, bl mov sum, al mov ah, 4ch int 21h end start
How is THAT simpler?!
To make things easier, we must abstract away from unimportant details
This is why new technologies appear
They allow us to focus on some details and ignore others
How to tell the computer to add 19+23?
Example (Python):
print 19 + 23
That’s way better
How to ensure efficient and reliable storage?
Some famous abstractions
Databases
Networks
How to search and edit data conveniently?
How to make machines collaborate?
How to split difficult tasks among multiple machines?
Myth #3
It’s a boring and tedious job
An engineer is concerned with applying scientific knowledge and ingenuity to develop solutions for
technical, social and economic problems.
Ingenuity — [Wiki] The quality of being clever, original, and inventive, often in the process of applying ideas to
solve problems or meet challenges.
Code is only an end result. A good engineering design is comparable to art.
Types of software
Desktop Web
Mobile Embedded
(by means of access)
Desktop
• Rich hardware capabilities
• Many applications already have online alternatives
• Adobe Photoshop
• Microsoft Office
• “Heavy” 3D games
Examples
Specifics
Software for workstations and laptops
Web
• Distributed nature
• Many simultaneous users
• Unified access from many devices
• Wikipedia
• Google Search
Examples
Specifics
Software accessible over the Internet
Mobile
• Energy-efficiency, limited capabilities
• Sensors: GPS, gyro, accelerometer, ...
• Large family of devices and sizes
• Foursquare
• iBooks
Examples
Specifics
Software for handheld consumer devices
Embedded
• Limited user interaction
• Low-level programming
• Speed and reliability constraints
• Medical devices
• Airplane “black boxes”
• Security systems
Examples
Specifics
Specialized device-specific integrated software
Popular programming languages
Java C#
JavaScript Objective-C
C++ Python
PHP Ruby
Functional (Scala, Haskell, Erlang, Lisp family...)
(as of Q1 2013)
Myth #4
Learning the “right” language will make you a good professional
Every language is a tool, know when to use it
Learning and switching
Types of IT professionals
System Analysts Project Managers
Software Architects Technical Writers
Software Developers System Administrators
QA Engineers Support Engineers
Software development lifecycle
Requirement analysis + user experience prototyping
Choice of technology stack & architecture
Design and implementation
Quality assurance and monitoring
Deployment
Maintenance and support iterative
Q & A