Upload
andrew-tate
View
221
Download
1
Tags:
Embed Size (px)
Citation preview
Devon M. Simmonds 1
Dr. Devon M. SimmondsComputer Science Department
University of North Carolina, [email protected]
Presentation to ISIS
Research Group
@UNCW on 7/12/2011.
Understanding
Software Engineerin
g
Devon M. Simmonds 2
University of Technology, Jamaica
Ph.D. Colorado State University
My Story
United States
Devon M. Simmonds 3
3
• Computer science - solving problems with the aid of a computer
Motivation
Computers are everywhere!
Devon M. Simmonds 4
4
• Computer are everywhere!
Devon M. Simmonds 5
5
• And there are good computer jokes!
Motivation
“Witness testifies on Software Security”
Devon M. Simmonds 6
6
• And there are good computer jokes!
Motivation
“Witness testifies on Software Speed”
Devon M. Simmonds 7
7
• Solving problems with the aid of a computer• We want to instruct the computer to perform tasks.• Humans communicate through natural languages: English, Spanish, French,
etc.• The computer has its own language!
– Bits and bytes, 0’s and 1’s – machine language• So humans and computers speak different languages!
• 1st Problem: – How do we give instructions to a computer to do what we want it to
do if we speak different languages?
Problems in Computer Science
???
A communication problem
Devon M. Simmonds 8
8
Employ an Interpreter
How do we solve the communication problem?
• What language should the interpreter speak?– Human & machine language
• 2nd Problem:– Human language is ambiguous!
Problems in Computer Science
Devon M. Simmonds 9
9
Motivation
Interpreter
• The process of writing instructions for a computer to execute is called programming.
• The written instructions is called a program or software.
Programming language
Machine language
How do we solve the problem of language
ambiguity?
Machine language
Devon M. Simmonds 10
10
Writing Programs
Translation
Programming language
Machine language
PEOPLE COMPUTER
0100 10000000 10100000 01010000 0001
105Add
0100 10000000 10100000 01010000 0001
105Add
Push
Div
Mult
Subtract
Add
Assembly Instructions
Push
Div
Mult
Subtract
Add
Assembly InstructionsHigh-level Program
for(int i=0; i<10; i++) System.out.println(list[i]);
Large software systems: 4 x 106 – 100 x 106
Devon M. Simmonds 11
11
Hardware vs. Software
• The early decades (40s – 60s)
– Main focus of attention - computer hardware. • Building faster, simpler, and, more efficient
machines.
ENIAC I - 1946 Modern Supercomputer
Devon M. Simmonds 12
12
Software problems
• Inability to predict time, effort, and costs.– Projects were often late and ran over
budget because there was little experience on which to base predictions
• Inability to deliver quality software.– Customers and developers accept that
software will always have defects– Software products are released with known
“list of bugs”
• Lack of enough competent software developers
Devon M. Simmonds 13
13
Rising software complexity!
• Complex, critical systems are pervasive!– Quality of life issues
• Consequences of errors are far-reaching– Consequences of errors are far-reaching
• Consequences of errors are far-reaching
network
A
B C
Wilmington
Chapel HillCharlotte
Devon M. Simmonds 14
14
Long-distance phone traffic routing software
Result: Loss of long-distance service in NE USACost of approx. $800 M (1990)
Missing break statement
…switch (caseIndex) {
case‘A’: route = routeA;…
break;…
case‘M’: route = routeM;
case‘N’: route = routeN;…
break;…}
Complexity + Non-rigorous Development
Mishaps
Devon M. Simmonds 15
15
• Problem:– Patients were given massive overdoses of radiation
• Cause:• Safety of software not considered• Software reused without testing• No architectural model.
• Result: at least 5 deaths!
The radiation therapy: Therac 25 Machine
Complexity + Non-rigorous Development
Mishaps
Devon M. Simmonds 16
16
Help! Help! Solution? – Engineer Software!!
Devon M. Simmonds 17
17
What is engineering?
– The application of scientific principles and methods to the construction of useful structures & machines
• Examples– Mechanical engineering– Civil engineering– Chemical engineering– Electrical engineering– Nuclear engineering– Aeronautical engineering
Devon M. Simmonds 18
18
What is Software engineering?
• The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.
Bauer/Pressman
Devon M. Simmonds 19
19
• Computer science - solving problems with the aid of a computer
• Artificial intelligence• Database management systems• Distributed systems• Computer graphics• Operating systems• Biometrics
• Software engineering
Engineering Software
Devon M. Simmonds 20
FAQs about software engineering
1. What is the process used to build software?2. What is the role of models in engineering
software?3. What are the costs of software engineering?4. What are the attributes of good software?5. What are the key challenges facing software
engineering?6. What are the prospects for employment in SE?
Devon M. Simmonds 21
21
The Software Engineering Lifecycle
• The process/activities of developing and evolving software
Systems Engineering
Requirements Analysis
Software Design
Implementation
Testing
Deployment
Evolution
1. What is the process used to build software?
Devon M. Simmonds 22
22
• Systems Engineering– Identify needs/problems– Allocation of roles
• Hardware• Procedures• Software
– Feasibility studies
Systems Engineering
Requirements Analysis
Software Design
Implementation
Testing
Deployment
Evolution
The Software Engineering Lifecycle
1. What is the process used to build software?
Devon M. Simmonds 23
23
The Software Engineering Lifecycle
• Requirements Analysis– Define goals, objectives, features of target software
Requirements Analysis
Software Design
Implementation
Testing
Deployment
Evolution
Systems Engineering
Identify needs, problems and allocate roles
1. What is the process used to build software?
Devon M. Simmonds 24
24
The Software Engineering Lifecycle
• Software design– Creating a blueprint for building the software
• Architectural design• Subsystem design• Detailed design• Procedural Design• User Interface Design• Database Design• Data Structures Design• Test case design
Requirements Analysis
Software Design
Implementation
Testing
Deployment
Evolution
Systems Engineering
Identify needs, problems and allocate roles
Define software features
1. What is the process used to build software?
Devon M. Simmonds 25
25
The Software Engineering Lifecycle
• Implementation– Creating the finished product – the program
• Coding – Writing code for the classes and operations
• Generate object code• Create Test cases• Create user manuals
Requirements Analysis
Software Design
Implementation
Testing
Deployment
Evolution
Systems Engineering
Identify needs, problems and allocate roles
Define software features
Create blueprint
1. What is the process used to build software?
Devon M. Simmonds 26
26
The Software Engineering Lifecycle
• Testing– Determining if the software has errors/fulfils its requirements
• Test planning• Unit testing• Subsystem testing• Integration testing• Regression testing• Test case design
Requirements Analysis
Software Design
Implementation
Testing
Deployment
Evolution
Systems Engineering
Identify needs, problems and allocate roles
Define software features
Create blueprint
Create code
1. What is the process used to build software?
Devon M. Simmonds 27
27
The Software Engineering Lifecycle
• Deployment– Making the software available for use
• Deployment/installation planning• Develop documentation• Hardware configuration• Installation• Software distribution• Training
Requirements Analysis
Software Design
Implementation
Testing
Deployment
Evolution
Systems Engineering
Identify needs, problems and allocate roles
Define software features
Create blueprint
Create code
Uncovering errors
1. What is the process used to build software?
Devon M. Simmonds 28
28
The Software Engineering Lifecycle
• Evolution– Managing the software
• Configuration management– Controlling change as software evolves
• Technical support• Software lifecycle activities
Requirements Analysis
Software Design
Implementation
Testing
Deployment
Evolution
Systems Engineering
Identify needs, problems and allocate roles
Define software features
Create blueprint
Create code
Uncover errors
Make software
available for use
1. What is the process used to build software?
Devon M. Simmonds 29
29
The Software Lifecycle
• General activities– Project management– Software estimation & scheduling– Training– Configuration management
Requirements Analysis
Software Design
Implementation
Testing
Deployment
Evolution
Systems Engineering
1. What is the process used to build software?
Devon M. Simmonds 30
FAQs about software engineering
1. What is the process used to build software?2. What is the role of models in engineering
software?3. What are the costs of software engineering?4. What are the attributes of good software?5. What are the key challenges facing software
engineering?6. What are the prospects for employment in SE?
Devon M. Simmonds 31
31
Models in Engineering
• Benefits of models– Help us understand and manage complex systems
– Communicate understanding
– Drive implementation
– Save resources
Engineering is a Model-Driven Discipline!
A - Making a V-cut. B - Receiving Inside Hand-off.
Roy Williams
Devon M. Simmonds 32
32
Model-Driven Development (MDD)
CodeCodeCodeCode
CreateCreateModelModel
ModelModel of the Program of the ProgramModelModel of the Program of the Program
AAAA
BBBBCCCC
SC_MODULE(producer){sc_outmaster<int> out1;sc_in<bool> start; // kick-startvoid generate_data (){for(int i =0; i <10; i++) {out1 =i ; //to invoke slave;}}SC_CTOR(producer){SC_METHOD(generate_data);sensitive << start;}};SC_MODULE(consumer){sc_inslave<int> in1;int sum; // state variablevoid accumulate (){sum += in1;cout << “Sum = “ << sum << endl;}
Using modelinglanguage
CompileCompileModelModel
Need modelcompiler
CompileCompileCodeCode
Binary instructionsBinary instructionsBinary instructionsBinary instructionsSC_MODULE(producer){sc_outmaster<int> out1;sc_in<bool> start; // kick-startvoid generate_data (){for(int i =0; i <10; i++) {out1 =i ; //to invoke slave;}}SC_CTOR(producer){SC_METHOD(generate_data);sensitive << start;}};SC_MODULE(consumer){sc_inslave<int> in1;int sum; // state variablevoid accumulate (){sum += in1;cout << “Sum = “ << sum << endl;}
Code-centric Development
ManuallyManually
Create CodeCreate Code
Using programming
language
• Realizing the dream – MDD challenges– Abstraction: specifying models– Model Transformation: creating new models from existing models– Code Generation: generating code from models, i.e. compiling models– Managing middleware: supporting model portability, reusability, etc.– Analysis: determining properties of models
Devon M. Simmonds 33
33
Model-Driven Development (MDD)
CodeCodeCodeCode
CreateCreateModelModel
ModelModel A AModelModel A A
AAAA
BBBBCCCC
SC_MODULE(producer){sc_outmaster<int> out1;sc_in<bool> start; // kick-startvoid generate_data (){for(int i =0; i <10; i++) {out1 =i ; //to invoke slave;}}SC_CTOR(producer){SC_METHOD(generate_data);sensitive << start;}};SC_MODULE(consumer){sc_inslave<int> in1;int sum; // state variablevoid accumulate (){sum += in1;cout << “Sum = “ << sum << endl;}
CompileCompileModelModel
CompileCompileCodeCode
Binary instructionsBinary instructionsBinary instructionsBinary instructionsSC_MODULE(producer){sc_outmaster<int> out1;sc_in<bool> start; // kick-startvoid generate_data (){for(int i =0; i <10; i++) {out1 =i ; //to invoke slave;}}SC_CTOR(producer){SC_METHOD(generate_data);sensitive << start;}};SC_MODULE(consumer){sc_inslave<int> in1;int sum; // state variablevoid accumulate (){sum += in1;cout << “Sum = “ << sum << endl;}
ModelModel B BModelModel B B
MMMM
BBBBCCCC
AAAA
PPPPKKKK
class Student { private: int age;
char name[40]; Address address;
public: void move(); void speak();
}
Devon M. Simmonds 34
34
What is complexity?
• The quality of being intricate and difficult to understand
Managing
Complexity
Devon M. Simmonds 35
35
Managing Complexity
• Is there a limit?
Managing
Complexity
Devon M. Simmonds 36
36
Forms of complexity
• Algorithmic• Structural• Behavioral• Computational (time, space)• Data structure• Graphical?
Managing
Complexity
Devon M. Simmonds 37
37
Essential vs. Accidental Complexity
• Fred Brooks: The Mythical Man-Month• Essential complexity: inherent in the problem and
cannot be eliminated by technological or methodological means– E.g., making airplanes fly
• Accidental complexity: unnecessary complexity introduced by a technology or method– E.g., building construction without using power
tools– …or, translating designs (models) into
programs without the help of computersChoose appropriate methods, techniques, tools.
Managing
Complexity
Devon M. Simmonds 38
Managing Complexity?
• Make engineering is a Model-Driven Discipline!
• Be rigorous in applying SE principles and techniques.
38
Managing
Complexity
Devon M. Simmonds 39
FAQs about software engineering
1. What is the process used to build software?2. What is the role of models in engineering
software?3. What are the costs of software engineering?4. What are the attributes of good software?5. What are the key challenges facing software
engineering?6. What are the prospects for employment in SE?
Devon M. Simmonds 40
What are the costs of software engineering?
• Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs– Costs vary depending on the type of system being
developed and the requirements of system attributes such as performance and system reliability
– Distribution of costs depends on the development model that is used
Question #3
Devon M. Simmonds 41
41
Economic and Management Aspects of SE
• Software production =development + maintenance (evolution)
• Maintenance costs > 60% of all development costs– 20% corrective – to fix defects– 30% adaptive – to accommodate changes to
external environment– 50% perfective – extend and/or refactor
Question #3
Devon M. Simmonds 42
42
Relative Costs of Fixing Software Faults
Requirements Specification Planning Design Implementation Integration Maintenance
1 2 3 410
30
200
Question #3
Devon M. Simmonds 43
FAQs about software engineering
1. What is the process used to build software?2. What is the role of models in engineering
software?3. What are the costs of software engineering?4. What are the attributes of good software?5. What are the key challenges facing software
engineering?6. What are the prospects for employment in
CS/SE?
Devon M. Simmonds 44
What are the attributes of good software?
• The software should deliver the required functionality and performance to the user
• Maintainability– Software must evolve to meet changing needs
• Dependability– Software must be trustworthy
• Efficiency– Software should not make wasteful use of system resources
• Usability– Software must be usable by the users for which it was
designed
• Etc.
Question #4
Devon M. Simmonds 45
FAQs about software engineering
1. What is the process used to build software?2. What is the role of models in engineering
software?3. What are the costs of software engineering?4. What are the attributes of good software?5. What are the key challenges facing software
engineering?6. What are the prospects for employment in
CS/SE?
Devon M. Simmonds 46
What are the key challenges facing software
engineering?• Legacy systems
– Old, valuable systems must be maintained and updated
• Heterogeneity– Systems are distributed and include a mix of hardware
and software
• Delivery– There is increasing pressure for faster delivery of
software
Question #5
Devon M. Simmonds 47
FAQs about software engineering
1. What is the process used to build software?2. What is the role of models in engineering
software?3. What are the costs of software engineering?4. What are the attributes of good software?5. What are the key challenges facing software
engineering?6. What attributes should a good engineer
possess?7. What are the prospects for employment in SE?
Devon M. Simmonds 48
48
Attributes of a Good Software Engineer
• Is a good engineer!• Can program in the large as well as in-
the-small.• Has a solid understanding of computing
and software.• Is comfortable with working with models
at different levels of abstraction.• Can communicate and work effectively
with other team members.
Question #10
Devon M. Simmonds 49
FAQs about software engineering
1. What is the process used to build software?2. What is the role of models in engineering
software?3. What are the costs of software engineering?4. What are the attributes of good software?5. What are the key challenges facing software
engineering?6. What are the prospects for employment in
SE?
Devon M. Simmonds 50
US Department of Labor 25 fastest growing
occupations in America between 2004 and 2014
1 Home health aides 56% Vocational certificate /On-The-Job training 2 Network systems and data communications analysts 55% Bachelor's
degree 3 Medical assistants 52% Vocational certificate /OJT 4 Physician assistants 50% Bachelor's degree 5 Computer software engineers, applications 48% Bachelor's degree 6 Physical therapy assistants 44% Associate degree 7 Dental hygienists 43% Associate degree 8 Computer software engineers, systems software 43% Bachelor's
degree 9 Dental assistants 43% Vocational certificate /OJT 10 Personal/ home care aides 41% Vocational certificate /OJT
http://hubpages.com/hub/Top25
Devon M. Simmonds 51
US Department of Labor 25 fastest growing
occupations in America between 2004 and 2014
11 Network and computer systems administrators 38% Bachelor's degree
12 Database administrators 38% Bachelor's degree 13 Physical therapists 37% Master's degree 14 Forensic science technicians 36% Associate degree 15 Veterinary technologists and technicians 35% Associate degree 16 Diagnostic medical sonographers 35% Associate degree 17 Physical therapy aides 34% OJT 18 Occupational therapist assistants 34% Associate degree 19 Medical scientists, except epidemiologists 34% Doctoral degree 20 Occupational therapists 34% Master's degree
http://hubpages.com/hub/Top25
Devon M. Simmonds 52
Fall 2009 Starting Salary Offers
Major 2009 SalariesPetroleum Engineering $85,417Chemical Engineering $66,675Mining & Mineral Engineering $62,802Computer Science $61,467Computer Engineering $60,844Electrical Engineering $60,509Nuclear Engineering $60,209Metallurgical Engineering $59,837Mechanical Engineering $59,222Industrial Engineering $58,230Materials Engineering $58,076Systems Engineering $56,943Actuarial Science $56,380Aerospace Engineering $55,943Engineering Technology $55,023Agricultural Engineering $54,690Architectural Engineering $54,690Physics $53,939
Bioengineering & Biomedical Engineering $53,417Information Sciences & Systems $52,886Civil Engineering $52,287Construction Science $51,753Management Information Systems $50,573Mathematics & Statistics $50,461Environmental Engineering $50,109
Devon M. Simmonds 53
Q u e s t i o n s ?
Summary &
Conclusion