Difference between revisions of "Software Engineering Features - Models, Methods, Tools, Standards, and Metrics"
(merged metric in to articles) Tag: visualeditor |
m (Text replacement - "SEBoK v. 2.9, released 20 November 2023" to "SEBoK v. 2.10, released 06 May 2024") |
||
(28 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
− | In recent decades software has become ubiquitous. Almost all modern engineered systems include significant software subsystems; this includes systems in the transportation, finance, education, healthcare, legal, military, and business sectors. Along with the increase in software utility, capability, cost, and size there has been a corresponding growth in methods, models, tools, metrics and standards, which support software engineering. | + | ---- |
+ | '''''Lead Author:''''' ''Tom Hilburn'' | ||
+ | ---- | ||
+ | In recent decades, software has become ubiquitous. Almost all modern engineered systems include significant software subsystems; this includes systems in the transportation, finance, education, healthcare, legal, military, and business sectors. Along with the increase in software utility, capability, cost, and size there has been a corresponding growth in methods, models, tools, metrics and standards, which support software engineering. | ||
+ | |||
+ | Chapter 10 of the SWEBOK discusses modeling principles and types, and the methods and tools that are used to develop, analyze, implement, and verify the models. The other SWEBOK chapters on the software development phases (e.g., Software Design) discuss methods and tools specific to the phase. Table 1 identifies software engineering features for different life-cycle phases. The table is not meant to be complete; it simply provides examples. In Part 2 of the SEBoK there is a [[Representing Systems with Models|discussion of models]] and the following is one of the definitions offered: “an abstraction of a system, aimed at understanding, communicating, explaining, or designing aspects of interest of that system” (Dori 2002). | ||
− | + | For the purposes of Table 1 the definition of a model is extended to some aspect of the software system or its development. As an example, “Project Plan” is listed as a model in the Software Management area. The idea is that the Project Plan provides a model of how the project is going to be carried out: the project team organization, the process to be used, the work to be done, the project schedule, and the resources needed. | |
<div style="text-align: center;"> | <div style="text-align: center;"> | ||
− | <blockquote>'''Table 1: SWE Features''' | + | <blockquote>'''Table 1: SWE Features''' (SEBoK Original) |
</blockquote> | </blockquote> | ||
</div> | </div> | ||
− | |||
{| align="center" | {| align="center" | ||
|- | |- | ||
Line 126: | Line 130: | ||
*Regression Testing | *Regression Testing | ||
*Reliability Testing | *Reliability Testing | ||
− | *Non Functional Software Testing | + | *Non-Functional Software Testing |
| | | | ||
*<nowiki>[</nowiki>IEEE 829<nowiki>]</nowiki> | *<nowiki>[</nowiki>IEEE 829<nowiki>]</nowiki> | ||
Line 151: | Line 155: | ||
== Software Metric == | == Software Metric == | ||
− | A software metric is a quantitative measure of the degree a software system, component, or process possesses a given attribute. Because of the abstract nature of software and special problems with software schedule, cost, and quality, data collection and the derived metrics are an essential part of software engineering. This is evidenced by the repeated reference to measurement and metrics in the SWEBOK. Table | + | A software metric is a quantitative measure of the degree a software system, component, or process possesses a given attribute. Because of the abstract nature of software and special problems with software schedule, cost, and quality, data collection and the derived metrics are an essential part of software engineering. This is evidenced by the repeated reference to measurement and metrics in the SWEBOK. Table 2 describes software metrics that are collected and used in different areas of software development. As in Table 1 the list is not meant to be complete, but to illustrate the type and range of measures used in practice. |
<div style="text-align: center;"> | <div style="text-align: center;"> | ||
− | <blockquote>'''Table | + | <blockquote>'''Table 2: Software Metrics''' <nowiki>*</nowiki> (SEBoK Original) |
</blockquote> | </blockquote> | ||
</div> | </div> | ||
Line 169: | Line 173: | ||
*Size: Lines of Code (LOC*), Thousand Lines of Code (KLOC) | *Size: Lines of Code (LOC*), Thousand Lines of Code (KLOC) | ||
*Size: Function points, Feature Points | *Size: Function points, Feature Points | ||
− | *Individual Effort: | + | *Individual Effort: Hours |
− | *Task Completion Time: | + | *Task Completion Time: Hours, Days, Weeks |
− | *Project Effort: | + | *Project Effort: Person-Hours |
− | *Project Duration: | + | *Project Duration: Months |
− | *Schedule: | + | *Schedule: Earned Value |
− | *Risk Projection: | + | *Risk Projection: Risk Description, Risk Likelihood, Risk Impact |
|- | |- | ||
| | | | ||
Line 180: | Line 184: | ||
| | | | ||
*Defect Density - Defects/KLOC (e.g., for system test) | *Defect Density - Defects/KLOC (e.g., for system test) | ||
− | *Defect Removal Rate – | + | *Defect Removal Rate – Defects Removed/Hour (for review and test) |
*Test Coverage | *Test Coverage | ||
*Failure Rate | *Failure Rate | ||
Line 188: | Line 192: | ||
Software Requirements Metrics | Software Requirements Metrics | ||
| | | | ||
− | *Change requests received, open, closed | + | *Change requests (received, open, and closed) |
*Change request frequency | *Change request frequency | ||
*Effort required to implement a requirement change | *Effort required to implement a requirement change | ||
Line 207: | Line 211: | ||
| | | | ||
*Mean Time Between Changes (MTBC) | *Mean Time Between Changes (MTBC) | ||
− | *Mean Time | + | *Mean Time to Change (MTTC) |
*System Reliability | *System Reliability | ||
*System Availability | *System Availability | ||
Line 215: | Line 219: | ||
<nowiki>*</nowiki>''Note: Even though the LOC metric is widely used, using it comes with some problems and concerns: different languages, styles, and standards can lead to different LOC counts for the same functionality; there are a variety of ways to define and count LOC– source LOC, logical LOC, with or without comment lines, etc.; and automatic code generation has reduced the effort required to produce LOC.'' | <nowiki>*</nowiki>''Note: Even though the LOC metric is widely used, using it comes with some problems and concerns: different languages, styles, and standards can lead to different LOC counts for the same functionality; there are a variety of ways to define and count LOC– source LOC, logical LOC, with or without comment lines, etc.; and automatic code generation has reduced the effort required to produce LOC.'' | ||
− | |||
− | |||
__NOTOC__ | __NOTOC__ | ||
Line 222: | Line 224: | ||
==References== | ==References== | ||
===Works Cited=== | ===Works Cited=== | ||
− | + | Bourque, P. and R.E. Fairley (eds.). 2014. ''Guide to the Software Engineering Body of Knowledge (SWEBOK)''. Los Alamitos, CA, USA: IEEE Computer Society. Available at: http://www.Swebok.org. | |
− | + | Dori, D. 2003. "Conceptual modeling and system architecting." ''Communications of the ACM'', 46(10), pp. 62-65. | |
[IEEE 828] IEEE Computer Society, IEEE Standard for ''Computer Configuration Management in Systems and Software Engineering'', IEEE Std 828- 2012, 20012. | [IEEE 828] IEEE Computer Society, IEEE Standard for ''Computer Configuration Management in Systems and Software Engineering'', IEEE Std 828- 2012, 20012. | ||
Line 230: | Line 232: | ||
[IEEE 829] IEEE Computer Society, IEEE Standard for ''Software and System Test Documentation'', IEEE Std 829- 2008, 2008. | [IEEE 829] IEEE Computer Society, IEEE Standard for ''Software and System Test Documentation'', IEEE Std 829- 2008, 2008. | ||
− | [IEEE 830] IEEE Computer Society, ''Recommended Practice for Software Requirements Specifications'', IEEE Std 830-1998, 1998. | + | [IEEE 830] IEEE Computer Society, IEEE Standard for ''Recommended Practice for Software Requirements Specifications'', IEEE Std 830-1998, 1998. |
− | [IEEE 1008] IEEE Computer Society, IEEE Standard for ''Software Unit | + | [IEEE 1008] IEEE Computer Society, IEEE Standard for ''Software Unit Testing,'' IEEE Std 1008-1987, 1987. |
− | Testing,'' IEEE Std 1008-1987, 1987. | ||
− | [IEEE 1012] | + | [IEEE 1012] IEEE Computer Society, IEEE Standard for ''System and Software Verification and Validation'', IEEE Std 1012-2002, 2012. |
− | [IEEE 1016] | + | [IEEE 1016] IEEE Computer Society, IEEE Standard for ''Recommended Practice for Software Design Descriptions'', IEEE Std 1016-2002, 2002. |
[IEEE 1058] IEEE Computer Society, IEEE Standard for ''Software Project Plans'', IEEE Std 1058-1998, 1998. | [IEEE 1058] IEEE Computer Society, IEEE Standard for ''Software Project Plans'', IEEE Std 1058-1998, 1998. | ||
Line 245: | Line 246: | ||
[IEEE 1540] IEEE Computer Society, IEEE Standard for ''Risk Management'', IEEE Std 1540-2001, 2001. | [IEEE 1540] IEEE Computer Society, IEEE Standard for ''Risk Management'', IEEE Std 1540-2001, 2001. | ||
− | [IEEE 12207] IEEE Computer Society, IEEE Standard for ''Systems and Software Engineering —Software Life Cycle Processes'', IEEE Std 12207-2008 | + | [IEEE 12207] IEEE Computer Society, IEEE Standard for ''Systems and Software Engineering —Software Life Cycle Processes'', IEEE Std 12207-2008, 2008. |
− | [IEEE 14764] IEEE Computer Society, IEEE Standard for ''Software Engineering - Software Life Cycle Processes - Maintenance''. IEEE Std 14764-2006. | + | [IEEE 14764] IEEE Computer Society, IEEE Standard for ''Software Engineering - Software Life Cycle Processes - Maintenance''. IEEE Std 14764-2006, 2006. |
[IEEE 42010] IEEE Computer Society, IEEE Standard for ''Systems and Software Engineering — Architecture Description'', IEEE Std 42010-2011, 2011. | [IEEE 42010] IEEE Computer Society, IEEE Standard for ''Systems and Software Engineering — Architecture Description'', IEEE Std 42010-2011, 2011. | ||
+ | |||
+ | ===Primary References=== | ||
+ | |||
+ | None. | ||
===Additional References=== | ===Additional References=== | ||
− | McConnell, Steve. 2009. ''Code Complete'', | + | Chidamber, S.R., C.F. Kemerer. 1994. “A Metrics Suite for Object Oriented Design”, ''IEEE Transactions on Software Engineering''. Vol. 20, No. 6. June 1994. |
+ | |||
+ | Kan, Stephen H. 2003. ''Metrics and Models in Software Quality Engineering'', 2nd edition. Reading, Massachusetts, USA: Addison-Wesley. | ||
+ | |||
+ | Li, M. and Smidts, C. 2003. “A ranking of software engineering measures based on expert opinion.” ''IEEE Transactions on Software Engineering''. September 2003. | ||
+ | |||
+ | McConnell, Steve. 2009. ''Code Complete'', 2nd Ed. Microsoft Press. | ||
− | Moore, James. 1997. ''Software Engineering Standards: A User's Road Map''. Wiley-IEEE Computer Society Press. | + | Moore, James. 1997. ''Software Engineering Standards: A User's Road Map''. Hoboken, NJ, USA: Wiley-IEEE Computer Society Press. |
Sommerville, I. 2010. ''Software Engineering''. 9th Ed. Boston, MA, USA: Addison Wesley. | Sommerville, I. 2010. ''Software Engineering''. 9th Ed. Boston, MA, USA: Addison Wesley. | ||
Line 260: | Line 271: | ||
---- | ---- | ||
− | <center>[[ | + | <center>[[Key Points a Systems Engineer Needs to Know about Software Engineering|< Previous Article]] | [[Systems Engineering and Software Engineering|Parent Article]] | [[Systems Engineering and Aerospace Engineering|Next Article >]]</center> |
− | + | <center>'''SEBoK v. 2.10, released 06 May 2024'''</center> | |
[[Category: Part 6]][[Category: Topic]][[Category:Systems Engineering and Software Engineering]] | [[Category: Part 6]][[Category: Topic]][[Category:Systems Engineering and Software Engineering]] |
Latest revision as of 22:12, 2 May 2024
Lead Author: Tom Hilburn
In recent decades, software has become ubiquitous. Almost all modern engineered systems include significant software subsystems; this includes systems in the transportation, finance, education, healthcare, legal, military, and business sectors. Along with the increase in software utility, capability, cost, and size there has been a corresponding growth in methods, models, tools, metrics and standards, which support software engineering.
Chapter 10 of the SWEBOK discusses modeling principles and types, and the methods and tools that are used to develop, analyze, implement, and verify the models. The other SWEBOK chapters on the software development phases (e.g., Software Design) discuss methods and tools specific to the phase. Table 1 identifies software engineering features for different life-cycle phases. The table is not meant to be complete; it simply provides examples. In Part 2 of the SEBoK there is a discussion of models and the following is one of the definitions offered: “an abstraction of a system, aimed at understanding, communicating, explaining, or designing aspects of interest of that system” (Dori 2002).
For the purposes of Table 1 the definition of a model is extended to some aspect of the software system or its development. As an example, “Project Plan” is listed as a model in the Software Management area. The idea is that the Project Plan provides a model of how the project is going to be carried out: the project team organization, the process to be used, the work to be done, the project schedule, and the resources needed.
Table 1: SWE Features (SEBoK Original)
Life-Cycle Activity | Models | Methods & Tools | Standards |
---|---|---|---|
Software Management |
|
|
|
Software Requirements |
|
|
|
Software Design |
|
|
|
Software Construction |
|
|
|
Software Testing |
|
|
|
Software Maintenance |
|
|
|
Software Metric
A software metric is a quantitative measure of the degree a software system, component, or process possesses a given attribute. Because of the abstract nature of software and special problems with software schedule, cost, and quality, data collection and the derived metrics are an essential part of software engineering. This is evidenced by the repeated reference to measurement and metrics in the SWEBOK. Table 2 describes software metrics that are collected and used in different areas of software development. As in Table 1 the list is not meant to be complete, but to illustrate the type and range of measures used in practice.
Table 2: Software Metrics * (SEBoK Original)
Category | Metrics |
---|---|
Management Metrics |
|
Software Quality Metrics |
|
Software Requirements Metrics |
|
Software Design Metrics |
|
Software Maintenance and Operation |
|
*Note: Even though the LOC metric is widely used, using it comes with some problems and concerns: different languages, styles, and standards can lead to different LOC counts for the same functionality; there are a variety of ways to define and count LOC– source LOC, logical LOC, with or without comment lines, etc.; and automatic code generation has reduced the effort required to produce LOC.
References
Works Cited
Bourque, P. and R.E. Fairley (eds.). 2014. Guide to the Software Engineering Body of Knowledge (SWEBOK). Los Alamitos, CA, USA: IEEE Computer Society. Available at: http://www.Swebok.org.
Dori, D. 2003. "Conceptual modeling and system architecting." Communications of the ACM, 46(10), pp. 62-65.
[IEEE 828] IEEE Computer Society, IEEE Standard for Computer Configuration Management in Systems and Software Engineering, IEEE Std 828- 2012, 20012.
[IEEE 829] IEEE Computer Society, IEEE Standard for Software and System Test Documentation, IEEE Std 829- 2008, 2008.
[IEEE 830] IEEE Computer Society, IEEE Standard for Recommended Practice for Software Requirements Specifications, IEEE Std 830-1998, 1998.
[IEEE 1008] IEEE Computer Society, IEEE Standard for Software Unit Testing, IEEE Std 1008-1987, 1987.
[IEEE 1012] IEEE Computer Society, IEEE Standard for System and Software Verification and Validation, IEEE Std 1012-2002, 2012.
[IEEE 1016] IEEE Computer Society, IEEE Standard for Recommended Practice for Software Design Descriptions, IEEE Std 1016-2002, 2002.
[IEEE 1058] IEEE Computer Society, IEEE Standard for Software Project Plans, IEEE Std 1058-1998, 1998.
[IEEE 1219] IEEE Computer Society, IEEE Standard for Software Maintenance, IEEE Std 1219-1998, 1998.
[IEEE 1540] IEEE Computer Society, IEEE Standard for Risk Management, IEEE Std 1540-2001, 2001.
[IEEE 12207] IEEE Computer Society, IEEE Standard for Systems and Software Engineering —Software Life Cycle Processes, IEEE Std 12207-2008, 2008.
[IEEE 14764] IEEE Computer Society, IEEE Standard for Software Engineering - Software Life Cycle Processes - Maintenance. IEEE Std 14764-2006, 2006.
[IEEE 42010] IEEE Computer Society, IEEE Standard for Systems and Software Engineering — Architecture Description, IEEE Std 42010-2011, 2011.
Primary References
None.
Additional References
Chidamber, S.R., C.F. Kemerer. 1994. “A Metrics Suite for Object Oriented Design”, IEEE Transactions on Software Engineering. Vol. 20, No. 6. June 1994.
Kan, Stephen H. 2003. Metrics and Models in Software Quality Engineering, 2nd edition. Reading, Massachusetts, USA: Addison-Wesley.
Li, M. and Smidts, C. 2003. “A ranking of software engineering measures based on expert opinion.” IEEE Transactions on Software Engineering. September 2003.
McConnell, Steve. 2009. Code Complete, 2nd Ed. Microsoft Press.
Moore, James. 1997. Software Engineering Standards: A User's Road Map. Hoboken, NJ, USA: Wiley-IEEE Computer Society Press.
Sommerville, I. 2010. Software Engineering. 9th Ed. Boston, MA, USA: Addison Wesley.