Programming Languages
and Software Engineering
© Ed Green
Penn State University
All Rights Reserved
Topics to be discussed
 Programming
Languages
 Language as a
concept
 Types of
programming
languages
 Compilation and
interpretation
 Code generation
10/3/2015
 Software
Engineering
 What is “software
engineering”?
 Process of
software
development
 Alternative
methodologies
 CMMI
Programming Languages and
Software Engineering
2
Language as a concept
 Method of communicating
 Spoken
 Written
 Conversation – communication
between two entities
 Common characteristics of language –
grammar
 Lexical elements – language components
 Syntax – rules for using language
componets
10/3/2015
Programming Languages and
Software Engineering
3
An example of language (1)
 Language = English
 Lexical elements – parts of speech
 Nouns
 Verbs
Lexical
 Adjectives
elements
 Adverbs
?
 Pronouns
Syntax?
 Syntax – rules of use
 Capitalization
Computer languages are
 Punctuation
 Verb tense agreement an extension of spoken
 Singular versus plural language necessitated by
the information age.
10/3/2015
Programming Languages and
Software Engineering
4
Types of programming
languages (1)
 Visual (graphic) – code derived from
user-supplied graphic placement
 Non-procedural – code written in user
speak with minimal computer jargon
 Procedural – code written in computer
jargon (primarily)
 Assembly – code written in humanintelligible format but analogous to
executable instructions
 Machine (binary, object) – code
written in binary {e|0,1} as computerexecutable instructions
10/3/2015
Programming Languages and
Software Engineering
5
Programming language
dependencies
VISUAL
LANGUAGE
PROCEDURAL
LANGUAGE
ASSEMBLY
LANGUAGE
MACHINE
LANGUAGE
NONPROCEDURAL
LANGUAGE
10/3/2015
Programming Languages and
Software Engineering
6
Why different programming
languages exist
 Understand history
 Computer languages evolved
 Needed flexibility
 Suitability for solution expression
 Desire for productivity, efficiency, and
maintainability
 Ongoing process
 Different problem classes are best
expressed in different formats
 “Best fit” languages have been
developed to meet business need
10/3/2015
Programming Languages and
Software Engineering
7
Grammars
 Combination of lexical elements
and syntax (rules)
 Every language has one
 Every grammar is different
10/3/2015
Programming Languages and
Software Engineering
8
Grammars
 BNF (Backus-Naur form) describes
programming languages
<Telephone book entry> ::= <Name> <Telephone number>
<Name> ::= <Last name> <First name>
<Last name> ::= <string>
<First name> ::= <string>
<string> ::= <character> | <character><string>
<character> ::=
A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<Telephone number> ::= <area code> <exchange>-<local number>
<area code> ::= <digit><digit><digit>
<exchange> ::= <digit><digit><digit>
<local number> ::= <digit><digit><digit><digit>
<digit> ::= 0|1|2|3|4|5|6|7|8|9
10/3/2015
Programming Languages and
Software Engineering
9
Multiparty Grammars
 Language structure to accommodate
more than one participant
<Session> ::= <U: Opening> <C: Responding>
<U: Opening> ::= LOGIN <U: Name>
<U: Name> ::= <U: string>
<U: string> ::= <U: character>
<U: character> ::=
A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<C: Responding> ::= HELLO [<U: Name>]
 Effective for text-oriented command
sequences
10/3/2015
Programming Languages and
Software Engineering
10
Types of programming
languages (2)







Algorithmic (computational)
Presentation
Database
Scripting
Structured
Object-oriented
Specification
10/3/2015
Programming Languages and
Software Engineering
11
Compilation and interpretation
 Converting source code to
machine code
 Compilation – produces a
reusable copy of the machine
code stored in a program library
 Interpretation – produces a
single-use copy of the machine
code that is destroyed following
program execution
10/3/2015
Programming Languages and
Software Engineering
12
Producing executable
Computer
Language
Source
Code
Compiler
Computer
Language
Object
Code
Link
Editor
Executable
Executable
Code
Loader
Service
Routines
Interpreter
10/3/2015
Computer
Language
Object
Code
Link
Editor
Programming Languages and
Software Engineering
13
Code Generation
 Automated program creation
 Input – program specifications
 Inputs
 Processes
 Outputs
Required of
the application
 Output – standards-compliant program
source code
 ANSI
 Able to be compiled
 Not necessarily efficeint
10/3/2015
Programming Languages and
Software Engineering
14
How code generators work
(conceptually)
Standard-based
Computer
Source Code
Solution
Specifications
• Unique language
• Based on
business rules
• Functional
requirements
• Technical
requirements
Code
Generator
L
S
G
Optimizer
• L = Lexical Analysis
• S = Syntax Analysis
• G = Generation
Optimized
Computer
Source Code
10/3/2015
Compilation
Programming Languages and
Software Engineering
Executable
Code
15
Software Engineering
 One branch of larger discipline information
engineering
 Information Engineering also includes
 Systems Engineering
 Data Engineering
 Database Engineering
 Network Engineering
 Hardware Engineering
 Software Engineering – the discipline of
analyzing solution spaces, designing a logical
approach to provide a solution, and creating that
solution using a computer programming
language
10/3/2015
Programming Languages and
Software Engineering
16
Software Engineering . . .
 Is the entire package of
 Understanding the solution space
 Analyzing possible approaches to creating a
viable solution
 Performing alternative analysis and selecting
the best available approach
 Designing the solution logic
 Creating the solution
 Testing the solution
 Documenting the solution (including training)
 Deploying the results
 Is a process
 Is not (just) programming
