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