Software Development Process

pielibraryInternet και Εφαρμογές Web

4 Δεκ 2013 (πριν από 3 χρόνια και 11 μήνες)

90 εμφανίσεις

University of Southern California

Center for Systems and Software Engineering

NDI and Services
-
Based

Software Development Process

Supannika Koolmanojwong

November 2, 2009

University of Southern California

Center for Systems and Software Engineering

Outline


Non Developmental Item (NDI)


Net
-
Centric Services (NCS)


What are in the process?

11/02/2009

2

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

What is NDI?


Non
-
Developmental Item


an item that is previously developed and available to
use.


commercial
-
off
-
the
-
shelf, open source product, reuse
library and customer
-
furnished package.


2 kinds of NDI


Application NDI : MS office


System NDI: MySQL


Related terms


COTS, GOTS, ROTS,


Reuse Code, Reuse library, Customer
-
furnished
package

11/02/2009

3

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Common NDIs in CSCI577


Application
-
NDI


MS office, WordPerfect


OCR software


Joomla, Drupal, Wordpress


Coldfusion, Dreamweaver


System
-
NDI


Language: PHP, C++, Java,


Database: MySQL


Server: Apache


Others: Java Libraries

11/02/2009

4

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

What is COTS ? (1/2)


Commercial
-
off
-
the
-
shelf (COTS) definition by SEI


A product that is


Sold, leased or licensed to the general public.


Offered by a vendor trying to profit from it.


Supported and evolved by the vendor, who retains the
intellectual property rights.


Available in multiple copies.


Used without internal modification by a consumer.


Source code may or may not be available.


No longer a COTS if the source code is modified
internally

5

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

What is COTS? (2/2)


Can be tailored or extended using


An application programming interface (API).


Tailoring options


Graphical interface.


Parameter based interface.


Programmable interface.


Usually periodic releases with feature growth.


Commercial NDI products have a new release about
every 10 months, and that old releases are supported
by the vendor for about 3 releases.


Older versions eventually become obsolete.

6

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

COTS Advantages and Disadvantages



7

11/02/2009

Advantages


Available now, earlier payback


Avoids expensive development &
maintenance


Predictable license costs &
performance


Rich in functionality


Broadly used, mature technology


Frequent upgrades often
anticipate organization’s needs


Dedicated support organization


Hardware/software independence


Tracks technology trends

Disadvantages


Licensing and procurement delays


Up front license fees


Recurring maintenance fees


Reliability often unknown/ inadequate


Unnecessary features compromise
usability, performance


Functionality, efficiency constraints


No control over upgrades/maintenance


Dependency on vendor


Integration not always trivial;
incompatibilities among different COTS


Synchronizing multiple
-
vendor
upgrades

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Lessons Learned Using NDI (1/6)


Problems with vendors


Vendors promise and don’t deliver


Products don’t work as advertised


Don’t assume a quantity discount, negotiate price upfront


Need for flexibility in defining requirements


Distinguish between essential and negotiable
requirements. Be flexible where you can.


What we did right
-

spent 14 out of a total of 22 months
iterating between requirements, business processes and
the marketplace


If you can bend your requirements, NDI is cheaper.
Otherwise you’re better off with custom developed. (Not
all projects may be flexible)

8

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Lessons Learned Using NDI (2/6)


Importance of operational demos


Spend a lot of time in detailed performance
demonstrations with real users.


Up
-
front time is critical. That’s when you have
leverage with vendors. Once you buy their
product, they are a lot less willing to help out.


Assessment of specific attributes


Projects (COCOTS), in the past have expressed
regret that they did not spend more time
assessing portability, inter
-
component
compatibility, flexibility (of user interface), and
installation ease.

9

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Lessons Learned Using NDI (3/6)


Life
-
cycle issues


Supportability of NDI viewed as a major issue
for safety
-
critical systems


Out of service is a critical problem


contractor purchased source code and will maintain
NDI software


Projects, in past have expressed the view that
NDI saved money during development but
shifted costs to operational side of the life cycle


On
-
line software maintenance


How do you upgrade systems once they are in place
and operating?

10

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Lessons Learned Using NDI (4/6)


Life Cycle Issues (Upgrading)


What is an effective strategy for upgrading?
Products reach end of life in two years.


Freeze and redo the system in 10 years?


Incorporate all versions from all vendors whenever
they come out?


