Description of Software Architecture
Software architecture refers to the general design of a software system, which includes individual components of the software, the environment, they operate in, and how individual components interact with each other and their environment. Software architecture is used to design operating systems such as Microsoft Windows and Apple’s iOS and applications such as WhatsApp and Microsoft Office. Software architecture is the first phase of software design and is also vital. The software’s blueprints are laid out during this stage and evaluated to foresee possible challenges that may occur in the future and take necessary steps to avert those challenges. Thus, decisions made at the software architecture level are relatively permanent and may be costly to change in the future.
The main players identified in this system are the nurse, the doctor, and the board of directors. The main use cases identified are receiving patients and collecting personal and health records, accessing those records, making appointments, and generating financial and medical reports.
Arguments for and Against Testing by the Developers Themselves
Both software developers and independent testers should be allowed to test their software. However, both groups should have different goals for testing. Developers should perform initial code testing before handing it over to independent testers. Tests performed by developers should focus on the robustness of the test, that is, how the system performs in a predicted environment (Parkin, 2001). This initial test should check whether the system can perform all functional requirements.
Consequently, the test should focus more on maximizing code-based metrics. Developers stand an advantage if they test their systems; for one, they understand them best and can carry out the testing process faster.
On the other hand, independent testers should also perform tests to check whether the system conforms to the requirements. Independent testers check whether the system performs consistently and predictably in a particular environment. Software developers may not be able to give a succinct report on the system’s performance due to bias or confidence that they may have in the system (Parkin, 2001). Independent developers are not emotionally invested in the project – allowing them to judge the system objectively. The test carried out by independent tests should be exhaustive.
- Explain Why a Software System Used in a Real-World Environment Must Change or Become Progressively Less Helpful
The real world is experiencing change at an unprecedented rate. Technology has grown and evolved tremendously since 1960. One notable technological change is the exponential growth of computing power experienced in the past few decades. Software systems, including operating systems and application software, have also evolved to match the new computing capacity. Increased computing power means that systems can perform more tasks at the same speed with much better graphics. Software systems must also be constantly improved to meet the users’ ever-changing needs. If not constantly improved, software systems become outdated and irrelevant to the consumer.
- Can a program be correct and still not exhibit good quality?
A system can be correct and still fail to exhibit good qualities. A good example was the TSB Bank case in April 2018. The online banking system at TSB Bank went down after the Bank’s IT department installed a software upgrade (Staff, 2020). Consequently, customers were locked out of their accounts. Customers could not log in to their accounts, while others received inaccurate balances on their debit cards and accounts. Even though the software issue was fixed a day later, the bank continued to handle customer complaints months later due to the incident.
- Why you should explicitly handle all Exceptions in a system with a High Availability Level
Exceptions in the system have the power to interrupt the normal flow of events in the system. An exception may be small, but its effects on the system can be devastating. In a software system such as an operating system for a bank system, every minute the system is not working can cost the organization huge losses. Hence, it is best to handle all exceptions explicitly so as not to interrupt the system’s normal functioning.
- Is it possible to Assess Software Quality if the Customer Keeps Changing what it is supposed to do?
Software quality is the process of describing the desirable attributes of a software product. The quality of software can be assessed by assessing the defects or quality of identified attributes of the software. Quality attributes include reliability, security, compatibility, transferability, functional suitability, and operationality of software. These quality attributes are assessed based on how well they perform the software’s set function. If the user changes those functions for one reason or another, software quality can be re-assessed based on the new requirements to determine how it performs. Therefore, software quality can still be assessed if the user changes the software requirement, but it has to be assessed based on those new requirements.
- Parkin, R. (2001). Developers and Testers — Who Should do What. Ivvaust.com.au. Retrieved 25 August 2022, from https://www.ivvaust.com.au/downloads/WhoShouldDoWhat.pdf.
- Staff, C. (2020). The biggest software failures in recent history. Computerworld. Retrieved 25 August 2022, from https://www.computerworld.com/article/3412197/top-software-failures-in-recent-history.html#slide5.