Rapid Development Part 2 - PowerPoint PPT Presentation

About This Presentation
Title:

Rapid Development Part 2

Description:

Avoid classic mistakes. Apply development fundamentals ... Major design styles. Foundational design concepts ... Major Design Styles. Structured design ... – PowerPoint PPT presentation

Number of Views:27
Avg rating:3.0/5.0
Slides: 48
Provided by: mihailm
Category:

less

Transcript and Presenter's Notes

Title: Rapid Development Part 2


1
Rapid DevelopmentPart 2
The Key To Your Success
RammSoft
February 20, 2008
  • Mihail V. Mihaylov (Mike Ramm)
  • CEO, RammSoft
  • www.rammsoft.com

2
What Is Rapid Development?
  • Speedy development
  • Shorter schedules
  • Developing software faster than you do now

3
Who Invented It?
  • Steve McConnell
  • http//www.stevemcconnell.com/
  • http//www.construx.com/
  • http//blogs.construx.com/blogs/

4
Steve 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)

5
Rapid-Development Strategy
  • Avoid classic mistakes
  • Apply development fundamentals
  • Manage risks to avoid catastrophic setbacks
  • Apply schedule-oriented practices

6
The Four Pillars of RD
7
Efficient Development
Efficient Development
8
The Four Pillars of RD
9
Efficient Development
10
Software-Development Fundamentals
  • Management fundamentals
  • Technical fundamentals
  • Quality-assurance fundamentals

11
Management Fundamentals
Scope
Schedule
Resources
12
Management Fundamentals
  • Planning
  • Analyzing the scope
  • Acquiring resources
  • Planning the work
  • Tracking
  • Monitoring and directing the resources
  • Measurement

13
Planning
  • Determining the size of the product
  • Functionality, complexity, etc.
  • Allocating resources
  • Estimation and scheduling
  • Organizing the team
  • Managing risk
  • Making strategic decisions

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

15
Measurement
  • Collecting metrics
  • How much?
  • How often?
  • Comparing with past projects

16
Software-Development Fundamentals
  • Management fundamentals
  • Technical fundamentals
  • Quality-assurance fundamentals

17
Technical Fundamentals
  • Requirements management
  • Design fundamentals
  • Construction fundamentals
  • Configuration management

18
Requirements 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
Requirements Management
The top 3 reasons that projects fail
  • Lack of user input
  • Incomplete requirements
  • Changing requirements

20
Requirements Fundamentals
  • Requirements-analysis methodologies
  • Structured analysis
  • Object-oriented analysis
  • System-modeling practices
  • Communication practices

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

22
System-modeling practices
  • Class diagram

23
System-modeling practices
  • Data-flow diagram

24
System-modeling practices
  • Database diagram

25
System-modeling practices
  • State-flow diagram

26
Communication Practices
  • Joint Application Development (JAD)
  • UI prototyping
  • General interview practices
  • Observation by walking around

27
Technical Fundamentals
  • Requirements management
  • Design fundamentals
  • Construction fundamentals
  • Configuration management

28
Architecture and Design Fundamentals
  • Major design styles
  • Foundational design concepts
  • Standard design approaches
  • Domain-specific design considerations
  • Use of design tools

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

30
Object-oriented Pradigm
31
Foundational Design Concepts
  • Information hiding
  • Modularity
  • Abstraction
  • Encapsulation
  • Inheritance
  • Polymorphism
  • Basic algorithms and data structures
  • Design patterns

32
Standard Design Approaches
  • Exception handling
  • Internationalization and localization
  • Portability
  • Input / output
  • Memory management
  • Floating-point arithmetic
  • Database design
  • Reuse

33
Domain-Specific Design Considerations
  • Financial applications
  • Scientific applications
  • Embedded systems
  • Real-time systems

34
Technical Fundamentals
  • Requirements management
  • Design fundamentals
  • Construction fundamentals
  • Configuration management

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

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

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

38
Technical Fundamentals
  • Requirements management
  • Design fundamentals
  • Construction fundamentals
  • Configuration management

39
Software Configuration Management
  • Practices for managing project artifacts
  • Evaluating proposed changes
  • Tracking changes
  • Handling multiple versions
  • Keeping copies of project artifacts through time

40
Software Configuration Management
  • Most often used to manage source code
  • Can be applied to
  • Requirements
  • Plans and Designs
  • Test cases
  • User documentation
  • Data

41
Software-Development Fundamentals
  • Management fundamentals
  • Technical fundamentals
  • Quality-assurance fundamentals

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

43
Classic Mistakes
  • Reducing the time on design and code reviews
  • Compressing the test schedule

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

45
Best Possible Schedule
46
QA Practices
  • Error-prone modules analysis
  • Testing
  • Technical reviews
  • Walkthroughs
  • Code reading
  • Inspections
  • Find 60-90 of the defects

47
Thank You!
  • Email mikeramm_at_rammsoft.com
  • Official website
  • http//www.rammsoft.com
  • Professional blogs
  • http//pmstories.com
  • http//spriipomisli.blogspot.com
Write a Comment
User Comments (0)
About PowerShow.com