Refresh every 2 years?


Refresh a selected set of components every 2 years?


Should have an environment set up so you can
load new versions onto the existing
configuration and decide whether or not to
upgrade.


Look at the entire life cycle realistically
-

not just
development

11

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Lessons Learned Using NDI (5/6)


NDI integrator experience


Important that they have experience integrating
NDI.


Look carefully at their credentials. They will
oversell themselves


Product maturity


Never use an untried OS


Maturity of the software was very important in
NDI selection


If you have a safety
-
critical system, you don’t
want state
-
of
-
the
-
art NDI

12

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Lessons Learned Using NDI (6/6)


Training on NDI packages


Significant learning curve


Need for technology and market watch to
keep up with vendors and technologies


Impacts of volatility during development


redo the tailoring with new releases

13

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

NDI Systems Definitions


NDI
-
Intensive Systems


Any system that uses NDI



NDI Based Applications


A system for which


At least 30% of the end
-
user functionality is provided by NDI
products and


At least 10% of the project effort is devoted to NDI related
activities


The numbers 10% and 30% are approximate behavioral NDI
boundaries observed in the USC e
-
services projects

14

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Types of NDI
-
based systems

15

System with

no NDI
product

System with
just a single
NDI product

% of

Capability

Requirements

Implemented

by NDI
products

100%

0%

30%

NDI

Based

Applications

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Why use NDI/NCS?


Change in software development practice over the past 20
years


Build system with pre
-
existing software to reduce
development and maintenance costs


Involve less development time and lower development cost
by taking advantage of existing, market proven, vendor
supported products.


Could develop a better version yourself or outsource but
generally incur more expense and take longer to begin to
capitalize on its benefits


Trade
-
off


Source code is not available to developers


Evolution is not under control of developers


Incompatibility, high volatility

16

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Trade
-
Off’s for Tailoring


Tailoring effort can vary significantly depending on
NDI/NCS package used


Automated tailoring tools


E.g. Microsoft Excel macro recorder


Extensive tailoring can cause much rework during
NDI refresh cycles


Oracle: “Use our Business Processes”


Tailoring effort v/s functionality tradeoff


Minimum tailoring effort to obtain maximum possible
functionality


Tailoring “easy to redo” during NDI refresh cycles

11/02/2009

17

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

When is NDI right for you (1/2)


When they lie at the
intersection of the
three determinants of
feasibility,
and
do so
demonstrably better
than could original
code
:



technical,


economic,


strategic constraints

18

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

When is NDI right for you (2/2)


Technical constraint


Ability supply the desired functionality at the required
level of reliability


Economic constraint


Ability to be incorporated and maintained in the new
system within the available budget and schedule


Strategic constraint


Ability to meet needs of the system operating
environment
--
including technical, political, and legal
considerations
--
now, and as environment is expected to
evolve in the future

19

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

NDI/NCS is not a “Silver Bullet”


However, NDI/NCS is not a “Silver Bullet”


Involving short
-
term & long
-
term cost, evolution
and associated risks


Requiring different processes w.r.t. new skill,
knowledge, and abilities


If not handled well, resulting in difficulties to
meet expected economic objectives, even
causing tremendous cost and schedule
overruns


Need for NDI/NCS
-
Oriented Processes

11/02/2009

20

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Selection of NDI/NCS Components


Assessment of:


Functional Win Conditions


capability offered


Performance Win Conditions


timing & sizing constraints


Others


cost/training/installation/maintenance/ma
rket trend / product line

21

11/02/2009

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Net
-
Centric Services (NCS)


an online service available to be accessed
over the internet


Net
-
Centric Services includes


web service,


web application,


online application, and


software
-
as
-
a
-
service.

11/02/2009

22

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Popular NCSs


Web services


Google Services, Yahoo Services


e
-
learning system


Moodle, ILIAS, KEWL, Sakai, Dokeos


Payment Services


Amazon payment, Paypal, Google Checkout


Calendar


Google Calendar, liteCalendar, Vcalendar


Others


OpenCollection, Jumpy Forum, Facebook, Google Map,
Salesforce

11/02/2009

23

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Issues of NCS


Problems with vendors


Need for flexibility in defining requirements


Importance of operational demos


Assessment of specific attributes


Life
-
cycle issues

11/02/2009

24

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

NDI, NCS characteristics

11/02/2009

25

