Learning Computer Programming
Introduction to Designing and Developing Software
Presenter: Mani Sarkar ([email protected])
Designing Software
When we hear the word ‘design’, what is the first thing that comes into our mind?
Something visual?
Designing Software
Real world analogy: an architect’s blue-print & model
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
Designing Software- Important Considerations of Software design
- Security- Modularity & Cohesion- User friendliness- Reusability & Scalability
- Reliability - Performance- Maintainability, among others
Designing Software- Design approaches
- Upfront design- Emerging design- Design assisted by design patterns- Discovery method [ad-hoc]
Designing Software (contd.)In reality: modeling & architecting flow of the actions
Thinking and expressing real world actions into design & flow
Developing Software
- heart of the software development process- requires experience & discipline- peer review and feedback- best practices
Developing Software (contd.)
- well-crafted code- methodology chosen defines the future (factor)- language & platform chosen defines the future (factor)
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
Finally...Tests capture behaviour and are specifications of your requirements, and depends on:
- test coverage- quality of the tests
Wrap Up
Questions?