• Software Project Management • Agile Coaching and Introduction •
Managing software projects is complex, sometimes bordering on chaotic. Software simply isn't like all the
other stuff - you can't touch it, you usually can't exhaustively analyse it, you can't x-ray it for defects. Your requirements change during the development and your estimates are optimistic. Worse, when architecture is involved, you can't even break it up into manageable chunks. It's as if, despite your best efforts, everything is insidiously coupled from the start.
Embedded products come with additional challenges. The agile notion of sprint zero, in which you set up your architecture and tool-chain over a month or so, is optimistic to say the least. Financial constraints usually limit the capabilities of the target platform. Often a basic real-time operating system is a luxury, file systems can be arduous to develop, and you can forget all about garbage collection! Not to mention that embedded systems often have real-time considerations that enterprise applications do not - motion control for instance. And as if that wasn't enough there's the regulatory environment to consider.
At Lean Systems we understand traditional and agile methods. We understand embedded
developments. And we understand applying agile to embedded developments means doing things differently. Your team works with hardware and mechanical developers - so how're they going to work with agile? It just takes longer to write embedded code, and your regulatory environment means lots of documentation and traceability requirements. How's that going to work? You can't just plunge ahead and incrementally build your systems - the risk of architectural rework is too high. And yet trying to design it all up front creates a massive pile of intellectual work in progress (which perishes). The lean principles - reduce work in progress, reduce waste, reduce complexity - still apply to embedded software. This means your business will be better off delivering small, finished chunks of working software than trying to build it all at once.
Lean Systems is experienced at introducing agile, coaching and leading agile projects. We appreciate the difference between agile principles and practice. We appreciate that governance may not be happy with reporting in terms of story points. We appreciate that your embedded team may have to meet other water-fall like process requirements, and may be resistant to change.
Agile is not one size fits all. Agile is not a silver bullet. But at Lean Systems we believe that Kanban, Scrum, XP, and Lean all hold parts of the puzzle to improving software product delivery in your business.
• Project Initiation • Requirements • Product Risk Management • Integration • Testing •
Getting traction on a new project can be troublesome. Often you start without a team, and have to vie for
resources. But in order to get those resources governance wants to know how long you'll need them. That's the catch-22 of starting a new product development. You need to start somewhere, and figuring out how long a project is likely to take takes expert judgement and a good idea of the scope of the project.
Then when you get going, there's requirements and product risk to manage. The problem with risk is you have to get comfortable with it, otherwise it can blow out your development timeframes as you mitigate every little issue.
A bit later on you come to integrate some components, and the first stages of testing begin. This is where you can start making real gains - if you've done your unit/module testing properly then integration testing should be looking at emergent behaviour, not picking up implementation errors.
Lean Systems are skilled at getting projects up and running, and driving decision making. We are experienced
with risk management, and routinely frame technical and risk related decisions in terms of business needs. The acid test is to ask "What would we do if it were our company?" In the answer we find the balance of wants and needs in the interest of the business.
We are also experienced at applying agile testing practices in embedded systems, and also at applying test and behaviour driven development (TDD/BDD) approaches. We are currently looking into exploratory testing as a means to increase testing ROI. We find that the traditional, highly scripted, manual testing has a high cost, and reveals little that is not discoverable in a more heuristic way. Worse it can miss cases that users quickly encounter - the so-called "demonstration effect."
• C/C++ • Embedded Hardware • Python • XML • Tooling •
Lean Systems is experienced with both embedded hardware and software development (although we're stronger in software). We can provide the following capabilities:
- Compiled languages - C, some C++
- Web technologies - CSS, HTML, XML/XSLT/XSD
- CAN systems - automotive networks
- Programming and configuration management tools
- Motion control systems and control algorithms
- Embedded hardware design and simulation