480 likes | 616 Views
WEEK 3. 4/12/2005. TOPICS. Makeup class dates Application Development Procedures Development tools Sample C Application. Possible Dates. Topics - Linux Desktop, Sys-admin tasks 4/18 Mon 4/20 Wed 4/25 Mon 4/27 Wed. Application Development. Traditional Software Applications Env.
E N D
WEEK 3 4/12/2005
TOPICS • Makeup class dates • Application Development Procedures • Development tools • Sample C Application
Possible Dates • Topics - Linux Desktop, Sys-admin tasks • 4/18 Mon • 4/20 Wed • 4/25 Mon • 4/27 Wed
Application Development • Traditional Software Applications Env. - Client-server model (non-distributed) - Non-portable - Upgrades were tedious - Failure recovery wasn’t inbuilt - Process defined by experimentation - IT dept. personnel were “revered”
Application Development (contd.) • Modern Software Applications Env. - Distributed Applications - Well defined process - Transparent Upgrades - Portable, clustering, load-balancing - IT “reduced” to commodity – think outsourcing
Distributed Application • Deployment environment consists of more than one server (host, hardware box) • CORBA – Common Object Request Broker Architecture • J2EE – Java-2.0 Enterprise Edition • .NET – sponsored by Microsoft
Software Applications • New Product • New Features (enhancements) to existing system • Migration of existing system (hardware vs software • Product support
SDLC • Software Development Life Cycle • http://www.webopedia.com/TERM/S/SDLC.html • process of developing information systems through investigation, analysis, design, implementation and maintenance
SDLC Phases • Requirements • Analysis • Design • Development • Testing • Deployment
Kick-Off • Identify stakeholders • Ensure Mgmt buy-in - $$$ • Communicate high-level goals of new system • Sign-off on Statement of Work (SOW) • Agree upon time-lines • Cross-team resource allocation • Deliverable: Signed-off SOW and Project plan
Kick-Off (contd.) • Identify product release strategy (phased?) • Identify migration plan from current system to new system (if necessary)
Phased Delivery Feature 1 Feature 2 Feature 3 Common feature
Phased Delivery (contd.) PHASE-2 PHASE-1
Phased Delivery (contd.) PHASE-1 PHASE-2
Phased Delivery (contd.) PHASE-1 PHASE-2
MIGRATION STRATEGY NEW PRODUCT OLD PRODUCT T1 T2 T3 T2-T3: Co-exist period T2: New Product live T3: Old Product retire
REQUIREMENTS • Identify high-level system requirements • Requirements to be categorized based on delivery phase • Involve cross-team resources in requirements gathering • Obtain sign-off from all teams on requirements document • Deliverables: • Signed off Requirements document • Signed off Use-case document
REQUIREMENTS (contd.) • Requirements to include non-business requirements like security, presentation/UI, performance, scalability, redundancy …etc • Requirements to include external system interfaces clearly e.g. the feed from Chase shall be ftp • Requirements to cover migration issues • Avoid TBDs, Open Issues … etc
ANALYSIS • Identify system components and owners • Assign requirements to corresponding components • Identify component level requirements (sub-requirements) • Analysis to include common components like security, presentation, performance …etc • Analysis document to be peer-reviewed • All TBDs/Open Issues to be resolved and/or signed-off • Deliverable: System Analysis Document
DESIGN • Develop overall architecture of the system • Architecture to include all external interfaces (ftp, odbc … etc) • Identify internal interfaces (e.g. between commission and investment modules) • Develop requirements mapping matrix • Design to identify all COTS and dependencies
DESIGN (contd.) • Identify data model • Identify individual modules (commission, receipts …etc) • Identify interface modules (ftp, odbc … etc) • Identify common modules/frameworks (db access, messaging, UI, security … etc)
DOCUMENTATION • Identify list of design documents • High Level Design Documents • Low Level Design Documents • Unit Test Plans • Interface Control Documents • Pair-wise Test Plans • Sub-system Integration Test Plans • System Integration Test Plans • Performance Test Plans
DOCUMENTATION (contd.) • UI Behavior Document • Identify document owners and schedules • Documents to be reviewed formally across teams and comments solicited
DEVELOPMENT • Policies and Procedures • Documentation • Third-party COTS, Licenses, Dependencies • CM procedures • Repository • Development/Testing tools • Identify module owners
DEVELOPMENT (contd.) • Identify development environment(s) • Development Guidelines • Coding standards and policies • Formal code inspection by peers • Resolve inter-module dependencies
TESTING • Identify Test Environment(s) • Test process • Unit Level • Pair-wise • Sub-system • System (including external interfaces – all upstream, downstream and lateral systems) • Identify Test metrics • Develop test drivers where needed to minimize schedule impacts
TESTING (contd.) • Ensure all requirements are met – obtain sign-off on test results • Operational Flows Testing • UI Testing • Performance Testing • Audit/Security Compliance Testing • Fail-over/Contingency Testing • Regression Testing
TESTING (contd.) • Beta Release • Test User Group
DEPLOYMENT • Product rollout plan • Deployment environments – production, contingency … • Run-time licenses, COTS issues
COTS • Commercial Off the Shelf Software • Avoid “vendor-lockin” • Vendor reliability – market share, # of yrs in industry …etc • Support costs/structure (e.g. Gold/Silver/Bronze) • Upgrade costs/roadmap • Licensing structure • development vs runtime • Site license vs user license vs CPU license • Legalese – company sale, bankruptcy …etc
OUTSOURCING • No formal process defined yet • Each company has its own customized process • Areas of concern • Quality • Security • Multi-site development • Ownership issues
Websites • www.webopedia.com • www.acm.org (Association for Computing Machinery) • www.omg.org (Object Management Group) • www.ibm.com Developers • www.pmi.org • www.howstuffworks.com
Development Tools • Development languages • Editors • Compilers • Debuggers • Testing Tools • Configuration Management Tools
Development Languages • Choice dictated by requirements esp. hardware requirements e.g.main-frame vs PC • Some languages blend well with certain methodologies or architecture e.g. C++ is an Object-oriented language suited for client-server and distributed applications Java is Object-oriented, suited for web applications i.e. applications deployed over the web
EDITORS • IDE – Integrated Development Environment • User friendly, graphical tool to write code in a particular language • Provides syntax high-lighting and checking • Integrated with language compiler, debugger etc • e.g. Turbo-C, Turbo-Pascal • Usually free but some non-free products too • IDEs should not introduce any proprietary code into original source code
COMPILERS • Convert human-readable code to machine-readable instructions • Both open-source and vendor supported • cc – C language compiler, part of Unix • CC – C++ compiler, part of Unix • gcc – GNU version of C/C++ compiler • Provide debuggers to analyze output code
make • Utility for automating large compilations. • Very efficient - eliminates redundant recompilations i.e. compiles only needed modules • Rules are defined (by default) in a file called makefile or Makefile or a separate file can be specified
DEBUGGERS • Utilities to trouble-shoot compiled code • Must be able to execute code in “trace” mode • Must be able to display internal system contents (stack, registers…etc) during program execution • dbx – Sun’s C/C++ debugger • gdb – GNU C/C++ debugger • Debuggers integrated with IDE
TESTING TOOLS • Simulate various external conditions (“boundary” conditions) • Test-cases must align with requirements • Performance testing tools simulate traffic e.g. simultaneous website access WinRunner, LoadRunner from Mercury • Mostly commercial, some open-source (JUnit)
Configuration Mgmt Tools • Manage source code • Different versions of code i.e. version A of code corresponds to version X of product • Multi-user development • Multi-site development • Commercial (IBM’s Clearcase, PVCS, SourceSafe) and open-source products (SCCS, cvs)
RCS – Revision Control System • Maintain all versions of code • Prevent multiple users from changing code simultaneously • “Merge” two changes into a single change • Maintains change logs
http://acelinux.tripod.com File: ace.tar.gz
Sample Application mkdir sampleapp mv ace.tar.gz sampleapp cd sampleapp gunzip ace.tar.gz tar -xvf ace.tar cd ace
Sample Application • Calculator program developed in C language. • The library libmath.a provides all the required arithmetic functions. • All .c files are C source files • makefile is for make utility – contains rules for compilation • Software is built using the make utility
Sample Application • lib – directory contains the “libmath.a” library. • libmath.a contains addition.o, subtraction.o, multiplication.odivision.o modules • To build cd lib make clean make
Sample Application • source – directory contains the main calculator application. • This application uses the libmath.a library • To build: cd ../source make clean make
Sample Application cd ~/ace/source ./calculator
Next Week • Revisiting the | operator • Version Control Demo/Exercise • User Management