Software Development Lifecycle & Release Management Scottie Cheng
Agenda Experience Product Release Roles in Product Development Software Development Lifecycle
Army Logistic Command Logistic information system Information Technology Officer Network management Server management Database management Web development (ASP, Java) Other skills (making slides, PC maintenance…) One-man development, no process control, no quality control. Contract with SI
Incentia Design Systems EDA software Logic synthesis STA Physical synthesis (placement) R&D engineer, R&D manager C/C++, Multi-host, multi-process, multi-thread Coding + unit testing Process: Yes.
Synopsys EDA software Physical verification Program Manager Release process Software quality Coordination/Communication Big team (100+ R&D/QA) Different location/time zone Taipei (Taiwan), Shanghai (China), Mountain View (CA), Durham (NC), Bangalore (India)
Definition Project management Program management Product management
Software Release Feature release Service pack Hotfix B4 Service pack Hotfix B4 Feature release Service pack Hotfix B4 Hotfix Service pack Hotfix
Roles in Product Development Product Application Consultant Corporate Application Engineer R&D EngineerQA Engineer Software Engineering Integration support Porting platform support Software development tool support Process/Program management Logistics Release managementTechnical publication
Software Development Lifecycle PlanDesignImplementationTestingRelease
Planning (AC, CAE) Understand the issue, and identify the root cause. Users usually do not know what they want. Requirement specification Input-Process-Output Acceptance criteria Priority Schedule
Design (R&D, CAE) Design the new function to meet the requirement. Ease of use. Functional specification
Implementation (R&D) Coding best practice Architecture/Design patterns Reuse De-coupling Coding style Code comment/documentation Keep in mind Correctness always comes first. Efficiency (performance) Testability Ease-of-debug
Testing Regression Daily Porting platform Code quality Purify/Valgrind Purecov Quantify Coverity Performance testing Runtime Memory Unit test Module-level Command-level Flow testing Alpha/Beta testing Automatic/regularPer project (R&D, QA, CAE, AC)
Release Documentation User Guide Reference Manual Release Note Training materials User feedback
Suggestions Technical basics Algorithm, data structure, design pattern, database, network Language is not the key. Master one or two language is enough. Domain knowledge Software is nothing but a tool. Team work vs one-man team Communication ability is important. Prototyping vs completeness
You are developing a PRODUCT, not writing CODE.