rapid development part 2 mihail v. mihaylov (mike ramm) ceo, rammsoft mihail v. mihaylov (mike...

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

Upload: lauren-eaton

Post on 02-Jan-2016

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 2: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 3: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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/

Page 4: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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)

Page 5: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 6: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

6

Ram

mS

oft

Ram

mS

oft

The Four Pillars of RDThe Four Pillars of RD

Page 7: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

7

Ram

mS

oft

Ram

mS

oft

Efficient DevelopmentEfficient Development

Efficient Development

Page 8: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

8

Ram

mS

oft

Ram

mS

oft

The Four Pillars of RDThe Four Pillars of RD

Page 9: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

9

Ram

mS

oft

Ram

mS

oft

Efficient DevelopmentEfficient Development

Risk Management

Development Fundamentals

Classic Mistakes Avoidance

Page 10: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

10

Ram

mS

oft

Ram

mS

oft

Software-Development FundamentalsSoftware-Development Fundamentals

• Management fundamentals

• Technical fundamentals

• Quality-assurance fundamentals

Page 11: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

11

Ram

mS

oft

Ram

mS

oft

Management FundamentalsManagement Fundamentals

Classic Trade-off Triangle

Schedule Resources

Scope

Page 12: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 13: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 14: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 15: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

15

Ram

mS

oft

Ram

mS

oft

MeasurementMeasurement

• Collecting metrics

• How much?

• How often?

• Comparing with past projects

Page 16: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

16

Ram

mS

oft

Ram

mS

oft

Software-Development FundamentalsSoftware-Development Fundamentals

• Management fundamentals

• Technical fundamentals

• Quality-assurance fundamentals

Page 17: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

17

Ram

mS

oft

Ram

mS

oft

Technical FundamentalsTechnical Fundamentals

• Requirements management

• Design fundamentals

• Construction fundamentals

• Configuration management

Page 18: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 19: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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:

Page 20: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

20

Ram

mS

oft

Ram

mS

oft

Requirements FundamentalsRequirements Fundamentals

• Requirements-analysis methodologies

• Structured analysis

• Object-oriented analysis

• System-modeling practices

• Communication practices

Page 21: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 22: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

22

Ram

mS

oft

Ram

mS

oft

System-modeling practicesSystem-modeling practices

• Class diagram

Page 23: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

23

Ram

mS

oft

Ram

mS

oft

System-modeling practicesSystem-modeling practices

• Data-flow diagram

Page 24: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

24

Ram

mS

oft

Ram

mS

oft

System-modeling practicesSystem-modeling practices

• Database diagram

Page 25: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

25

Ram

mS

oft

Ram

mS

oft

System-modeling practicesSystem-modeling practices

• State-flow diagram

Page 26: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

26

Ram

mS

oft

Ram

mS

oft

Communication PracticesCommunication Practices

• Joint Application Development (JAD)

• UI prototyping

• General interview practices

• Observation by walking around

Page 27: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

27

Ram

mS

oft

Ram

mS

oft

Technical FundamentalsTechnical Fundamentals

• Requirements management

• Design fundamentals

• Construction fundamentals

• Configuration management

Page 28: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 29: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 30: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

30

Ram

mS

oft

Ram

mS

oft

Object-oriented PradigmObject-oriented Pradigm

Page 31: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 32: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 33: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

33

Ram

mS

oft

Ram

mS

oft

Domain-Specific Design ConsiderationsDomain-Specific Design Considerations• Financial applications

• Scientific applications

• Embedded systems

• Real-time systems

Page 34: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

34

Ram

mS

oft

Ram

mS

oft

Technical FundamentalsTechnical Fundamentals

• Requirements management

• Design fundamentals

• Construction fundamentals

• Configuration management

Page 35: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 36: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 37: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 38: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

38

Ram

mS

oft

Ram

mS

oft

Technical FundamentalsTechnical Fundamentals

• Requirements management

• Design fundamentals

• Construction fundamentals

• Configuration management

Page 39: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 40: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 41: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

41

Ram

mS

oft

Ram

mS

oft

Software-Development FundamentalsSoftware-Development Fundamentals

• Management fundamentals

• Technical fundamentals

• Quality-assurance fundamentals

Page 42: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 43: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

43

Ram

mS

oft

Ram

mS

oft

Classic MistakesClassic Mistakes

• Reducing the time on design and code reviews

• Compressing the test schedule

Page 44: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 45: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

45

Ram

mS

oft

Ram

mS

oft

Best Possible ScheduleBest Possible Schedule

Page 46: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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

Page 47: Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft  February

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