510 likes | 527 Views
NDI & NCS in CSCI 577. Supannika Koolmanojwong 09/09/09. Extended from Jesal Bhuta’s presentation for CSCI577a Fall 2006. Outline. Non Developmental Item (NDI) COTS, Open Source Software, Reuse library and Customer-furnished package Net-Centric Services (NCS)
E N D
NDI & NCS in CSCI 577 Supannika Koolmanojwong 09/09/09 Extended from Jesal Bhuta’s presentation for CSCI577a Fall 2006
Outline • Non Developmental Item (NDI) • COTS, Open Source Software, Reuse library and Customer-furnished package • Net-Centric Services (NCS) • Web services, Web application, Online application • CSCI577 & Possible special cases • Process decision tables • Architected Agile, Use NDI, NDI-intensive, NCS • Identify Objectives, Constraints and Priorities • Explore Alternatives @USC CSSE
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 @USC CSSE
Common NDIs in CSCI577 • Application-NDI • MS office, WordPerfect • OCR software • Business Works • Coldfusion, Dreamweaver • System-NDI • Language: PHP, C++, Java, • Database: MySQL • Server: Apache • Others: Java Libararies @USC CSSE
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 @USC CSSE
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. @USC CSSE
COTS Advantages and Disadvantages • 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
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) @USC CSSE
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. @USC CSSE
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? @USC CSSE
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 @USC CSSE
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 @USC CSSE
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 @USC CSSE
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 @USC CSSE
100% % of Capability Requirements Implemented by NDI products 30% 0% NDI Based Applications System with just a single NDI product System with no NDI product Types of NDI-based systems @USC CSSE
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 @USC CSSE
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 @USC CSSE
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 @USC CSSE
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 @USC CSSE
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 @USC CSSE
Selection of NDI/NCS Components • Assessment of: • Functional Win Conditions • capability offered • Performance Win Conditions • timing & sizing constraints • Others • cost/training/installation/maintenance/market trend / product line @USC CSSE
Outline • Non Developmental Item (NDI) • COTS, Open Source Software, Reuse library and Customer-furnished package • Net-Centric Services (NCS) • Web services, Web application, Online application • CSCI577 & Possible special cases • Process decision tables • Architected Agile, Use NDI, NDI-intensive, NCS • Identify Objectives, Constraints and Priorities • Explore Alternatives @USC CSSE
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. @USC CSSE
Common NCSs in CSCI577 • Web services • Google Services, Yahoo Services • Content Management System • Drupal, Joomla • 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 @USC CSSE
NDI, NCS characteristics * Will you be able to freeze the version you are using? @USC CSSE
NCS Advantages and Disadvantages Advantages Disadvantages @USC CSSE
Issues of NCS • Problems with vendors • Need for flexibility in defining requirements • Importance of operational demos • Assessment of specific attributes • Life-cycle issues @USC CSSE
Outline • Non Developmental Item (NDI) • COTS, Open Source Software, Reuse library and Customer-furnished package • Net-Centric Services (NCS) • Web services, Web application, Online application • CSCI577 & Possible special cases • Process decision tables • Architected Agile, Use NDI, NDI-intensive, NCS • Identify Objectives, Constraints and Priorities • Explore Alternatives @USC CSSE
ICM Key Concepts • Evidence/ Risk based decision points • risk or evidence such as early prototyping or explore alternatives enable stakeholders to converge on an appropriate special case development process. • Concurrent Engineering • instead of sequentially, concurrently assess opportunities & risks; requirements, possible NDI or services, plans, business cases; and hw, sw and human factors. • synchronized, stabilized, and committed to the next-phase plans. • Feasibility Rationale as a First Class Citizen • thoroughly analyze project feasibility • Show evidence in the form of business case analysis, effort/schedule estimation, NDI/Services evaluations, prototyping, architecture, and success critical stakeholders’ satisfaction. • Continuous Improvement • Work closely with clients; getting advice from mentors and architecture review boards • constantly get feedback and incrementally develop • Success critical stakeholders incrementally commit to the project’s continuation. @USC CSSE
Why special cases? • No one-size fits all • Need different roles, responsibilities, criteria, work products @USC CSSE
ICM Special Cases @USC CSSE
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 @USC CSSE
Special Case Decision Driver Note: Decision importance scale varies from project to project Rating Scale @USC CSSE
NDI/NCS based system development process In OCD Use Architected Agile Process Emphasize on Application NDIs, not System NDIs Use NDI-intensive or Net-Centric Services Processes In FED Use NDI, or Net-Centric Services Process
Outline • Non Developmental Item (NDI) • COTS, Open Source Software, Reuse library and Customer-furnished package • Net-Centric Services (NCS) • Web services, Web application, Online application • CSCI577 & Possible special cases • Process decision tables • Architected Agile, Use NDI, NDI-intensive, NCS • Identify Objectives, Constraints and Priorities • Explore Alternatives @USC CSSE
Examples of OC&P • Objectives • To allow volunteer candidates to submit application online • To provide a channel for donors to donate money to the organization • Constraints • The system must be able to run on Linux machine • Maximum budget is $200 @USC CSSE
Identify Objectives & Constraints @USC CSSE
Identify Objectives & Constraints @USC CSSE
Identify Objectives & Constraints @USC CSSE
Identify Objectives & Constraints @USC CSSE
Explore Alternatives @USC CSSE
Explore Alternatives @USC CSSE
Explore Alternatives @USC CSSE
Explore Alternatives @USC CSSE