this post was submitted on 13 Jun 2023
2 points (100.0% liked)

Software Engineering

328 readers
1 users here now

Software Engineering is the systematic and engineered development of software in all its life cycle.


Rules

  1. Keep related to software engineering
  2. Keep comments on-topic of the post
  3. Try to post free/open access content
  4. Try to post content from reliable sources (ACM, IEEE, SEI, NN/G, ...), or useful content in general
  5. Relevant questions are welcone, as long they are genuine and respectful
  6. Be genuinely respectful, kind, helpful; act in and assume good faith
  7. No discrimination
  8. No personal attacks, no personal questions
  9. No attention stealing: no ads, spam, influencers influencing, memes, trolling, emotional manipulation/advertising (e.g. engagement through enragement or other negative emotions), jokes that dissipate the focus of the topic, ...

Resources

founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 1 year ago* (last edited 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.