Various models for project development have been borrowed from the software development community, while others build on more “traditional” engineering processes.
Two main models:
Waterfall development method
Agile / iterative development method
Naturally progresses from concepts to detailed levels of implementation.
Relies on extensive documentation, planning, and usage of tools such as Gantt charts to align schedule with budget.
The waterfall method is typical in “traditional” engineering design, as it originated from manufacturing and construction industries.
💸 changes to construction later in the process are very costly
🖥️ Places significant emphasis on documentation (requirements documents and design documents, as well as code documentation).
🧾 Works well when requirements and scope are fixed.
–>Problem: clients may not know what their requirements are until later!
💰Adapting it to software development led to many projects being late, over-budget, or abandoned.
Agile development embraces constant changes.
Teams continuously refine a working but incomplete prototype until the customer is happy.
Next steps depend on evaluation of the current step, as opposed to some master plan.
Evaluation includes end-user / customer.
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Many of these concepts translate to hardware projects:
Product development is broken into increments or “sprints” that minimize up-front planning and design.
The product is demonstrated to the stakeholders at each iteration.
Face-to-face interaction is favoured over phone / chat / wiki / email, to reduce cycle time.
Daily “scrums” are held, which are very short progress meetings involving all team members with a minimal agenda.
⛓️💥It would seem frequent prototyping is at odds with hardwarw development.
-> Example: masks costs in chip design costs many millions of dollars ($30-$100 million).
Still, some organizations offer multi-project wafers placing many independent projects on the same mask to amortize costs, allowing intermediate test chips to be made before final tape-out.
⚖️ Board-level design is much less costly.
• Efficient if you can plan well.
• The testing phase is a distinct phase that can only start after implementation and integration.
• Value of product is only clear at the end.
• Project may fail spectacularly on the release date.
• “Make it up before you start, live with the consequences”
• It’s hard to plan well, so iterate quickly instead.
• Testing is done many times through the agile development cycle.
• Value of the product can be assessed after each iteration.
• Projects may "fail often and early" throughout each iterative phase.
• “Make it up as you go along.”
• Visualization concurrent (parallel) and sequential (serial) tasks is useful for project planning.
– It’s easy to see project interdependencies.
– Gantt charts allow easy identification of the critical path through a project/phase: those activities that if delayed, will delay the entire project phase.
• Gantt charts can be used convey progress, which is useful for multi-person projects.