13
Learning Computer Programming Introduction to Designing and Developing Software Presenter: Mani Sarkar ([email protected] )

Introduction to designing and developing software

Embed Size (px)

DESCRIPTION

A brief introduction to designing and developing software

Citation preview

Page 1: Introduction to designing and developing software

Learning Computer Programming

Introduction to Designing and Developing Software

Presenter: Mani Sarkar ([email protected])

Page 2: Introduction to designing and developing software

Designing Software

When we hear the word ‘design’, what is the first thing that comes into our mind?

Something visual?

Page 3: Introduction to designing and developing software

Designing Software

Real world analogy: an architect’s blue-print & model

Page 4: Introduction to designing and developing software

Designing Software- What do we mean by designing software?

- defining a sequence of steps or actions- a flow of actions, to achieve a goal- problem solving and planning phase*- its a post-requirement gathering phase*

- its a pre-coding phase*- keeping the end-goal in mind all the time

* depends on the methodology practised

Page 5: Introduction to designing and developing software

Designing Software- Important Considerations of Software design

- Security- Modularity & Cohesion- User friendliness- Reusability & Scalability

- Reliability - Performance- Maintainability, among others

Page 6: Introduction to designing and developing software

Designing Software- Design approaches

- Upfront design- Emerging design- Design assisted by design patterns- Discovery method [ad-hoc]

Page 7: Introduction to designing and developing software

Designing Software (contd.)In reality: modeling & architecting flow of the actions

Thinking and expressing real world actions into design & flow

Page 8: Introduction to designing and developing software

Developing Software

- heart of the software development process- requires experience & discipline- peer review and feedback- best practices

Page 9: Introduction to designing and developing software

Developing Software (contd.)

- well-crafted code- methodology chosen defines the future (factor)- language & platform chosen defines the future (factor)

Page 10: Introduction to designing and developing software

Developing Software (contds)- Various approaches

- ad-hoc (error prone)- guided by specification & design

(followed by tests)- guided by tests (test-first, test-

driven)- outside in- inside out

Page 11: Introduction to designing and developing software

Finally...Tests capture behaviour and are specifications of your requirements, and depends on:

- test coverage- quality of the tests

Page 12: Introduction to designing and developing software

Wrap Up

Page 13: Introduction to designing and developing software

Questions?