SE 425 - DePaul University

Download Report

Transcript SE 425 - DePaul University

SE 425
Principles and
Practices of Software
Engineering
Autumn 2006
James Nowotarski
12 September 2006
Today’s Objectives




Understand what the course is about (i.e., course
objectives)
Understand how the course will achieve its objectives
Get acquainted
Level set:




What is software engineering
Why use a software engineering process
What are the key vocabulary terms to understand
Why does any of this matter
2
Today’s Agenda
Topic
Duration

Questionnaire & Intros
30 minutes

Core concepts
45 minutes
*** Break
10 minutes

Core concepts (cont.)
20 minutes

Course overview
30 minutes

Software categories
30 minutes

Does software engineering matter?
30 minutes
3
Today’s Agenda
Topic
Duration

Questionnaire & Intros
30 minutes

Core concepts
45 minutes
*** Break
10 minutes

Core concepts (cont.)
20 minutes

Course overview
30 minutes

Software categories
30 minutes

Does software engineering matter?
30 minutes
4
Core Concepts
Software Engineering
• The establishment and use of sound
engineering principles in order to economically
obtain software that is reliable and works
efficiently on real machines (Fritz Bauer, 1969)
• Computer science discipline that covers not
only the technical aspects of building software
systems, but also management issues, such as
directing programming teams, scheduling, and
budgeting (webopedia.com)
5
Core Concepts
The software engineering discipline consists
of people, process, and technology
components
Process
People
Technology
6
Core Concepts
The focus of SE 425 is
the process component
of software engineering
Process
Technology
People
… for the delivery of
technology-enabled
business solutions
Process
People
Technology
7
Core Concepts
Process
• Sequence of steps performed for a given
purpose
• “A specific ordering of work activities across
time and place with a beginning, an end, and
clearly identified inputs and outputs” -- Tom
Davenport
• An overloaded term, can apply at multiple
levels (macro, micro)
8
Core Concepts
software process (also known as “method”)
• Within the context of software engineering, a
formalized approach or series of steps for
performing some significant portion of software
development
Software Process (aka “Methodology”)
• A collection of methods based on a common
philosophy that fit together in a framework
called the systems development life cycle
-- Ken Orr
9
Core Concepts
In SE 425, we will use the terms “software
process” and “Software Process”
interchangeably
•
A systematic way of doing something
•
Typically consists of these key content
pieces:
1.
2.
3.
4.
5.
Processes (what)
Deliverables (what)
Techniques (how)
Roles (who)
Estimating guidelines (how long)
10
Example: Analysis
Key Question:
What does the system need to do?
Steps
1. Gather requirements
2. Create data model
3. Create process model
Roles
Business analyst
End user
etc.
Deliverables
Functional requirements
Quality requirements
Data model
Process model
Techniques
Interviewing
Observation
Entity-relationship modeling
Normalization
Data flow modeling
Estimating guidelines
8 hours per data entity
etc.
11
Core Concepts
Broad categories of software processes
•
•
•
•
Structured methods
Information engineering
Object-oriented methods
Lightweight/Agile methods
12
Core Concepts
Systems development life cycle (SDLC)
 A description of the phases of an
