
Why software is eating the world by Marc Andreessen.
Executive management needs to understand that every organisation is becoming a technology organisation. Even if you don't develop IT in-house you'll need to be able to ask the right questions to understand that risks associated with IT. This course will help you understanding software engineering from a bird's eye perspective.
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
How 'healthy' are your software system? How would you assess that? This course teaches you 8 essential KPI's that collectively monitor the health of your system. If you companies runs on software, it probably does, you should follow this course. Even when you don't develop or maintain the software, you should follow this course. This because, by the end of this course you'll have a SWISS army knife in your toolkit that enable you to ask the right technical questions to your software vendor. Nowadays CEO's recognise the importance of software for their company.
The question remains whether your organisation recognises this movement. This is great news for software managers, software architects and software testers.
Please find a paper written by Google-ers with a title that explains why you are following this course: What Improves Developer Productivity at Google? Code Quality
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
Poor software quality lead to extra costs for your organisation. This is because poor software quality leads to: more defects in production (which leads to damage of reputation), slower time-to-market (because the velocity in which new functionality can be release tends to decline over time) and lower develop morale (as a consequence talented developers will leave your organisation).
Software quality assurance staff know how crucial software quality is and thus inherently know why poor software needs to be prevented. Your organisation can benefit from the 8 software quality metrics explained in this course. These metrics serve as key performance indicators that provide insight into the health of the system.
CONSORTIUM FOR INFORMATION & SOFTWARE QUALITY: 'For the year 2020, we determined the total Cost of Poor Software Quality (CPSQ) in the US is $2.08 trillion (T).' (see: CPSQ-2020-Software-Report.pdf attached).
Funny behaviour of developers; it starts with at joke. At some point no one really understand the joke and you're left with legacy code.
ENJOY the FREE Recourses:
- Access to slides (Software Quality for Managers v1.0.pdf)
- Access to eBook (Software Quality - Security Repo.pdf)
- Access to online resources to scan the security of your web application (Additional resources URLs).
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
By the end of this course you'll have a clear understanding how you can measure and evaluate software systems. If you abstract these metrics you could even evaluate your entire IT-landscape. By doing so you can identify risks early and prevent 'spaghetti' complexity (i.e. systems are inextricably connected which results in low agility).
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
Even though most managers have a gut feeling about which systems are causing most trouble, managers rarely open the black box. Consider this analogy whit a car. A garage checks the quality of your car (e.g.) yearly. You know upfront which parts need to be replaced and can make a reasonably well-informed risk reward investment decision. Now let us switch back to software system. Can you as a (e.g.) product owner make a reasonably well-informed risk reward investment decision?
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
The delivery of software could be seen as a combination of art and science. The artistic freedom of a developer/engineer is expressed as using any combination of tools & technologies to achieve a SMART goal (measured with scientific precision).
Here with a great resource where art meet science, the Netflix culture deck, see attachment.
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
Other reasons why you should focus on software quality, see attachments.
Please be cautious when developers / engineers leave too many 'TODO' in the code. This typically means, we will fix this issue later. Nothing is a permanent as a temporary solution. Focus on quality and do things right the first time.
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
Herewith the source from code bases, see attachment information is beautiful.
Software architects and managers please note that size is almost always strongly correlated with complexity leading to unmaintainable code. Try to measure size with function points and/or lines of code. Function Point Analysis is an objective and structured technique to measure software size by quantifying its functionality provided to the user, based on the requirements and logical design. Lines of code will be explained as the first software quality metric.
Don't be distracted be religious discussion of which method is better, use what best fits your organisation and provides the best results. That could also mean using both techniques.
Last but certainly not least; don't focus on (a) metric(s) in isolation. Remember that metrics are proxies of an underlying 'bigger' problem. For instance, if code grows in complexity fast it might be because managers set unrealistic deadlines.
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
If you don't measure technical debt, you don't know what the amount of deferred maintenance is. This could result in a rude awakening where you'll have to make a surgical procedure into your IT system/landscape. I can tell you from experience, you don't want this! It will result in (1) increased chance of errors in production, (2) lots of stress of your employees and (3) lots of revenue for external consultants, since you'll have to pay them to help you with the surgical procedure.
More background on technical debt, see attachments.
Academic resources:
- An Empirical Model of Technical Debt and Interest. In this paper, the notions of technical debt and interest have been defined and put into the perspective of IT management. Furthermore, an approach to estimate the amount of technical debt and its interest has been defined.
-Technical Debt: From Metaphor to Theory and Practice. Provides in-depth explanation of the term technical debt.
- The Danger of Architectural Technical Debt: Contagious Debt and Vicious Circles. This article investigated which Technical Debt items generate more effort and how this effort is manifested during software development. This paper presents a taxonomy of the most dangerous items identified during the qualitative investigation and a model of their effects that can be used for prioritisation, for further investigation and as a quality model for extracting more precise and context-specific metrics.
- Measure It? Manage It? Ignore It? Software Practitioners and Technical Debt. This study surveyed 1,831 participants, primarily software engineers and architects working in long-lived, software-intensive projects from three large organisations. Developers perceive management as unaware of technical debt issues, and they desire standard practices and tools to manage technical debt that do not currently exist. You Are following this course and are thus aware and now know how to combat technical debt.
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
Learning software quality through an analogy makes it easy to transfer technical complex subjets to students without a technical background. Especially, for this course, which is geared toward managers, understanding the concepts is important.
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
In this video I compare software engineering with writing a document in Microsoft Word. The document at hand is a part of my thesis. Several elements of my thesis are compared: table of content, chapters, sections and paragraphs. At the end of this video I also map these elements on elements of a software system and you understand the prerequisites for this course!
Source lines of code (SLOC) is a useful metric in Software Estimation, however relying on it in isolation is dangerous. Always use multiple metrics such that the system can be examined holistically.
Resources:
- In-depth Analysis of SLOC Metric for the purpose to expose some of its disadvantages and provide knowledge of SLOC Metric Measurement.
- The relationships between Lines of Code (LOC) and defects (including both pre-release and post-release defects)
This information is useful for software tester, software managers, software developers, software engineers.
Duplication can become a problem within large software systems if programmers make modifications by copying and pasting sections of code. It has long been known that copying can make the code larger, more complex, and more difficult to maintain. In particular, when a bug has been found in one copy, that bug must also be fixed in other copies. If you forget one copy you may introduce another bug or even worse a vulnerability.
Resources:
- Finding duplication in large software systems. This paper focuses on locating duplication or near- duplication in a large software system as an aid in maintenance and reengineering
- Improved Tool Support for the Investigation of Duplication in Software. The goal of this paper is to describe the criteria for a complete tool that is designed to aid in the comprehension of cloning within a software system. Furthermore, this paper presents a prototype of such a tool and demonstrates the value of its features through a case study on the Apache httpd web server.
- Insights into System–Wide Code Duplication. In this paper the authors propose a number of visualizations of duplicated source elements that support reengineers in answering questions, e.g., which parts of the system are connected by copied code or which parts of the system are copied the most.
- The Danger of Architectural Technical Debt: Contagious Debt and Vicious Circles
This information is useful for software tester, software managers, software developers, software engineers.
Unit size refers to the smallest testable part of a program. It is usually a function, method, or class that performs a specific task and has defined inputs and outputs.
Measuring the unit size is important because it helps in assessing the complexity and quality of the code. Smaller unit sizes generally result in code that is easier to read, understand, and maintain. They also facilitate modular design, code reuse, and testing.
Moreover, measuring unit size is a key part of the process of software testing and debugging. It helps in identifying errors, verifying the correctness of the code, and reducing the likelihood of introducing new bugs or errors during the development process.
In general, smaller unit sizes are better than larger ones, as they make it easier to reason about the code and reduce the likelihood of introducing errors. However, there is no one-size-fits-all approach to unit size, and the appropriate unit size will depend on the specific requirements of the software project and the programming language used.
Every quality assurance / software tester knows the impact of complexity. They inherently know that more paths through the code (i.e. IF, AND, OR-statements) leads to code that is more difficult to understand and test. Couple complex code with no automated tests and a large code base (e.g. more 1.000.000 lines of code) and you have a recipe of disaster. Solution: actively measure and monitor software complexity.
Off-topic: Did you know that complex code also leads to more security vulnerabilities? See attachment: ON THE RELATIONSHIP BETWEEN SOFTWARE COMPLEXITY AND SECURITY.pdf
API's expose your system's functionality to users or other systems. It is very difficult to create a clear and secure API. Continuously measure and improve your API.
For more general API content, herewith several attachments.
Note that this is not a security course but I always recommend to include security requirements through out your entire software development lifecycle. More information regarding building secure API's can be found in the attachments.
Is you system loosely coupled or tightly integrated? Watch this video and find out what is means and how it can be measured.
Component balance is closely related to your system architecture, hence I'll provide you with additional architectural best practices from Martin Fowler. This video is important for software architects and can also be used as input for designing microservices.
From an enterprise perspective: how do your systems compare to each other in terms of size? Obviously you can also use other system-level metrics (e.g.: unit size, complexity, interfacing, etc.) to compare systems with each other. By doing so you can manage your system / application portfolio and get insight into enterprise-level technical debt.
Herewith a nice read (blog post) on large scale example of an Angular application, see attachment.
This video is important for software architects and can also be used as input for designing microservices.
From an enterprise perspective: which systems are closely coupled together? By answering this question you can infer information about the agility of your IT-landscape. If several seemingly independent systems have (1) code-level references, (2) follow the same deployment / release cycle and (3) have the same team members or management, chances are that these systems are tightly coupled. Which is not a bad when it is a conscious decision.
This video is created for IT (contract) managers that are in charge of managing contracts with suppliers. Ask and demand software quality from your supplier. Make quality an explicit part of your contract with internal or external suppliers. Remember you cannot manager what you don't measure.
EXTRA:
- In the resources you can find a paper that describes different kinds of technical debt (figure 8) and the cause and effects of technical debt (figure 9) and how to prevent technical debt (table 15).
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
There are software quality maturity models, although it is not really concrete, see attachment.
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
See attachment for powerful tools!
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
See attachments
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
See attachment (same as previous video)
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
Which additional questions can also be answered by looking at software. A tip of the iceberg: Software forensics is the science of analyzing software source code or binary code to determine whether intellectual property infringement or theft occurred.
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
If you liked this course, I'm pretty sure you will also like my other courses, consider: Social Engineering: 13 Social Engineering attacks explained! Please find it on Udemy!
Elevate your software development journey with my Software Quality course, where you'll gain the knowledge and skills to create lasting software. Discover the secrets that will enhance your software architecture, design, debugging, and refactoring practices, ensuring a positive impact on your development process.
+ Get instant access to course slides
+ Get instant access to FREE EBOOK of this course
+ Get instant access to additional online security and privacy resources to scan your web application
+ Easy to understand how-to videos!
+ Access to instructor if you ever get stuck!
Are your systems build for change?
Do you measure technical debt?
Are you suffering from low productivity?
If you cannot answer these questions, this course is made for you. Within 1.5 hours you will understand the most important software quality, design and practices.
Course Outline - Develop Software That is Built For Change. Prevent writing Legacy Software, Technical Debt with these important software practices
This course covers 8 software design concepts and related software development practices:
1. lines of code,
2. duplication,
3. unit size,
4. unit complexity,
5. unit interfacing,
6. module coupling,
7. component balance,
8. component independence.
Understand Essential Concepts, Explain Them and Earn More
"If you want to make a promotion, your effectiveness depends on your ability to reach others through the spoken and written word" (P. Drucker). This cours will jumpstart your career by teaching you software quality through an analogy, which aids understanding no matter your background.
Anjo: "This is an excellent, cost-effective and very beginners-friendly course and I'm so glad to enrol in the class. Even though I have limited technical knowledge, I've learned so much with respect to software engineering basics. Now I feel that I am better able to challenge software engineers!"
So, after following this course you'll be like a general practitioner (GP). That person needs to know quite a bit about the human body. To assess the health of a human 'system' the GP uses key performance indicators (KPI's), such as: heartbeat and temperature. These KPI's enable the GP to quickly determine whether and what kind of follow up action is necessary. After following this course you'll understand the software design KPI's that can assess the health of a software system. You will be able to contribute to Code Reviews for Secure, Clean, and Scalable Code and more Effective Teams!
Teguh: "The the KPIs well explained"
Don't take my word for it
- What improves developer productivity at google? --> Code Quality (Cheng, et al., 2022). It reduces chance of writing legacy and increases elegant software design with best in class software development practices.
- A scientific study that surveyed 1,831 participants, primarily software engineers and architects, found that "Developers perceive management as unaware of technical debt issues, and they desire standard practices and tools to manage technical debt that do not currently exist." This finding will not be applicable to you; In 1.5 hours you'll understand how to combat technical debt. Source of the study: Ernst, et al. (2015).
Guan: "Very clear, and logical ideas, backup with solid examples. Definitely looking forward to the author's next training. Small price to pay, but BIG promotion coming up for me next year."
BONUS: Tons of additional reading material for Developers AND Managers. I've selected the BEST books for you.
Why learn software design quality from me?
This course is created by Soerin Bipat. He is the founder of Security Repo and has more than a decade experience in IT consulting and teaching and now designed a course that you'll love. This top-rated instructor has taught thousands of students around the world, and can't wait to serve you.
Besides experience as an IT consultant I hold the following certifications:
1. International Software Testing Qualifications Board (ISTQB)
2. Certified Secure Software Lifecycle professional (CSSLP)
3. Certified Information Systems Security Professional (CISSP)
4. Certified Information Systems Auditor (CISA)
5. Certified Information Privacy Professional (CIPP / Europe)
6. Certified SCRUM Master
7. Togaf Foundation
8. ISO 27001 Lead Auditor
9. ISO 27001 Lead Implementer
10. Leading Scaled Agile Framework
11. Azure Fundamentals (AZ-900)
12. PRINCE 2 foundation
My Happiness Guarantee
If you aren't happy with your purchase, I have a 30-day 100% investment back guarantee. There's literally no reason to hesitate
Go ahead and click the enrol button, and I'll see you in lesson 1.
Cheers,
Soerin