I find this concept hard to understand. So in what situations we have solutions that are impractical or impossible like those P-systems try to implement?

P-systems are described as:

P-type [practical - type] This is a software with a collection of procedures. This is defined by exactly what procedures can do. In this software, the specifications can be described but the solution is not obvious instantly. For example, gaming software.

I've also seen many sources that relate P-systems with gaming software, but what 'theoretical solution' (or approximate solution) means in this context so it is described as a P-type software?

  • How is this related to type-systems? Also, it might help if you explain 1) what P systems are and 2) why you believe they are related to gaming. Apr 1, 2018 at 17:45
  • 6
    P-system or P-type software is not common name for anything. Where did you hear about it?
    – Euphoric
    Apr 1, 2018 at 17:49
  • 1
    @Euphoric P-systems is one of the types Lehman defined for categorizing systems. There is also S-systems (static) and E-systems (embedded).
    – chris
    Apr 1, 2018 at 19:45
  • 1
    Looking at your resources, I would say that "Lehman's laws of software evolution", while interesting idea, didn't really catch on to in practical software development. Which is why you won't find much resources about it. And I can see why, as in my personal opinion, division into S, P and E type systems doesn't really make much sense to me. Historically, it would make sense to consider an S or P system. But nowadays, massive majority are E systems.
    – Euphoric
    Apr 1, 2018 at 19:59
  • 2

2 Answers 2


This might be my interpretation, but I would describe the division as follows:

S-Type software is one where specification is clear and detailed before the development even begins. Thanks to this detailed specification, it is clear what the solution should be and implementing it is trivial. But these kind of software are not interesting, as they are usually already solved and implemented. So all it takes is to import a library or call a service.

P-Type software is one where specification exists, but it is high-level and not fully detailed. So development needs to put effort into figuring out concrete solution. Also, but this might be just me, there is distinct "done" milestone, after which development ceases. This is because in the time of this division being formulated, there was no easy way to deliver updates to customers. So it was paramount to get things right the first time. This is clear for games of the time. If you were a game developer few decades back, game was "done" when it was put on disc and released. And while it was possible to release updates, it would rarely find it's way to all your customers.

E-Type software is software that isn't ever done and changes, and needs to change constantly. This is because of it's specification and requirements change constantly. As any tax-calculation software needs to update it's calculations based on new laws.

But nowadays, thanks to ever-present online connectivity, any software can be updated effortlessly. Even games provide updates and content far after they are first released. And for many, constant change is competitive advantage. So it would be rare to see software that is not E-Type nowadays.


P-Type generally refers to a system whose solution is not immediately apparent, the stakeholder knows what the end goal is but is not sure how to achieve it. the impractical case you ask about, let assume you are making a chess game you have designed an algorithm for it is theoretically possible to construct a perfect solution but when it comes to implementing the solution seems intractable so you keep changes until you get to the end goal of the system.

Not the answer you're looking for? Browse other questions tagged or ask your own question.