information system
Example
Planning
Modeling
Construction
Deployment
13
Core Concepts
Life cycle model
• The iteration and control strategy adopted by a
systems development organization
• Examples
- Waterfall
- Iterative/Evolutionary/Spiral
- Incremental
14
Core Concepts
The waterfall model is the granddaddy of life cycle models
Planning
Modeling
Construction
Deployment
15
Core Concepts
Iterative/Evolutionary/Spiral life cycle models
advocate multiple “threads” through the SDLC
phases
Version 1
M
C
D
Version 2
M
C
D
Version 3
M
C
D
16
Core Concepts
Incremental life cycle models advocate
delivering the end product piecemeal
Version 1
M
C
D
Version 2
M
C
D
Version 3
M
C
D
17
Core Concepts
Routes
• A “route” is a preconfigured specialization of a
methodology, depending on a variety of factors:
- custom vs. packaged solution
- degree of project team distribution
- project team size
- technology platform
- application type
• Examples
- Custom Client/Server: Large Project
- Custom Client/Server: Small Project
- Rapid Application Development (RAD)
- Packaged Systems Development
- Data Warehouse
- SAP implementation
18
Core Concepts
Rapid Application Development (RAD)
• A shortened route with the following characteristics:
- high degree of development tool usage and code
generation
- Joint Application Development (JAD) workshops
instead of interviewing
- assumes reuse of existing technical architecture and
standards
- time-boxing (90-day implementation schedule)
- highly iterative
19
Core Concepts
RAD vs. Traditional
Traditional
Req’ts
Analysis
User
Design
Tech
Design
Construct
RAD
Req’ts
User
Design
Construct
20
Core Concepts
Techniques
• Provide detailed how-to guidelines
• Fall into 2 main categories:
- Process techniques
- Modeling/Diagramming techniques
21
Core Concepts
Process for Building Data Models
1.
2.
3.
4.
5.
6.
7.
8.
9.
Review existing data models
Define entities
a. Independent
b. Dependent, including Intersection entities
Define attributes and keys (primary, foreign)
Define relationships
Finalize ERD
Diagramming technique available
Process technique available
Normalize
Integrate data models as required
Verify completeness of the data model
Validate the data model
a. With users
b. With the enterprise’s data administrator
22
Core Concepts
Modeling/Diagramming
Technique
23
Core Concepts
Normalization (Process Technique)
1NF = No repeating groups
2NF = 1NF + no partial dependencies (non-key
attribute dependent on portion of primary key)
3NF = 2NF + no transitive dependencies (nonkey attribute dependent on another non-key
attribute)
24
Today’s Agenda
Topic
Duration

Questionnaire & Intros
30 minutes

Core concepts
45 minutes
*** Break
10 minutes

Core concepts (cont.)
20 minutes

Course overview
30 minutes

Software categories
30 minutes

Does software engineering matter?
30 minutes
25
Course Objectives
SE 425 will enable you to explain, develop, use, and
improve software engineering practices
26
Your grade
Homework Assignments
50%
Midterm/Final
40%
Participation/Discussion
10%
-------100%
27
Course Map
http://facweb.cti.depaul.edu/jnowotarski/se425/default.htm
28
Course Assignments
•
Assignment 1 – Critique of article on the spiral approach to systems development
•
Assignment 2 – Risk management exercise
•
Assignment 3 – Project plan
•
Assignment 4 – TBD
•
Assignment 5 - Summary of marketplace development
29
My role

Facilitate learning

Plan, prepare, and conduct lectures and learning
activities

Assess student progress and provide feedback

Relate concepts to real-world problems

Provide classroom environment conducive to learning

Clearly state expectations

Gather and implement suggestions for improving the
class
Keep it fun

30
My coordinates
email: [email protected]
 phone: 312-261-3838
 office hours: Tuesdays, immediately
before and after class

31
Your role

Be proactive

Share your experience

Come to class prepared

Collaborate with other students as appropriate

Ask if you don’t understand or if I’m not clear

Provide constructive feedback (“This class would be
better if . . .”)
32
Class Participation
Subjective evaluation of participation:
A Consistently asks good questions, makes valuable
observations, and answers questions effectively
B Frequent participant, but not all questions,
answers, and observations are effective, or not
consistently active
C Participates infrequently, or questions/answers do
not reflect adequate preparation, or late to class
D Very rare participation, or questions/answers reflect
little or no preparation, or very late to class
F Displays no sign of life, or absent for entire class 33
Today’s Agenda
Topic
Duration

Questionnaire & Intros
30 minutes

Core concepts
45 minutes
*** Break
10 minutes

Core concepts (cont.)
20 minutes

Course overview
30 minutes

Software categories
30 minutes

Does software engineering matter?
30 minutes
34
Activity – Software
categories
In small groups, develop a 1-minute
summary of one of the following:
 System software
 Application software (custom)
 Application software product
 Engineering/Scientific software
 Embedded software
 Web-based applications
