Software Engineering Relationship to Computer Engineering

Download Report

Transcript Software Engineering Relationship to Computer Engineering

Software Engineering
Professor Stuart Steele,
Associate Head
Department of Computer Science
and Engineering, NYU Poly
April 12, 2012
Agenda
• What is Software Engineering?
• Relationship to Computer Science, Computer
Engineering and Electrical Engineering
• Types of software
• Case Studies
• Software Business Model
• Software Research
What is Software Engineering
• The application of a systematic, disciplined,
quantifiable approach to the development,
operation, and maintenance of software and a
study of those approaches that allow
“application of engineering to software”
• The ability to design and develop a software
intensive system, on time, within costs to an
acceptable level of performance
History
• October 1968 – International Conference in
Garmisch Germany coined the name Software
Engineering
• Challenge – how to define the process to build
high quality software items
• Development models were created
Related Course Programs
• Computer Science first program – 1962
Purdue University
• Software Engineering first named – 1968
• Software Engineering (Masters) – Wang
Institute – 1982 -1988
• Software Engineering first program – 1996
Rochester Institute of Technology
• Computer Engineering first program – 1971
Case Western Reserve University
Support of Software Engineering
Software Engineering Work Flow
Software Engineering
Computer Engineering
Computer Science
Electrical Engineering
Number of Software Professionals
Computer SE
& Programmers
2008
2018
1, 335,600
1, 619,200
%
21
Computer
Programmers
426, 000
414, 400
-3
Computer Software
Engineers
(Applications and
System Software)
909,600
1,204,800
32
Knowledge Areas of Software Engineering
• Computing Foundations
• Mathematical &
Engineering
Fundamentals
• Software Modeling &
Analysis
• Software Requirements
• Software Design
• Software Construction
• Software Verification &
Validation
• Software Evolution
• Software Process
• Software Quality
• Software Management
• Software Testing
• Software Maintenance
• Configuration Mgt.
• Software Engineering
Mgt.
Computing Foundations
• Problem Solving
Techniques
• Abstraction
• Programming
Fundamentals
• Programming Languages
Basis Debugging Tools &
Tech.
• Data Structures
• Algorithms & Complexity
• Basic Concept of a
System
• Basic Concept of a
System
• Computer Organization
• Compiler Basics
• Operating Systems
• Data Base and Mgt.
• Network Communication
• Parallel & Distributed
Computing
• Basic User Human
Interface
• Secure Design & Code
Type of Requirements
• Functional
• Performance, peak and average
• Reliability
• Usability
• Security
• Practices
Specifications can be text, tables, equations,
graphics, math symbols
Characteristics of Requirements
•
•
•
•
•
Explicit
Implicit/implied
Derived
Design
Statistical
Good Requirements
1 Understandable by end users
8 Modifiable
2 Non-prescriptive
9 Testable (Verifiable)
3 Correct
10 Feasible
4 Complete
11 Clear
5 Concise (Succinct)
12 Unambiguous
6 Precise
13 Consistent
7 Traceable
A requirement should be
What not How
Precise
From a data stream of 15 elements, reposition the
lowest element value to become the first element in the
data stream for later processing.
Multiple low values?
What if all values are the same?
Consistent
The system shall track detected airborne objects
traveling at speeds from 200 to 400 miles per hour
inclusive.
Later in specification:
The system shall flag all detected airborne objects
traveling at speeds from 300 to 500 miles per hour.
This does require the system to flag some objects
that it is not required to track.
Problems? Could be ok but? These requirements
are probably inconsistent.
Software Types
•
•
•
•
•
Developed
Reused
Commercial of the shelf (COTS)
Open Source
Non Development (NDI)
Commercial of the Shelf (COTS)
• Can apply to both hardware and software
• A major ingredient in modern software
intensive systems
• Requires business, legal and technical skills
• Series of major issues.
COTS (Commercial of the Shelf
Software)
Three major characteristics of COTS:
• Source code not available to the application
developer
• The evolution is not under the control of
the application developer
• Sold, leased, licensed at advertised prices
COTS (Commercial of the Shelf
Software)
Three major characteristics of COTS:
• Source code not available to the application
developer
• The evolution is not under the control of
the application developer
• Sold, leased, licensed at advertised prices
What is OSS/FS?
Defined 1997
Open Source Software/Free Software programs
have licenses giving users the freedom to:
- run the program for any purpose
- study and modify the program
- freely redistribute copies of either the
original or modified program
Often supported via commercial companies
Job Titles
•
•
•
•
•
•
•
•
•
Software engineer
Software analyst
Computer software engineer
Programmer – High Order Languages
Programmer – assembly
Computer engineer
Systems engineer
Support personal– QA, Configuration Mgt.
Project managers
Hardware and Software System
Sensor
Processing
display
Hardware/Software Integration
Computation
Computer
sensor
sampler
consider
algorithm
accuracy
update rate
cpu utilization
memory utilization
interrupt processing
fixed point arithmetic
display
Buffer built in
the display
Algorithms (1,2,3)
Error Profile
1
Time & memory
2
Round off
Error
Truncation
3
Quantization
Sample rate
Impact of OS overhead vs. sample rate?
Impact of interrupt latency?
Hardware Software Co - Design
•
•
•
•
•
•
Define the functionality of the subsystem
Design the Hardware First
Design the Software Second
Design the Hardware Second
Design the Software First
Best result when the hardware and the
software are designed together
• The results show appropriate trade-offs
Examples
•
•
•
•
•
•
•
Real – time systems
Embedded systems
Fire Control System
Enterprise systems
Social networks
Manufacturing
Complexity Impact
Applications
•
•
•
•
•
•
•
•
•
•
•
•
•
Communication
Education
Entertainment
Hospitality
Archaeology
Transportation
Recreation
Medicine
Art
Biology
Finance
Manufacturing
Environment
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Government
Fashion
Law
Sports
Home Management
Automotive
Agriculture
Patent Law
Energy
News
Publishing
Security
Aviation
Retail
Software Development Processes
•
•
•
•
Waterfall (Classical)
Agile (More flexible)
Various other approaches
Nonlinear Software Engineering (Complexity
Theory)
Software Development Process (Waterfall)
systems
feedback and iteration
software
incremental development
requirements
software
design
detailed
design
algorithms
code, unit test
architectures
component test
formal methods
design techniques
component
component
integration
test
implementation methods
hardware/software trade-offs
system test
testing methods
maintenance
hardware
people
Extreme Programming Process (Agile)
user stories
values
acceptance test criteria
iteration plan
Release
software
increment
project velocity
computed
simple design
CRC cards
spike solutions
prototypes
planning
design
refactoring
coding
test
unit test
acceptance testing
pair programming
continuous integration
Software Engineering Diagrams and
Tools
• IBM Rational Architecture Tool Set
Requirements
Class Diagrams
Sequence Diagram
Code
A change in a diagram or in the code, will automatically
update diagrams and code
Class Diagram
Sequence Diagram
Code
5 Elements for Quality Software
Development
•
•
•
•
•
Integrated Development Environment
Source Control
Automated Testing
Automated Build
Defect Management
Ariane 5
Spacecraft Launch and Destruction
Ariane 5 situation, Famous Software
Issue
• An input to a specific module made the
module overflow, an exception occurred
shutting down the system and its backup
• The system was used before but this mission
was similar but had a different trajectory
• What kind of problem was it? Software,
Systems, Hardware, Project Planning, etc.
What Makes Software So Hard
• Software projects are design projects, not production
• The ”doing” disciplines of software are difficult to
perform, monitor, and measure. Productivity
differences between individuals are huge.
• Software lacks laws and first principles
• Software lacks a measurable unit of work
• “Supporting disciplines – planning, estimation,
prediction and observation, are quite difficult
• No “permanent” platform to build on
Social networks
• The Web and the new frontier
• Frameworks and flexible development
• A great deal of hands on flexibility
Software and the Business Model
• Recently, Hewlett-Packard announced that it
may stop its struggling PC business
• This allows more investing in software where it
sees more potential for growth
• Why – “Software is Eating the World” Marc
Andreessen (Creator of Netscape browser)
• Prominent new internet companies are building
real high growth, high margin, highly defensible
businesses.
What is Going On!
• More and more major businesses and industries
are being run on software and delivered as online
services. Movies, agriculture, etc.
• After six decades into the computer revolution,
four decades since the invention of the
microprocessor, two decades into the rise of the
modern internet, much of the technology to
transform industries through software can be
widely delivered at global scale
What is Going On (cont.)
• Over two billion people now use the internet.
• At least five billon people to own smart
phones in the next 10 years
• In 2000, the cost of a customer running a basic
internet application was $150,000 per month.
In today’s Amazon’s cloud the cost is $1,500.
Highlights
• Largest video service by number of
subscribers is a software company, Netflix
• Today’s dominant music companies are
software companies too: Apples iTunes,
Spotify and Pandora.
• Today’s fastest growing entertainment
companies are videogame makers – again
software
Highlights (Cont.)
• Today’s fastest growing telecom company is
Skype, a software company that was just
bought by Microsoft for $8.5 Billion.
• Linkedin is today’s fastest growing recruiting
company.
• Software controls the car.
• Wal-Mart, leading real-world retailer uses
software for logistics and distribution
capabilities.
Challenges
• Hard economic issues
• New companies must prove their worth
• Shortage of skilled and educated personnel
Future Trends
• Cloud Computing
• Crowdsourcing
• Mobile high level of integrated
communications
• Software is everywhere
• How to handle Software Complexity?
Software Research - Microsoft
•
•
•
•
•
•
•
Browser/JavaScript
New Ways to Program
Modeling and Design
Contracts and Types
Verification
Symbolic Methods
Testing
• Runtime Reliability
• Performance
• Concurrency &
Parallelism
• Measurement &
Prediction
• User Studies
• Critical Technologies
The Final Issue
• Software is everywhere
• How to handle complexity ?
Employment Situation
BEST Jobs 2011 – Wall Street Journal
Online
1) Software Engineer
2) Math
3) Actuary
4) Computer System Analyst
Future IT growth anticipated
Other Job Assessment Sources
• Career Cast –Top Ten
• CNN Money –Top Ten
• Software Engineer # 1
• Computer System Analyst, #5 and # 7
• Mobile Applications Design/Development #7
The Fastest Growing Jobs
2011 – 2014 CNN Money
1) Network System & Data Communication Analyst
3) Computer Software Engineer – Applications
4) Computer Software Engineer – Systems Software
5) Network and Computer Systems Administrator
6) Data Base Administrator