10/3/2015
Programming Languages and
Software Engineering
17
Software Engineering as a
Process
User’s
Problem
Statement
Functional
Requirements
Technical
Requirements
System
Architecture
Solution
Summary
(Vision)
Testing
Development
System
Design
Training
Deployment
10/3/2015
Documentation
Programming Languages and
Software Engineering
18
Software Engineering as a
Process
Software Engineering
Process
Deliverable/Outcome
User’s Problem Statement
Summary description of the problem to be solved.
Solution Summary
A visionary statement of the proposed solution.
Functional Requirements
The user capabilities essential to the solution.
Technical Requirements
The technical capabilities needed to deliver the solution.
System Architecture
The building blocks of the solution (technologies).
System Design
The high and low level designs of the solution (specifications).
Development
The creation/fabrication of the solution based on specifications.
Testing
The verification of operational readiness of the solution.
Documentation
The instructions on use and management of the solution.
Training
Preparing the user community on employing the solution.
Deployment
Installation and operation of the solution
10/3/2015
Programming Languages and
Software Engineering
19
Software Engineering –
Alternative Methods




Waterfall
Spiral
Agile
JAD/RAD
10/3/2015
Programming Languages and
Software Engineering
20
CMMI
 Integrated Capability Maturity Model
 CMM – Software
 CMM – Systems
 Originated by Software Engineering
Institute (SEI) @ Carnegie Mellon
University
 Emerging standard for software
products
 Federal government
Included in RFPs
as a selection and/or
 State governments
 Commercial outsourcing evaluation criteria
10/3/2015
Programming Languages and
Software Engineering
21
CMMI
 Focus on doing work
 Maximize effective use of resources
 Reduce errors and rework
 Improve overall efficiency and productivity
 Set of process area aligned with the
work to be done
 Systems engineering
 Software engineering
 Integrated product and process
development
 Supplier sourcing
10/3/2015
Programming Languages and
Software Engineering
22
Critical Dimensions of
Capability Maturity Models
B
A
D
C
Procedures and methods
defining the relationship
of tasks
Process
People with skills,
training, and motivation
10/3/2015
Source: Charissis et al, Fig 1.1, page 4
Programming Languages and
Software Engineering
Tools and equipment
23
CMMI Model Components
Process
Area
Purpose
Statement
Introductory
Notes
Related
Process Areas
Generic Goals
Specific Goals
Key
Informative
Generic
Practices
Specific
Practices
Typical Work
Products
Sub-practices
10/3/2015
Source: Charissis et al, Fig 2.1, page 32
Generic
Practices
Programming Languages and
Software Engineering
Expected
Required
24
Process
Institutionalization
10/3/2015
Programming Languages and
Software Engineering
25
Meaning of
“Institutionalization”
 Ingrained in the organizational
fabric
 Commitment to following the
process
 Consistency in executing the process
 Way of doing business
 Standard operating methodology
10/3/2015
Programming Languages and
Software Engineering
26
Types of Institutionalized
Processes





Performed
Managed
Defined
Quantitatively Managed
Optimizing
10/3/2015
Programming Languages and
Software Engineering
27
Performed Processes
 Set of steps, methods, or
techniques to
 Accomplish work
 Produce work products
10/3/2015
Programming Languages and
Software Engineering
28
Managed Process
 Performed process that is planned and
executed per policy
 Employs skilled people with adequate
resources to produce controlled
outputs
 Involves relevant stakeholders
 Monitored, controlled, and reviewed
 Evaluated for adherence to process
description
10/3/2015
Programming Languages and
Software Engineering
29
Defined Process





Managed process
Tailored from an organization’s set of standard
procedures following tailoring guidelines
Has a maintained process description
Contributes work products , measures, and other
process improvement information to organization’s
process assets and body of knowledge
Clearly states









10/3/2015
Purpose
Inputs
Entry criteria
Activities
Roles
Measures
Verification steps
Outputs
Exit criteria
Programming Languages and
Software Engineering
30
Quantitatively Managed
Process



Defined process that is controlled using statistical
and/or other quantitative techniques
Product quality, service quality, and process
performance attributes are measurable and
controlled
Included activities






10/3/2015
Identifying the sub-processes
Identifying and measuring product and process
attributes
Identifying and addressing special causes of subprocess variation
Managing each selected sub-process
Predicting ability of process to satisfy established
quantitative quality and process-performance objectives
Taking corrective actions as required
Programming Languages and
Software Engineering
31
Optimizing Processes
 Quantitatively Managed Process that is
changed/adapted to meet relevant current and
projected business objectives
 Focus on continually improving process
performance through incremental and
innovative technical improvements
 Address
 Common causes of process variations
 Root causes of defects and anomalies




10/3/2015
Identify
Evaluate
Improve
Deploy
Programming Languages and
Software Engineering
32
Differences Among
Processes
 Performed versus Managed
 Extent to which process is managed
 Managed versus Defined
 Scope of application of process descriptions,
standards, and procedures
 Defined versus Quantitatively Managed
 Degree of predictability of process
performance
 Quantitatively Managed versus Optimized
 Presence of continuous improvement
through addressing common causes of
process variation
10/3/2015
Programming Languages and
Software Engineering
33
Relationships Among
Processes
 Performed
 Managed
 Defined
 Quantitatively
Managed
 Optimized
10/3/2015
Programming Languages and
Software Engineering
34
A couple of references
 Chrissis, Konrad, & Shrum, CMMI –
Guidelines for Process Integration and
Product Improvement (2nd edition),
2007, Addison Wesley, ISBN 0-32127967-0
 Pressman, Software Engineering – A
Practitioner’s Approach (4th edition),
1997, McGraw Hill,
ISBN 0-07-052182-4
Note – there are later editions of this book.
10/3/2015
Programming Languages and
Software Engineering
35
Descargar

Document