For each, describe and discuss software
engineering challenges
35
System software
Description
Foundational software, operating system,
utilities, compilers, tools, driver,
Challenges
Robustness, interoperability, efficiency,
reliability, testing, change management,
configuration management, scarce skill set
36
Application software
(custom)
Description
Building application from ground up, tailored to
org’s specific needs, focused,
Challenges
Need for good documentation, want internal
people working on this, cost effectiveness,
extensibility
37
Application software product
Description
Business process or industry focused,
SAP, Peoplesoft, Microsoft Office
Challenges
Variety of end user types, update cycle,
software piracy prevention,
38
Engineering/Scientific
software
Description
Number crunching, astronomy, weather
prediction, computer-aided design,
simulation
Challenges
Numerical precision, understanding of
scientific domain, performance, extremely
data sets, regulatory/legal compliance
39
Embedded software
Description
Software embedded in a device,
Challenges
Testing, change management, scarce
skills, limited hardware resources,
security
40
Web-based applications
Description
eCommerce (B2C), educational, financial,
maps, gis, “network is the computer”
Challenges
Security, performance, browser
inconsistencies, language compatibility,
global, usability, legal, censorship,
41
Today’s Agenda
Topic
Duration

Questionnaire & Intros
30 minutes

Core concepts
45 minutes
*** Break
10 minutes

Core concepts (cont.)
20 minutes

Course overview
30 minutes

Software categories
30 minutes

Does software engineering matter?
30 minutes
42
IT Outsourcing
Best jobs in America
1.
2.
3.
4.
5.
Software engineer
College professor
Financial adviser
Human resources
manager
Physician’s
assistant
6.
7.
8.
9.
10.
Market research
analyst
Computer/IT
analyst
Real estate
appraiser
Pharmacist
Psychologist
Source:
Kalwarski, T., Mosher, D., Paskin, J. & Rosato, D. (2006, May) 50 best jobs in
America. Money. Retrieved September 8, 2006, from
http://money.cnn.com/magazines/moneymag/bestjobs/
43
Does SE matter?
As noted by Carr, IT is often viewed as a commodity
and, thus, not “core”
•
IT is like electric power -- a commodity that is required by
all but provides distinction to none
•
IT capability is broadly accessible and affordable
•
New or proprietary technologies offer opportunity for
companies to gain a step, but this advantage is short-lived
•
Further evidence of IT commoditization:
– overcapacity
– price drops
– vendors positioning selves as “utilities”
44
Source: Carr, N. (2003, May). IT doesn’t matter. Harvard Business Review, 81(5), 41-49.
Does SE Matter?

Buy vs. build

Lease (utility model) vs. buy
• Open source vs. lease

Software as a commodity?
45
Buy vs. build
IT Outsourcing
Build
Critical
Strategic
Importance
Useful
Buy
Commodity
Differential
Potential for Differentiation
46
For September 19



Read Pressman Chapters 1-4
Read Royce article
Assignment 1- Critique the Royce article
47
Extra slides
48
Core Concepts
Software process engineering
• Developing and/or selecting and/or tailoring
software process for a particular business
situation
• “Configuring one-of-a-kind methodology from
common building blocks” -- Gezinus Hidding,
Loyola University
49
Justifying a Methodology
• Vendors and consultants have not done much to
substantiate quantitatively the value of their
methodologies
• What would you say if asked to provide
justification?
50
Common Drivers Behind
Methodology Adoption
• Project failure leads to realization that “we need a more formal
process”
• Codify best practices, so as to increase predictability and
reliability of software development process
• especially as IT organization grows
• Continued pressure on time to market and quality (web
services)
• Certification (e.g., Capability Maturity Model)
• Desire to stay current and/or sustain/develop competitive edge
• Need to support distributed development teams (multi-site
and/or multi-organization)
51
Methodology - Who needs it?
“Any first attempt at converting folklore into knowledge, and a
guessing game into a discipline, is liable to be misread as a
downgrading of individual ability and its replacement by a rule book.
Any such attempt would be nonsense, of course. No book will ever
make a wise man out of a donkey or a genius out of an incompetent.
The foundation in a discipline, however, gives to today’s competent
physician a capacity to perform well beyond that of the ablest doctor
of a century ago, and enables the outstanding physician of today to
do what the medical genius of yesterday could hardly have dreamt
of. No discipline can lengthen a man’s arm. But it can lengthen his
reach by hoisting him on the shoulders of his predecessors.
Knowledge organized in a discipline does a good deal for the merely
competent; it endows him with some effectiveness. It does infinitely
more for the truly able; it endows him with excellence.”
From Managing for Results, by Peter F. Drucker
52