Title: Rapid Development Part 2
1Rapid DevelopmentPart 2
The Key To Your Success
RammSoft
February 20, 2008
- Mihail V. Mihaylov (Mike Ramm)
- CEO, RammSoft
- www.rammsoft.com
2What Is Rapid Development?
- Speedy development
- Shorter schedules
- Developing software faster than you do now
3Who Invented It?
- Steve McConnell
- http//www.stevemcconnell.com/
- http//www.construx.com/
- http//blogs.construx.com/blogs/
4Steve McConnells Books
- Code Complete (1993) / (2004)
- Rapid Development (1996)
- Software Project Survival Guide (1997)
- After The Gold Rush (1999) / Professional
Software Development (2003) - Software Estimation Demystifying the Black Art
(2006)
5Rapid-Development Strategy
- Avoid classic mistakes
- Apply development fundamentals
- Manage risks to avoid catastrophic setbacks
- Apply schedule-oriented practices
6The Four Pillars of RD
7Efficient Development
Efficient Development
8The Four Pillars of RD
9Efficient Development
10Software-Development Fundamentals
- Management fundamentals
- Technical fundamentals
- Quality-assurance fundamentals
11Management Fundamentals
Scope
Schedule
Resources
12Management Fundamentals
- Planning
- Analyzing the scope
- Acquiring resources
- Planning the work
- Tracking
- Monitoring and directing the resources
- Measurement
13Planning
- Determining the size of the product
- Functionality, complexity, etc.
- Allocating resources
- Estimation and scheduling
- Organizing the team
- Managing risk
- Making strategic decisions
14Tracking
- Management-level controls
- Task lists, status meetings, status reports,
milestone reviews, budget reports, management by
walking around - Technical-level controls
- Technical audits, technical reviews, quality gates
15Measurement
- Collecting metrics
- How much?
- How often?
- Comparing with past projects
16Software-Development Fundamentals
- Management fundamentals
- Technical fundamentals
- Quality-assurance fundamentals
17Technical Fundamentals
- Requirements management
- Design fundamentals
- Construction fundamentals
- Configuration management
18Requirements Management
- Gathering requirements
- Recording them
- In a document, email, UI storyboard, prototype,
RM software, etc - Tracking the design and code against them
- Managing changes
19Requirements Management
The top 3 reasons that projects fail
- Lack of user input
- Incomplete requirements
- Changing requirements
20Requirements Fundamentals
- Requirements-analysis methodologies
- Structured analysis
- Object-oriented analysis
- System-modeling practices
- Communication practices
21Requirements-Analysis Methodologies
- Structured analysis
- Functional view (DF diagrams)
- Data view (ER diagrams)
- Dynamic view (ST diagrams)
- Object-oriented analysis
- The things in the system (objects), the things
outside the system (actors, data), their
relationships - Class diagrams, UML
22System-modeling practices
23System-modeling practices
24System-modeling practices
25System-modeling practices
26Communication Practices
- Joint Application Development (JAD)
- UI prototyping
- General interview practices
- Observation by walking around
27Technical Fundamentals
- Requirements management
- Design fundamentals
- Construction fundamentals
- Configuration management
28Architecture and Design Fundamentals
- Major design styles
- Foundational design concepts
- Standard design approaches
- Domain-specific design considerations
- Use of design tools
29Major Design Styles
- Structured design
- Every program can be created with a limited
number of structural elements - Object-oriented design
- OOD elaborates the analysis models to produce
implementation specifications - OOA focuses on what the system does, OOD on how
the system does it
30Object-oriented Pradigm
31Foundational Design Concepts
- Information hiding
- Modularity
- Abstraction
- Encapsulation
- Inheritance
- Polymorphism
- Basic algorithms and data structures
- Design patterns
32Standard Design Approaches
- Exception handling
- Internationalization and localization
- Portability
- Input / output
- Memory management
- Floating-point arithmetic
- Database design
- Reuse
33Domain-Specific Design Considerations
- Financial applications
- Scientific applications
- Embedded systems
- Real-time systems
34Technical Fundamentals
- Requirements management
- Design fundamentals
- Construction fundamentals
- Configuration management
35Construction Fundamentals (1)
- Coding practices
- Variable and function naming, layout,
documentation - Data-related concepts
- Scope, persistence, binding time
- Guidelines for using types of data
- Enumerated types
- Arrays
- Pointers
36Construction Fundamentals (2)
- Control-related concepts
- Conditionals
- Unusual structures - goto and return
- Recursive procedures
- Error-detection practices
- Assertions
- Rules for packaging code into routines, modules,
classes, and files
37Construction Fundamentals (3)
- Unit-testing and debugging practices
- Integration strategies
- Incremental integration, big-bang integration,
evolutionary development - Code-tuning strategies and practices
- Use of construction tools
- IDEs, source-code control, code libraries, code
generators
38Technical Fundamentals
- Requirements management
- Design fundamentals
- Construction fundamentals
- Configuration management
39Software Configuration Management
- Practices for managing project artifacts
- Evaluating proposed changes
- Tracking changes
- Handling multiple versions
- Keeping copies of project artifacts through time
40Software Configuration Management
- Most often used to manage source code
- Can be applied to
- Requirements
- Plans and Designs
- Test cases
- User documentation
- Data
41Software-Development Fundamentals
- Management fundamentals
- Technical fundamentals
- Quality-assurance fundamentals
42QA Fundamentals
- Reworking defective requirements, design, and
code consumes 40-50 of the total cost of the
development - 1 hour spent on defect prevention reduces repair
time 3 to 10 hours - Reworking a requirements problem in operation
stage costs 50 to 200 times more than in
requirements stage - About 60 of all defects exist at design time
43Classic Mistakes
- Reducing the time on design and code reviews
- Compressing the test schedule
44Why QA practices are important?
- Software quality and software schedules are
related - Poor quality is one of the most common reasons
for schedule overruns - 95 of defect addressed is the optimal value
45Best Possible Schedule
46QA Practices
- Error-prone modules analysis
- Testing
- Technical reviews
- Walkthroughs
- Code reading
- Inspections
- Find 60-90 of the defects
47Thank You!
- Email mikeramm_at_rammsoft.com
- Official website
- http//www.rammsoft.com
- Professional blogs
- http//pmstories.com
- http//spriipomisli.blogspot.com