Software Engineering Fundamentals
Software Engineering Fundamentals
Software Engineering
Agenda
1
1/31/2013
Who am I?
- Profile -
30 years of experience in the Information Technology Industry, including twelve years of experience working
for leading IT consulting firms such as Computer Sciences Corporation
PhD in Computer Science from University of Colorado at Boulder
Past CEO and CTO
Held senior management and technical leadership roles in many large IT Strategy and Modernization
projects for fortune 500 corporations in the insurance, banking, investment banking, pharmaceutical, retail,
and information management industries
Contributed to several high-profile ARPA and NSF research projects
Played an active role as a member of the OMG, ODMG, and X3H2 standards committees and as a
Professor of Computer Science at Columbia initially and New York University since 1997
Proven record of delivering business solutions on time and on budget
Original designer and developer of [Link] and the suite of products now known as IBM InfoSphere
DataStage
Creator of the Enterprise Architecture Management Framework (EAMF) and main contributor to the creation
of various maturity assessment methodology
Developed partnerships between several companies and New York University to incubate new
methodologies (e.g., EA maturity assessment methodology developed in Fall 2008), develop proof of
concept software, recruit skilled graduates, and increase the companies’ visibility
3
Email jcf@[Link]
MSN IM jcf2_2003@[Link]
LinkedIn [Link]
Twitter [Link]
Woo hoo…find the word
of the day…
Skype jcf2_2003@[Link]
2
1/31/2013
Textbooks:
» Software Engineering: A Practitioner’s Approach
Roger S. Pressman
McGraw-Hill Higher International
ISBN-10: 0-0712-6782-4, ISBN-13: 978-00711267823, 7th Edition (04/09)
» [Link]
» [Link]
[Link]/sites/0073375977/information_center_view0/table_of_contents.html
Icons / Metaphors
Information
Common Realization
Knowledge/Competency Pattern
Governance
Alignment
Solution Approach
66
3
1/31/2013
4
1/31/2013
10
5
1/31/2013
Software Requirements
Agenda
12
6
1/31/2013
13
Software is:
(1)instructions (computer programs) that when
executed provide desired features, function,
and performance;
(2) data structures that enable the programs to
adequately manipulate information;
(3) documentation that describes the
operation and use of the programs.
14
7
1/31/2013
15
increased failure
rate due to side effects
Failure
rate
change
actual curve
idealized curve
Time
16
8
1/31/2013
Software Engineering
17
Software Costs
18
9
1/31/2013
Software Products
Generic products
Stand-alone systems which are produced by a
development organization and sold on the open
market to any customer
Bespoke (customized) products
Systems which are commissioned by a specific
customer and developed specially by some
contractor
Most software expenditure is on generic
products but most development effort is on
bespoke systems
19
Software Applications
System software
Application software
Engineering/scientific
software
Embedded software
Product-line software
WebApps (Web
applications)
AI software
20
10
1/31/2013
Software—New Categories
21
Legacy Software
11
1/31/2013
Maintainability
It should be possible for the software to evolve
to meet changing requirements
Dependability
The software should not cause physical or
economic damage in the event of failure
Efficiency
The software should not make wasteful use of
system resources
Usability
Software should have an appropriate user
interface and documentation
23
24
12
1/31/2013
Efficiency Costs
Cost
Ef ficiency
25
26
13
1/31/2013
27
28
14
1/31/2013
29
30
15
1/31/2013
Understandability
Is the process defined and understandable?
Visibility
Is the process progress externally visible?
Supportability
Can the process be supported by CASE tools?
Acceptability
Is the process acceptable to those involved in it?
31
Reliability
Are process errors discovered before they result
in product errors?
Robustness
Can the process continue in spite of unexpected
problems?
Maintainability
Can the process evolve to meet changing
organizational needs?
Rapidity
How fast can the system be produced?
32
16
1/31/2013
Specification
Set out the requirements and constraints on the system
Design
Produce a paper model of the system
Manufacture
Build the system
Test
Check if the system meets the required specifications
Install
Deliver the system to the customer and ensure it is operational
Maintain
Repair faults in the system as they are discovered
33
34
17
1/31/2013
Waterfall model
Separate and distinct phases of specification and
development
Evolutionary development
Specification and development are interleaved
Formal transformation
A mathematical system model is formally
transformed to an implementation
Reuse-based development
The system is assembled from existing components
35
Waterfall Model
Requirements
definition
System and
software design
Implementation
and unit testing
Operation and
maintenance
36
18
1/31/2013
Phases:
Requirements analysis and definition
System and software design
Implementation and unit testing
Integration and system testing
Operation and maintenance
The drawback of the waterfall model is
the difficulty of accommodating change
after the process is underway
37
Evolutionary Development
Concurr ent
activities
Initial
Specification
version
Outline Intermediate
Development
description versions
Final
Validation
version
38
19
1/31/2013
Exploratory prototyping
Objective is to work with customers and to
evolve a final system from an initial outline
specification
Should start with well-understood requirements
Throw-away prototyping
Objective is to understand the system
requirements
Should start with poorly understood
requirements
39
Problems
Lack of process visibility
Systems are often poorly structured
Requires Special skills (e.g., languages for rapid
prototyping) may be required
Applicability
For small or medium-size interactive systems
For parts of large systems (e.g. the user
interface)
For short-lifetime systems
40
20
1/31/2013
41
42
21
1/31/2013
Inherent Risks
([Link]
Sponsorship
Budget
Culture
Business Understanding
Priorities
Business changes
Features
Schedule slips
Methodology Misuse
Software Quality
43
44
22
1/31/2013
45
Risk Management
46
23
1/31/2013
Waterfall
High risk for new systems because of
specification and design problems
Low risk for well-understood developments
using familiar technology
Prototyping
Low risk for new applications because
specification and program stay in step
High risk because of lack of process visibility
Transformational
High risk because of need for advanced
technology and staff skills
47
48
24
1/31/2013
49
50
25
1/31/2013
Objective setting
Specific objectives for the project phase are
identified
Risk assessment and reduction
Key risks are identified, analyzed and
information is sought to reduce these risks
Development and validation
An appropriate model is chosen for the next
phase of development.
Planning
The project is reviewed and plans drawn up for
the next round of the spiral
51
26
1/31/2013
Objectives
Significantly improve software quality
Constraints
Within a three-year timescale
Without large-scale capital investment
Without radical change to company standards
Alternatives
Reuse existing certified software
Introduce formal specification and verification
Invest in testing and validation tools
53
Risk Assessment
No cost effective quality improvement
Possible quality improvements may increase
costs excessively
New methods might cause existing staff to leave
Risk resolution
Literature survey
Pilot project
Survey of potential reusable components
Assessment of available tool support
Staff training and motivation seminars
54
27
1/31/2013
PDCA Approach
Results
Experience of formal methods is limited - very
hard to quantify improvements
Limited tool support available for company-wide
standard development system
Reusable components available but little
support exists in terms of reusability tools
Plans
Explore reuse option in more detail
Develop prototype reuse support tools
Explore component certification scheme
Commitment
Fund further 18-month study phase
55
56
28
1/31/2013
57
PDCA Approach
Results
Information retrieval systems are inflexible.
Identified requirements cannot be met.
Prototype using DBMS may be enhanced to complete
system
Special purpose catalogue development is not cost-
effective
Plans
Develop catalogue using existing DBMS by enhancing
prototype and improving user interface
Commitment
Fund further 12 month development
58
29
1/31/2013
59
60
30
1/31/2013
61
31
1/31/2013
63
64
32
1/31/2013
65
66
33
1/31/2013
Professional Responsibility
Ethical Issues
Confidentiality
Competence
Intellectual property rights
Computer misuse
68
34
1/31/2013
69
70
35
1/31/2013
Section Outline
71
Best Practices
Process Made Practical
Develop Iteratively
Manage Requirements
Use Component
Architectures
Model Visually (UML)
Continuously Verify Quality
Manage Change
72
36
1/31/2013
Delays confirmation of
critical risk resolution
Waterfall Process Measures progress by
assessing work-
Requirements
analysis products that are poor
Design predictors of time-to-
Code and unit test completion
Subsystem integration Delays and aggregates
System test
integration and testing
Precludes early
deployment
Frequently results in
major unplanned
iterations
73
Requirements
Analysis & Design
Planning
Implementation
Initial
Planning Management
Environment
Test
Evaluation
74
37
1/31/2013
Risk Profiles
Waterfall Risk
Risk Iterative Risk
Risk Reduction
Time
75
Best Practices
Process Made Practical
Develop Iteratively
Manage Requirements
Use Component
Architectures
Model Visually (UML)
Continuously Verify Quality
Manage Change
76
38
1/31/2013
Requirements Management
78
39
1/31/2013
Problem Problem
Space
Needs
Solution
Features Space
The
Use Cases and Product
Software To Be
Requirements Built
Test
Procedures Design User
Docs
79
Best Practices
Process Made Practical
Develop Iteratively
Manage Requirements
Use Component
Architectures
Model Visually (UML)
Continuously Verify Quality
Manage Change
80
40
1/31/2013
Resilient
Meets current and future requirements
Improves extensibility
Enables reuse
Component-based
Reuse or customize components
Select from commercially-available
components
Evolve existing software incrementally
81
Staffing
Application-
Delivery
specific
Business-
Intellectual control specific
Middleware
Manage complexity
Maintain integrity
System-
software
82
41
1/31/2013
Best Practices
Process Made Practical
Develop Iteratively
Manage Requirements
Use Component
Architectures
Model Visually (UML)
Continuously Verify Quality
Manage Change
83
84
42
1/31/2013
Statechart Deployment
Diagrams Diagrams
Activity
Diagrams
85
Use-case
Statechart
diagram
Class diagram diagram add f ile
DocumentList
add( )
Actor A Actor B fetchDoc( ) delete( )
name : int
docid : int
sortByName( ) numField : int
add f ile [ numberOf f ile==MAX ] / Writing
f lag OFF
get( )
open( ) read() fill the
Use Case 2 close( ) code..
Openning
FileList read( )
sortFileList( )
fList create( )
fillDocument( ) close f ile
add( )
delete( )
1
rep
File
Repository
(from Persistence)
name : char * = 0
readDoc( )
readFile( )
read( )
GrpFile
read( )
open( )
create( )
Deployment
fillFile( )
Collaboration 9: sortByName ( )
Repository DocumentList
diagram
diagram 1: Doc view request ( )
mainWnd : MainWnd
L
2: fetchDoc( )
FileManager
Window95
¹®¼°ü¸®
Windows95
Windows95
Document
Ŭ¶óÀ̾ðÆ®.EXE
8: fillFile ( ) Windows
NT
IBM
7: readFile ( ) Mainframe
5: readDoc ( )
document : Document
repository : Repository
µ¥ÀÌŸº£À̽º¼¹ö
user
mainWnd fileMgr :
FileMgr
document :
Document
gFile repository
Component
Ư Á¤¹®¼¿¡ ´ëÇÑ º¸±â¸¦
»ç¿ëÀÚ°¡ ¿äûÇÑ´Ù.
1: Doc view request ( )
2: fetchDoc( )
3: create ( )
diagram Target
4: create ( )
System
5: readDoc ( )
ÈÀϰü¸®ÀÚ´Â Àоî¿Â
6: fillDocument ( )
¹®¼ÀÇ Á¤º¸¸¦ ÇØ´ç ¹®¼
°´Ã¼¿¡ ¼³Á¤À» ¿äûÇÑ´Ù.
Forward and
7: readFile ( )
8: fillFile ( )
Reverse
Sequence Engineering
diagram
86
43
1/31/2013
44
1/31/2013
Approach
UML 1.X defines five views that let you look at overall models from various
angles
Layering architectural principles is used to allocate pieces of functionality to
subsystems
Partitioning is used to group related pieces of functionality into packages
within subsystems
Views and Related Diagrams
Use Case View (application functionality)
Use Case Diagram
Logical View (static application structure)
Class Diagram
Object Diagram
Process View (dynamic application behavior)
Sequence Diagram
Activity Diagram
Collaboration Diagram
Statechart Diagram
Implementation View (application packaging)
Component Diagram
Deployment View (application delivery)
Deployment Diagram
89
Architectural
Functional View
view
DiceSystem Dice
DicePersist Displayable Vizualization
HighScore
Play
Observable
Player
PersistKit
Observer
FindBeverage
[ nocoffee ] [ nocola ]
Consistency Behavioral
Randomizer
Static
Random
View
[ found coffee] system
[ foundcola]
View
Put Coffee in Filter AddWater toReservoir Get Cups Get Can of Cola
Coverage
Put Filterin Machine d1: Die
2:r1=roll( )
Game Computer
Player
Die
1: play( )
(fromUseCaseView) Rolls game: Dice
Turn onMachine
name:String faceValue:int=1 SGBD computer
Game
^[Link]
score:int=0; 1 2 roll() 3:r2=roll( )
Brew Coffee play() 1
1 d2: Die
Play the
light goes out
Plays
Momo: Player game File
Maybe a Remote
a file system
Includes S ystem
1
Pour Coffee Drink Beverage DiceGame
: DiceGame d1 : Die d2 : Die
: Playe r
1 1
ca nc el
Scoring
1: play( )
1 / S tart gam e 2: roll( )
start
HighScore Ready to play Player ready
entry: get player name
3: roll( )
Quit
Cancel play
[ turn>= 10 ] In progress
entry: turn++
90
45
1/31/2013
92
46
1/31/2013
Best Practices
Process Made Practical
Develop Iteratively
Manage Requirements
Use Component
Architectures
Model Visually (UML)
Continuously
Verify Quality
Manage Change
93
94
47
1/31/2013
Does my application
respond acceptably?
Reliability
Does my application
do what’s required? Verification of
sustained
application Does the system
operation perform under
Functionality production
load?
Verification of each
usage scenario
Performance
Test performance
under expected &
worst-case load
95
UML Model
and
Implementation
Tests
96
48
1/31/2013
Best Practices
Process Made Practical
Develop Iteratively
Manage Requirements
Use Component
Architectures
Model Visually (UML)
Continuously Verify Quality
Manage Change
97
Workspace Parallel
Management Development
CM is more
than just REPORT ALERT
Build
check-in and Process
Integration Management
check-out
98
49
1/31/2013
99
Activity-Based Management
Tasks
Defects
Enhancements
Progress Tracking
Charts
Reports
100
50
1/31/2013
Best Practices
Develop Iteratively
Validates architectural
Use Component Architectures
decisions early on
Addresses complexity of
Model Visually (UML) design/implementation incrementally
101
102
51
1/31/2013
Section Outline
103
Foundations of RUP
104
52
1/31/2013
Best Practices
Process Made Practical
Develop Iteratively
Manage Requirements
Use Component Architectures
Model Visually (UML)
Continuously Verify Quality
Manage Change
105
Iterative Approach
Guidance for activities
and work products Requirements
design and
Change Management
implementation
Models which abstract
the system
106
53
1/31/2013
107
time
baseline architecture
» Construction - Build the product
user community
108
54
1/31/2013
time
109
110
55
1/31/2013
Models
Implemented Verified By
Realized By By
Realized Business Use- Use-Case
By Case Model Model
OK
B OK
B B B
Automated Fail
111
Workflows
group
activities
logically
In an iteration,
you walk
through all
workflows
112
56
1/31/2013
Business Modeling:
Workflow Details
Requirements:
Workflow Details
113
Notation
Role
Detail a
Requirements Use Case
Specifier
57
1/31/2013
Each individual in
the project is
assigned to one
or several roles
115
Example
Requirements:
Business Vision Stakeholder Vision Requirements
Rules Requests (refined) Supplementary Management
Specifications Plan Workflow Detail
“Define the
Requirements
Attributes System”
Develop Manage
Vision Dependencies
System Requirements
Analyst Attributes
(refined)
Capture a Find Actors
Common and Use Cases
Vocabulary
Use-Case Model
(refined)
Use-Case
Modeling Business Use Case
Glossary (outlined)
Glossary Guidelines Object Model Use-Case Model
(refined)
Business
Use-Case Model
116
58
1/31/2013
117
118
59
1/31/2013
Ongoing Phase Assessment Review Project Manager
A = Approver
Ongoing Corporate Report Card Business Project Manager
120
60
1/31/2013
Business Sponsor Establishes the project funding and periodically review the spending progress against the
Investment Opportunity expectations. They consistently champion the project and
associated changes, as well as communicate project progress to Corporate leaders.
Business Lead Provides project leadership and overall business perspective. This role is responsible for
managing the project risk and working with the team to ensure appropriate
communication of risk mitigation.
Represents the team to stakeholders and management and influences the strategic and
tactical business decisions pertaining to the project product. This role’s overall goal is to
ensure the business expectations are achieved on time and on budget.
Business Project Manager Allocates resources, shapes priorities, coordinates interactions with customers and users,
and generally keeps the project team focused on the right goal. The project manager also
establishes a set of practices that ensure the integrity and quality of project artifacts. In
addition, the Business Project Manager plans and conducts the formal review of the use-
case model.
Leads and coordinates requirements elicitation and use-case modeling by outlining the
system's functionality and delimiting the system; for example, establishing what actors
and use cases exist and how they interact. In addition, this role details the specification
of a part of the organization by describing the workflow of one or several business use
cases.
Technology Project Manager Allocates resources, shapes priorities, coordinates interactions with customers and users,
and generally keeps the project team focused on the right goal. The technology project
manager also establishes a set of practices that ensure the integrity and quality of project
artifacts.
Architect Leads and coordinates technical activities and artifacts throughout the project.
The software architect establishes the overall structure for each architectural view: the
decomposition of the view, the grouping of elements, and the interfaces between these
major groupings. Therefore, in contrast to the other roles, the software architect's view is
one of breadth as opposed to one of depth. 121
122
61
1/31/2013
123
Agility
“Ability to create and respond to change in order to
profit in a turbulent business environment”
Agile Values
Individual and interactions vs. processes and tools
Working software vs. comprehensive documentation
Customer collaboration vs. contract negotiation
Responding to change vs. following a plan
124
62
1/31/2013
Agenda
126
63
1/31/2013
Section Objectives
127
128
64
1/31/2013
Models
Implemented Verified By
Realized By By
Realized Business Use- Use-Case
By Case Model Model
OK
B OK
B B B
Automated Fail
65
1/31/2013
131
66
1/31/2013
133
134
67
1/31/2013
135
136
68
1/31/2013
Traceable Artifacts
137
138
69
1/31/2013
139
140
70
1/31/2013
142
71
1/31/2013
143
Agenda
144
72
1/31/2013
Course Assignments
Individual Assignments
Reports based on case studies / class presentations
Project-Related Assignments
All assignments (other than the individual assessments) will
correspond to milestones in the team project.
As the course progresses, students will be applying various
methodologies to a project of their choice. The project and related
software system should relate to a real-world scenario chosen by each
team. The project will consist of inter-related deliverables which are
due on a (bi-) weekly basis.
There will be only one submission per team per deliverable and all
teams must demonstrate their projects to the course instructor.
A sample project description and additional details will be available
under handouts on the course Web site
145
Team Project
Project Logistics
Teams will pick their own projects, within certain constraints: for instance,
all projects should involve multiple distributed subsystems (e.g., web-
based electronic services projects including client, application server, and
database tiers). Students will need to come up to speed on whatever
programming languages and/or software technologies they choose for their
projects - which will not necessarily be covered in class.
Students will be required to form themselves into "pairs" of exactly two (2)
members each; if there is an odd number of students in the class, then one
(1) team of three (3) members will be permitted. There may not be any
"pairs" of only one member! The instructor and TA(s) will then assist the
pairs in forming "teams", ideally each consisting of two (2) "pairs", possibly
three (3) pairs if necessary due to enrollment, but students are encouraged
to form their own 2-pair teams in advance. If some students drop the
course, any remaining pair or team members may be arbitrarily reassigned
to other pairs/teams at the discretion of the instructor (but are strongly
encouraged to reform pairs/teams on their own). Students will develop and
test their project code together with the other member of their programming
pair.
146
73
1/31/2013
148
74
1/31/2013
Readings
» Slides and Handouts posted on the course web site
» Textbook: Chapter 1 & Part One-Chapter 2
Assignment #1
» Team Project proposal (format TBD in class)
» Presentation topic proposal (format TBD in class)
149
150
75
1/31/2013
Any Questions?
151
76