Topic: Systems/Software engineering
Capability Immaturity Model (CIMM) in software engineering is a parody acronym, a semi-serious effort to provide a contrast to the Capability Maturity Model (CMM). The Capability Maturity Model is a five point scale of capability in an organization, ranging from random processes at level 1 to fully defined, managed and optimized processes at level 5. The ability of an organization to carry out its mission on time and within budget is claimed to improve as the CMM level increases.
The "Capability Im-Maturity Model" asserts that organizations can and do occupy levels below CMM level 1. An original article by Capt. Tom Schorsch USAF as part of a graduate project at the Air Force Institute of Technology provides the definitions for CIMM. He cites Prof. Anthony Finkelstein's ACM paper as an inspiration. The article describes situations that arise in dysfunctional organizations. Such situations are reportedly common in organizations of all kinds undertaking software development, i.e. they are really characterizations of the management of specific projects, since they can occur even in organizations with positive CMM levels.
Kik Piney, citing the original authors, later adapted the model to a somewhat satirical version that attracted a number of followers who felt that it was quite true to their experience.
- "Capability Immaturity Model" | 2020-03-02 | 124 Upvotes 19 Comments
From its beginnings in the 1960s, writing software has evolved into a profession concerned with how best to maximize the quality of software and of how to create it. Quality can refer to how maintainable software is, to its stability, speed, usability, testability, readability, size, cost, security, and number of flaws or "bugs", as well as to less measurable qualities like elegance, conciseness, and customer satisfaction, among many other attributes. How best to create high quality software is a separate and controversial problem covering software design principles, so-called "best practices" for writing code, as well as broader management issues such as optimal team size, process, how best to deliver software on time and as quickly as possible, work-place "culture", hiring practices, and so forth. All this falls under the broad rubric of software engineering.
- "History of software engineering" | 2020-08-01 | 27 Upvotes 4 Comments
A fourth-generation programming language (4GL) is any computer programming language that belongs to a class of languages envisioned as an advancement upon third-generation programming languages (3GL). Each of the programming language generations aims to provide a higher level of abstraction of the internal computer hardware details, making the language more programmer-friendly, powerful, and versatile. While the definition of 4GL has changed over time, it can be typified by operating more with large collections of information at once rather than focusing on just bits and bytes. Languages claimed to be 4GL may include support for database management, report generation, mathematical optimization, GUI development, or web development. Some researchers state that 4GLs are a subset of domain-specific languages.
In the 1980s and 1990s, there were efforts to develop fifth-generation programming languages (5GL).
- "Fourth-Generation Programming Language" | 2022-04-27 | 120 Upvotes 103 Comments