420 likes | 798 Views
NDI and Services-Based Software Development Process. Supannika Koolmanojwong November 2, 2009. Outline. Non Developmental Item (NDI) Net-Centric Services (NCS) What are in the process?. What is NDI?. Non-Developmental Item an item that is previously developed and available to use.
E N D
NDI and Services-Based Software Development Process Supannika Koolmanojwong November 2, 2009
Outline • Non Developmental Item (NDI) • Net-Centric Services (NCS) • What are in the process? @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 • Joomla, Drupal, Wordpress • Coldfusion, Dreamweaver • System-NDI • Language: PHP, C++, Java, • Database: MySQL • Server: Apache • Others: Java Libraries @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
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
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 @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
NDI, NCS characteristics * Will you be able to freeze the version you are using? @USC CSSE
Software Process Model • ISO/IEC 12207 • RUP /MBASE • Incremental Commitment Model @USC CSSE
The Incremental Commitment ModelLife 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 © USC-CSE 2007-2008
ICM HSI Levels of Activity for Complex Systems © USC-CSE 2007-2008
Software Development Phase Activities: @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
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 @USC CSSE
Project Roles @USC CSSE
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 @USC CSSE