Upload
netdbncku
View
273
Download
0
Embed Size (px)
Citation preview
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
Hotfix
B4
Service pack
Hotfix
Hotfix
B4
Feature release
Service pack
Hotfix
B4 B4
Hotfix
Service pack
Hotfix
Hotfix
Roles in Product Development
Product
Application Consultant
Corporate Application Engineer
R&D Engineer
QA Engineer
Software Engineeri
ngIntegration
support
Porting platform support
Software development tool
support
Process/Program management
Logistics
Release management
Technical publication
Software Development Lifecycle
Plan
Design
ImplementationTesting
Release
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/regular Per 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.