A Couple of Software Development/Quality Questions
  1. Where can I find standardized language for the different phases of the software development lifecycles (e.g. waterfall, agile, etc.)?
  2. Where can I find a comparison of the processes for creating software vs. the processes for creating firmware? How different are they? How similar are they?
4 Replies
Jay Arthur
27 Posts

@Craig Roberts
The simple answer is Google “Agile or Waterfall Software Methodology.” The answers are all online.

I recommend that you always use Agile (it delivers a better product more quickly) and never Waterfall (which often fails to deliver and rarely delivers what the customer really wants). That's my 50 years of software development expertise speaking.

I don't know the firmware/software answer, but you might Google “firmware vs software methodology” to find out.

Alan Berow
4 Posts

@Craig Roberts Like Jay, I suggest do a search on “Software Development Models”, including Waterfall, V (may not really be a model), spiral, RUP, scrum (often used by Agile organizations), XP (pretty much subsumed by scrum), and Kanban (also used by Agile organizations).

I would like to point out that Agile is a culture/mindset, not a software development model.

If you would like to discuss Agile, please let me know - aberow@memberleader.asq.org.

@Craig Roberts

1. Use The Certified SQE Handbook by Linda Westfall for a description of different development models

2. There is no distinction between software and firmware in terms of processes. Firmware is a low-level software, but most of the time it is used to describe embedded software.

@Craig Roberts
I don't recommend “go google it”.

There is a difference between the system stage (development status or stage of the system) as it progresses through the lifecycle, versus a model of the lifecycle itself.

ISO/IEC 12207 covers software system stages, lifecycle processes and lifcycle models. ISO/IEC TS 24748‐1, ISO/IEC TR 24748‐2, ISO/IEC TR 24748‐3, and ISO/IEC/IEEE 24748‐4 provide additional
detail regarding life cycle models and stages.

For solid reference texts I recommend:

Boehm & Turner, Balancing Agility and Discipline - A guide for the perplexed

Craig Larman, Agile and Iterative Development: A Manager's Guide
Craig Larman, Practices for Scaling Lean & Agile Development
Craig Larman, Scaling Lean & Development: Thinking & Organizational Tools for Large-Scale Scrum

Regarding embedded software, it is true that a general set software lifecycle processes (or even a lifecycle model) could apply to embedded systems. But the knowledge details to be applied in many of the lifecycle processes differ for embedded systems and they must be treated as systems, not simple software applications. Requirements, development environment, runtime platform constraints, debugging, verification, operation and maintenance can differ substantially. So learning the basics of software engineering lifecycle processes and stages is a good start but then embedded systems involve many more considerations.