Characteristics

NDI

NCS

Platform Independent

Yes / No

Yes

Required Internet Access

Yes / No

Yes

Common Standard

No

Yes

Option of rejecting next release*

Yes

No

Change / upgrade control

Client

/Server’s site

Server’s site

䕮搠d獥爠桡猠s桥慴 獴s癥牳v潮

v敳 e乯

v敳

⨠坩汬⁹潵 扥⁡ 汥 瑯⁦牥r穥⁴桥⁶敲獩 渠y潵 慲a 畳u湧㼠

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Software Process Model


ISO/IEC 12207


RUP /MBASE


Incremental Commitment Model


11/02/2009

@USC CSSE

26

University of Southern California

Center for Systems and Software Engineering

Aug. 28, 2009

© USC
-
CSE 2007
-
2008

Page
27

The Incremental Commitment Model

Life Cycle Process: Overview

Stage I: Definition

Stage II: Development and Operations

Anchor Point
Milestones

Synchronize, stabilize concurrency via FEDs

Risk patterns
determine life
cycle process

University of Southern California

Center for Systems and Software Engineering

Aug. 28, 2009

© USC
-
CSE 2007
-
2008

Page
28

ICM HSI Levels of Activity for Complex Systems

University of Southern California

Center for Systems and Software Engineering

09/09/2009

@USC CSSE

29

University of Southern California

Center for Systems and Software Engineering

Software Development Phase Activities:

11/02/2009

@USC CSSE

30



Requirements

Design

Implementation

Acceptance &
Deployment

Sustainment

Exploration

Valuation

Foundations

Development

(Maintenance)

(Construction)

(Transition)

Custom Development Activities


Explore
alternatives







ƒ
Ops Concept
?
ƒ
Preliminary Design
?
ƒ
Code & Unit Test
?
ƒ
Acceptance Test
?
ƒ
Operations
?

Planning


Detailed Design
?
ƒ
Component Test
?
ƒ
Site Installation
?
ƒ
Maintenance
?

Software
Reqms



ƒ
System Test
?
ƒ
Site Activation
?
ƒ
Enhancements
?

Architecture


Feasibility Evidence







COTS Specific Activities


Explore
alternatives







ƒ
Definition of Objectives Constraints &
Priorities
?
ƒ
Tailoring
?
ƒ
Acceptance Test
?
ƒ
Component Refresh
?
ƒ
NDI/NCS Component Identification
?
ƒ
Glue code
development
?
ƒ
Site Installation
?
ƒ
Maintenance
?
ƒ
NDI/NCS Assessment/Selection
?
ƒ
NDI Integration &
Test
?
ƒ
Site Activation
?


ƒ
Prototyping


䙥a獩扩汩瑹 Ev楤in捥


Component Refresh
?




University of Southern California

Center for Systems and Software Engineering

NDI/NCS based development:
Key Concepts


Process happens where the effort happens


Don’t start with requirements


Avoid premature commitments, but have
and use a plan


Buy information early to reduce risk and
rework


Prepare for NDI/NCS change


Use Bottom up rather than top down
approach

11/02/2009

31

@USC CSSE

University of Southern California

Center for Systems and Software Engineering

Practices

Operational Concept Development Practice

System and Software Requirements Development
Practice

System and Software Architecture Development
Practice

Life Cycle Planning Practice

Feasibility Evidence Description Practice

Prototyping and Implementation Practice

Quality Management Practice

Testing Practice

11/02/2009

@USC CSSE

32

University of Southern California

Center for Systems and Software Engineering

Project Roles

11/02/2009

@USC CSSE

33

University of Southern California

Center for Systems and Software Engineering

NDI/NCS based system
development process

University of Southern California

Center for Systems and Software Engineering

NDI/NCS based system development process

University of Southern California

Center for Systems and Software Engineering

NDI/NCS based system development process

University of Southern California

Center for Systems and Software Engineering

NDI/NCS based system development process

University of Southern California

Center for Systems and Software Engineering

University of Southern California

Center for Systems and Software Engineering

NDI/NCS based system development process

University of Southern California

Center for Systems and Software Engineering

Conclusion


Need for NDI/NCS
-
based software
development process


No one
-
size fits all


Need different roles, responsibilities, criteria,
work products


Follow the right process


higher quality project


Less cost


More effective

11/02/2009

@USC CSSE

40