Rapid DevelopmentPart 2
Rapid DevelopmentPart 2
Mihail V. Mihaylov (Mike Ramm)CEO, RammSoft
www.rammsoft.com
Mihail V. Mihaylov (Mike Ramm)CEO, RammSoft
www.rammsoft.com
February 20, 2008February 20, 2008
RammSoftRammSoft
The KeyTo Your Success
The KeyTo Your Success
2
Ram
mS
oft
Ram
mS
oft
What Is Rapid Development?What Is Rapid Development?
• Speedy development
• Shorter schedules
• Developing software faster than you do now
3
Ram
mS
oft
Ram
mS
oft
Who Invented It?Who Invented It?
Steve McConnell
http://www.stevemcconnell.com/
http://www.construx.com/
http://blogs.construx.com/blogs/
4
Ram
mS
oft
Ram
mS
oft
Steve McConnell’s BooksSteve McConnell’s 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)
5
Ram
mS
oft
Ram
mS
oft
Rapid-Development StrategyRapid-Development Strategy
• Avoid classic mistakes
• Apply development fundamentals
• Manage risks to avoid catastrophic setbacks
• Apply schedule-oriented practices
6
Ram
mS
oft
Ram
mS
oft
The Four Pillars of RDThe Four Pillars of RD
7
Ram
mS
oft
Ram
mS
oft
Efficient DevelopmentEfficient Development
Efficient Development
8
Ram
mS
oft
Ram
mS
oft
The Four Pillars of RDThe Four Pillars of RD
9
Ram
mS
oft
Ram
mS
oft
Efficient DevelopmentEfficient Development
Risk Management
Development Fundamentals
Classic Mistakes Avoidance
10
Ram
mS
oft
Ram
mS
oft
Software-Development FundamentalsSoftware-Development Fundamentals
• Management fundamentals
• Technical fundamentals
• Quality-assurance fundamentals
11
Ram
mS
oft
Ram
mS
oft
Management FundamentalsManagement Fundamentals
Classic Trade-off Triangle
Schedule Resources
Scope
12
Ram
mS
oft
Ram
mS
oft
Management FundamentalsManagement Fundamentals
• Planning
• Analyzing the scope
• Acquiring resources
• Planning the work
• Tracking
• Monitoring and directing the resources
• Measurement
13
Ram
mS
oft
Ram
mS
oft
PlanningPlanning
• Determining the size of the product
• Functionality, complexity, etc.
• Allocating resources
• Estimation and scheduling
• Organizing the team
• Managing risk
• Making strategic decisions
14
Ram
mS
oft
Ram
mS
oft
TrackingTracking
• 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
15
Ram
mS
oft
Ram
mS
oft
MeasurementMeasurement
• Collecting metrics
• How much?
• How often?
• Comparing with past projects
16
Ram
mS
oft
Ram
mS
oft
Software-Development FundamentalsSoftware-Development Fundamentals
• Management fundamentals
• Technical fundamentals
• Quality-assurance fundamentals
17
Ram
mS
oft
Ram
mS
oft
Technical FundamentalsTechnical Fundamentals
• Requirements management
• Design fundamentals
• Construction fundamentals
• Configuration management
18
Ram
mS
oft
Ram
mS
oft
Requirements ManagementRequirements Management
• Gathering requirements
• Recording them
• In a document, email, UI storyboard, prototype, RM software, etc
• Tracking the design and code against them
• Managing changes
19
Ram
mS
oft
Ram
mS
oft
Requirements ManagementRequirements Management
• Lack of user input
• Incomplete requirements
• Changing requirements
The top 3 reasons that projects fail:
20
Ram
mS
oft
Ram
mS
oft
Requirements FundamentalsRequirements Fundamentals
• Requirements-analysis methodologies
• Structured analysis
• Object-oriented analysis
• System-modeling practices
• Communication practices
21
Ram
mS
oft
Ram
mS
oft
Requirements-Analysis MethodologiesRequirements-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
22
Ram
mS
oft
Ram
mS
oft
System-modeling practicesSystem-modeling practices
• Class diagram
23
Ram
mS
oft
Ram
mS
oft
System-modeling practicesSystem-modeling practices
• Data-flow diagram
24
Ram
mS
oft
Ram
mS
oft
System-modeling practicesSystem-modeling practices
• Database diagram
25
Ram
mS
oft
Ram
mS
oft
System-modeling practicesSystem-modeling practices
• State-flow diagram
26
Ram
mS
oft
Ram
mS
oft
Communication PracticesCommunication Practices
• Joint Application Development (JAD)
• UI prototyping
• General interview practices
• Observation by walking around
27
Ram
mS
oft
Ram
mS
oft
Technical FundamentalsTechnical Fundamentals
• Requirements management
• Design fundamentals
• Construction fundamentals
• Configuration management
28
Ram
mS
oft
Ram
mS
oft
Architecture and Design FundamentalsArchitecture and Design Fundamentals
• Major design styles
• Foundational design concepts
• Standard design approaches
• Domain-specific design considerations
• Use of design tools
29
Ram
mS
oft
Ram
mS
oft
Major Design StylesMajor 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
30
Ram
mS
oft
Ram
mS
oft
Object-oriented PradigmObject-oriented Pradigm
31
Ram
mS
oft
Ram
mS
oft
Foundational Design ConceptsFoundational Design Concepts
• Information hiding
• Modularity
• Abstraction
• Encapsulation
• Inheritance
• Polymorphism
• Basic algorithms and data structures
• Design patterns
32
Ram
mS
oft
Ram
mS
oft
Standard Design Approaches Standard Design Approaches
• Exception handling
• Internationalization and localization
• Portability
• Input / output
• Memory management
• Floating-point arithmetic
• Database design
• Reuse
33
Ram
mS
oft
Ram
mS
oft
Domain-Specific Design ConsiderationsDomain-Specific Design Considerations• Financial applications
• Scientific applications
• Embedded systems
• Real-time systems
34
Ram
mS
oft
Ram
mS
oft
Technical FundamentalsTechnical Fundamentals
• Requirements management
• Design fundamentals
• Construction fundamentals
• Configuration management
35
Ram
mS
oft
Ram
mS
oft
Construction Fundamentals (1)Construction 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
36
Ram
mS
oft
Ram
mS
oft
Construction Fundamentals (2)Construction 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
37
Ram
mS
oft
Ram
mS
oft
Construction Fundamentals (3)Construction 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
38
Ram
mS
oft
Ram
mS
oft
Technical FundamentalsTechnical Fundamentals
• Requirements management
• Design fundamentals
• Construction fundamentals
• Configuration management
39
Ram
mS
oft
Ram
mS
oft
Software Configuration ManagementSoftware Configuration Management
Practices for managing project artifacts
• Evaluating proposed changes
• Tracking changes
• Handling multiple versions
• Keeping copies of project artifacts through time
40
Ram
mS
oft
Ram
mS
oft
Software Configuration ManagementSoftware Configuration Management
• Most often used to manage source code
• Can be applied to
• Requirements
• Plans and Designs
• Test cases
• User documentation
• Data
41
Ram
mS
oft
Ram
mS
oft
Software-Development FundamentalsSoftware-Development Fundamentals
• Management fundamentals
• Technical fundamentals
• Quality-assurance fundamentals
42
Ram
mS
oft
Ram
mS
oft
QA FundamentalsQA 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
43
Ram
mS
oft
Ram
mS
oft
Classic MistakesClassic Mistakes
• Reducing the time on design and code reviews
• Compressing the test schedule
44
Ram
mS
oft
Ram
mS
oft
Why QA practices are important?Why 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
45
Ram
mS
oft
Ram
mS
oft
Best Possible ScheduleBest Possible Schedule
46
Ram
mS
oft
Ram
mS
oft
QA PracticesQA Practices
• Error-prone modules analysis
• Testing
• Technical reviews
• Walkthroughs
• Code reading
• Inspections
• Find 60-90% of the defects
47
Ram
mS
oft
Ram
mS
oft
Thank You!Thank You!
• Email: [email protected]
• Official website:
• http://www.rammsoft.com
• Professional blogs:
• http://pmstories.com
• http://spriipomisli.blogspot.com