• Yuu YinM
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    1 year ago

    It is almost like the things like PMBOK (which now changed to a principles-based body of knowledge)… these things have no base in scientific method (empirically-based), having origins back to all the DOD needs

    Also reminds me of this important research article “The two paradigms of software development research” posted here before https://group.lt/post/46119

    The two categories of models use substantially different terminology. The Rational models tend to organize development activities into minor variations of requirements, analysis, design, coding and testing – here called Royce’s Taxonomy because of their similarity to the Waterfall Model. All of the Empirical models deviate substantially from Royce’s Taxonomy. Royce’s Taxonomy – not any particular sequence – has been implicitly co-opted as the dominant software development process theory [5]. That is, many research articles, textbooks and standards assume:

    1. Virtually all software development activities can be divided into a small number of coherent, loosely-coupled categories.
    2. The categories are typically the same, regardless of the system under construction, project environment or who is doing the development.
    3. The categories approximate Royce’s Taxonomy. … Royce’s Taxonomy is so ingrained as the dominant paradigm that it may be difficult to imagine a fundamentally different classification. However, good classification systems organize similar instances and help us make useful inferences [98]. Like a good system decomposition, a process model or theory should organize software development activities into categories that have high cohesion (activities within a category are highly related) and loose coupling (activities in different categories are loosely related) [99].

    Royce’s Taxonomy is a problematic classification because it does not organize like with like. Consider, for example, the design phase. Some design decisions are made by “analysts” during what appears to be “requirements elicitation”, while others are made by “designers” during a “design meeting”, while others are made by “programmers” while “coding” or even “testing.” This means the “design” category exhibits neither high cohesion nor loose coupling. Similarly, consider the “testing” phase. Some kinds of testing are often done by “programmers” during the ostensible “coding” phase (e.g. static code analysis, fixing compilation errors) while others often done by “analysts” during what appears to be “requirements elicitation” (e.g. acceptance testing). Unit testing, meanwhile, includes designing and coding the unit tests.