Difference between revisions of "Software Development"
(balance the pH - less acidic) |
|||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | A lot can, and has been, written about how to develop software, the project methods and processes. We're going to distill some of that here. But really, a wonderful resource on the Internet can be found at the | + | A lot can, and has been, written about how to develop software, the project methods and processes. We're going to distill some of that here. But really, a wonderful resource on the Internet can be found at the [https://wikimediafoundation.org/ Wikimedia Foundation's] [[wt:Main Page|Wikitech]] website where they describe, document and detail all that they do in support of enterprise software engineering to build free software using free software. |
+ | E.g. | ||
* [[mw:WMF product development process|WMF product development process]] | * [[mw:WMF product development process|WMF product development process]] | ||
* [[mw:Design and development principles|Design and development principles]] | * [[mw:Design and development principles|Design and development principles]] | ||
+ | == Tools for Estimating == | ||
+ | One of the biggest challenges for anyone working on software is [[wp:Software development effort estimation]]. | ||
+ | I used to use a tool by David Wheeler called '[https://dwheeler.com/sloccount/ SLOCCount]' (Software Lines Of Code Count), but it had fallen out of maintenance after 2004 . Eric Raymond [http://esr.ibiblio.org/?p=8270 wrote about this] as he wrote a replacement in [[Golang]] in 2019. A more recent similar tool is Ben Boyter's [[SCC]] | ||
+ | |||
+ | I can't talk about "Lines of Code" without mentioning that writing software is NOT measured by the number of lines of code you produce! Lines of Code is one of many metrics<ref>Lines of Code is a simple "talking point" metric so that often makes it into a conversation. Sadly, there are too many organizations that ignore any other metrics or ("advanced") software engineering concepts like [[wp:cyclomatic complexity]]. Every organization calls themselves "lean" and "agile" as talking points to appeal to finance and management but the claim says nothing about the rigors and professionalism of their software process. To actually understand "agile", try reading something like '''[https://davenicolette.wordpress.com/2016/05/19/where-agile-goes-to-die/ agile is about results]'''. He says: (For people who've never actually learned it,) ''agile is about rules''.</ref>. It can be extremely valuable to '''remove''' code. "Lines of code removed" is a '''very''' useful metric. That should help make the point. Consider: Less code equals less to audit. Less code equals less attack surface. | ||
+ | |||
+ | == Code Quality == | ||
+ | Analysis-tools.dev is a website dedicated to Code Quality and static analysis tools<ref>https://analysis-tools.dev/blog/static-analysis-is-broken-lets-fix-it</ref>. On the site, you can find reference to tools such as [https://analysis-tools.dev/tool/ansible-lint Ansible lint]<ref>https://ansible.readthedocs.io/projects/lint/</ref> with Stack Overflow -style comments whereby people can add 'similar' tools (in other words, peer-reviewed recommendations). In short, it's a great way to quickly get familiar with a broad range of code quality tools. | ||
+ | |||
+ | == Automation == | ||
+ | There are many approaches to [[automation and orchestration tools]]. With the current focus on "Cloud Native" and [[Kubernetes]], don't forget that [[Ansible]] is still crucial in your Container Builds, Cluster Management; and Application Lifecycles<ref>https://www.ansible.com/blog/how-useful-is-ansible-in-a-cloud-native-kubernetes-environment - Jan 14, 2020 by Jeff Geerling</ref>. | ||
+ | |||
+ | == See Also == | ||
+ | the [[WikiTech]] page | ||
+ | |||
+ | {{References}} | ||
[[Category:Project Management]] | [[Category:Project Management]] |
Latest revision as of 11:08, 3 March 2024
A lot can, and has been, written about how to develop software, the project methods and processes. We're going to distill some of that here. But really, a wonderful resource on the Internet can be found at the Wikimedia Foundation's Wikitech website where they describe, document and detail all that they do in support of enterprise software engineering to build free software using free software. E.g.
Tools for Estimating[edit | edit source]
One of the biggest challenges for anyone working on software is wp:Software development effort estimation.
I used to use a tool by David Wheeler called 'SLOCCount' (Software Lines Of Code Count), but it had fallen out of maintenance after 2004 . Eric Raymond wrote about this as he wrote a replacement in Golang in 2019. A more recent similar tool is Ben Boyter's SCC
I can't talk about "Lines of Code" without mentioning that writing software is NOT measured by the number of lines of code you produce! Lines of Code is one of many metrics[1]. It can be extremely valuable to remove code. "Lines of code removed" is a very useful metric. That should help make the point. Consider: Less code equals less to audit. Less code equals less attack surface.
Code Quality[edit | edit source]
Analysis-tools.dev is a website dedicated to Code Quality and static analysis tools[2]. On the site, you can find reference to tools such as Ansible lint[3] with Stack Overflow -style comments whereby people can add 'similar' tools (in other words, peer-reviewed recommendations). In short, it's a great way to quickly get familiar with a broad range of code quality tools.
Automation[edit | edit source]
There are many approaches to automation and orchestration tools. With the current focus on "Cloud Native" and Kubernetes, don't forget that Ansible is still crucial in your Container Builds, Cluster Management; and Application Lifecycles[4].
See Also[edit | edit source]
the WikiTech page
References[edit source]
- ↑ Lines of Code is a simple "talking point" metric so that often makes it into a conversation. Sadly, there are too many organizations that ignore any other metrics or ("advanced") software engineering concepts like wp:cyclomatic complexity. Every organization calls themselves "lean" and "agile" as talking points to appeal to finance and management but the claim says nothing about the rigors and professionalism of their software process. To actually understand "agile", try reading something like agile is about results. He says: (For people who've never actually learned it,) agile is about rules.
- ↑ https://analysis-tools.dev/blog/static-analysis-is-broken-lets-fix-it
- ↑ https://ansible.readthedocs.io/projects/lint/
- ↑ https://www.ansible.com/blog/how-useful-is-ansible-in-a-cloud-native-kubernetes-environment - Jan 14, 2020 by Jeff Geerling