Meeting Charleston
Today, I attended the Alumni Symposium. During freshman year, one of my classes had encouraged attendance to the (then in-person) symposium, but I was unable...
“Databases reside at the heart of most software applications” (SD Chapter 6, pg 168). This week’s readings cover Chapter 6 of our textbook, Client-Centered Software Development. Whereas Chapter 5 focuses on domain classes, Chapter 6 focuses on databases, making a distinction between the two structures. A database is comparable to a domain class but holds data in permanent storage rather than program memory.
Software applications utilize databases to carry information about their users and history. I have gotten some first-hand experience with databases as they relate to applications through work. A live SQL database powers the application and the information displayed on all of its pages. It’s clear to me in that case that the application simply wouldn’t run without the database. We also use queries for operations projects. The chapter describes a query as a manipulation of a database that retrieves data meeting specific criteria.
Of course, in order to get such a large database as certain software companies have, programs within the application must add data. One topic the chapter discusses that I was unfamiliar with is “collision”. In a client-server application, it’s possible for multiple clients to access the same database table at one time. Different types of databases have different concurrency control mechanisms. When multiple sessions are involved, databases may implement access control strategies such as table or row-level locking. These will, respectively, lock the table or row for writing for all other sessions when a session is already writing to that part of the database. To support this, sessions should only be connected when they are actively querying. Queries should run in a reasonable amount of time.
Databases contain the most sensitive information about the application and its users. Naturally, then, the usage of a database to power software introduces many new vulnerabilities. The chapter describes a secure database as one that presents valid information and prevents unauthorized read or write access. Achieving this goal involves, among several strategies, proper encryption of data and assignment of appropriate users privileges. Users can be assigned read or write privileges at several different levels such as server, database, table, and column. I would imagine that leadership at software companies has to make extremely careful decisions about how to assign these privileges. For example, read privileges may be unnecessary for most developers and also happen to pose the most risk for a confidentiality breach. If too many developers have read access, it may become difficult to trace malicious acts to the perpetrator. However, developers need write access to perform data cleanup.
We take a look at database testing at the end of this chapter. As such a crucial part of the application, the database naturally must be included in the testing framework. I had not considered the importance of restoring the database to its original state after running tests. Of course, cases that test even simple CRUD (create, read, update, delete) will have to alter the database. Hence, it must involve a three-step setup, testing, and teardown process that ensures this. Finally, the layering principle caries into database design. This says that all queries in the software “that affect the database should originate from one of the modules”. This encourages developers to complete modules so they won’t be tempted to query the table from anywhere in the code but the related module.
Overall, it was super interesting to read about how databases and software mix while working with open source software for this class and within a software company that runs on a SQL database! I look forward to looking for applications of these principles within my work in both areas.
Today, I attended the Alumni Symposium. During freshman year, one of my classes had encouraged attendance to the (then in-person) symposium, but I was unable...
The journey does not end after a software project has gone live. This week’s reading was “Continuing the Journey” - Chapter 9 of Client-Centered Software Dev...
“Databases reside at the heart of most software applications” (SD Chapter 6, pg 168). This week’s readings cover Chapter 6 of our textbook, Client-Centered S...
This week’s reading (Chapter 5 of Client-Centered Software Development) covers domain classes and unit/system testing. According to the text, “domain classes...
Proper documentation for both internal and external users of a software application is crucial to its sustained success after deployment. This week, we read ...
This week, we read “From STUPID to Solid Code!” by William Durand. This article is packed with high-level do’s and dont’s of programming. The “dont’s” are co...
This week, our class chose and reflected on articles from Software, Computer, or CoACM magazines. While perusing software magazines (finding good ones was an...
6.4. Exercise - Find the Oldest Bug Find the oldest bug that’s still open in your chosen project. Write a blog entry describing the problem, with a theory ab...
This week, our assignment was to explore http://opensource.com/, reading at least two medium-length articles from the site and blogging about what we learned...
This class, CSCI 462, is centered around contributing to an open-source software project through bug fixes, documentation fixes, and other improvements. Befo...
Hi everyone! My name is Janneke (pronounced ‘Yah-Nuh-Kuh’) Morin.
24.6 Explain why program inspections are an effective technique for discovering errors in a program. What types of error are unlikely to be discovered throug...
I feel like our team made great progress on the most recent deliverable (deliverable 4)! We met via Zoom more often than we did between any other two variabl...
23.6 Figure 23.14 shows the task durations for software project activities. Assume that a serious, unanticipated setback occurs, and instead of taking 10 day...
21.4 Explain why an object-oriented approach to software development may not be suitable for real-time systems.
This is my first reflection on our team’s testing project. I think this will be a helpful exercise as we move into the final stages of building our testing f...
20.10 You work for a software company that has developed a system that provides information about consumers and that is used within a SoS by a number of othe...
19.3 Why is it impossible to infer the emergent properties of a complex system from the properties of the system components? In the words of Ian Sommerville,...
18.4 Define an interface specification for the Currency Converter and Check Credit Ratings services shown in Figure 18.7.
17.10 Your company wishes to move from using desktop applications to accessing the same functionality remotely as services. Identify three risks that might a...
16.9 Design the interfaces of components that might be used in a system for an emergency control room. You should design interfaces for a call-logging compon...
9.8 Briefly describe the three main types of software maintenance. Why is it sometimes difficult to distinguish between them? Fault repairs to fix bugs and v...
15.10 The reuse of software raises a number of copyright and intellectual property issues. If a customer pays the software contractor to develop a system, wh...
8.7: Write a scenario that could be used to help design tests for the wilderness weather station system. Context: According to Chapter 7, Design and Implemen...
Mythical Man-Month - Does adding more labor to a project linearly reduce the time to completion? Or does it do the opposite, particularly to an already late ...
5.3: You have been asked to develop a system that will help with planning large-scale events and parties such as weddings, graduation celebrations, and birth...
2.1 Suggest the most appropriate generic software process model that might be used as a basis for managing the development of the following systems. Explain ...
4.5: Using the technique suggested here, where natural language descriptions are presented in a standard format, write plausible user requirements for the fo...
Our readings this week began with a focus on several software engineering failures which resulted in devastating incidents such as plane crashes (Space Craft...
11.4: What is the common characteristic of all architectural styles that are geared to supporting software fault tolerance? Architectural styles geared to su...
The Complexity of Software and Its Evolution Software is, by definition, complex. Frederick P. Brooks, in his article “Essence and Accidents of Software Engi...
1.3: What are the four important attributes that all professional software should possess? Suggest four other attributes that may sometimes be significant.
Hi everyone! My name is Janneke (pronounced ‘Yah-Nuh-Kuh’) Morin.