Wednesday, November 29, 2017

HW28: Chapter 25

25.10) Describe five factors that engineers would take into account during the process of building a release of a large software system.

  1. Technical quality of the system - If there are already issues with the current release, a quick update should be made to alleviate these issues.
  2. Platform Changes - A new version of the system may need to be released when a new operating system is released.
  3. Competition - A similar system may be released by a different company with new features that could pull users away from your system.
  4. Marketing requirements - Those who market the system may have promised a release date that the engineers have to adhere to.
  5. Customer change proposals - customers may request and pay for specific changes they expect to released by a certain date.

HW27: Chapter 24

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 through inspections?

Program inspections involve running through a list of common errors and looking for them in a system. They are performed by a developer who did not work on the code being inspected. This gives a fresh perspective which will be more likely to find errors. However, program inspections would not be as effective if the developer is using a specific library or algorithm that the inspector may not have as much experience with.

HW26: Team Progress II

Today we present our testing framework for Tanaguru with 25 completed test cases. The main problem with our last version is that the script was static. This means that information about the test cases and the drivers required to run them was hard-coded into our bash script. This was deemed to be problematic since it would be difficult to add test cases in the future. If someone later down the line wanted to add a test case, they would also have to modify our script. Now the script is dynamic. This means that the script is "dumb" and has no information about the test cases or the drivers. Now it is simpler to add test cases. The test cases are added as text files in the correct template. If a new driver is needed, it can be dropped in the drivers folder. This has no effect on the script.

This simple change in our project put some aspects of open source development into perspective. What if someone else wanted to use our framework? If the framework was static, it would require knowledge of bash and our script to add test cases. Now it simply requires the developer to copy the test case template.

HW25: Chapter 23

HW24: Chapter 22

22.6) Fixed-price contracts, where the contractor bids a fixed price to complete a system development, may be used to move project risk from client to contractor. If anything goes wrong, the contractor has to pay. Suggest how the use of such contracts may increase the likelihood that product risks will arise.

There will be unforeseen setbacks in the development of any software. With a fixed contract, developers might try to cut corners elsewhere to stay within budget in response to issues during development. Fixed price contracts create risk by fixing the budget and resources.

Thursday, November 2, 2017

HW22: Chapter 21

21.4) Explain why an object-oriented approach to software development may not be suitable for real-time systems.

In a real time system, information will change often. Object oriented programming involves communication of data between objects. In a real time system, the data could be changed during these interactions leading to inconsistencies in the system. It makes more sense to use a process oriented approach.
x

HW19: Team Progress 1

We completed the first iteration of our script with five test cases. Dr. Bowring pointed out that the main problem with our script is that it is too "smart." This means that script has too much hard coded information in it regarding the driver used and the number of test cases. This needs to be changed so that the test cases and drivers can be modified without making any changes to the script. Next we will need to create 20 more test cases. This will not only involve creating more test cases but also selecting new methods to test in Tanguru and the drivers that run them.

HW21: Chapter 20

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 other retail businesses. They pay you for services used. Discuss the ethics of changing the system interfaces without notice to coerce users into paying higher charges. Consider this question from the point of view of the company’s employees, customers, and shareholders.

I believe it is highly immoral to modify the system to coerce more money out of users, especially without notice. It is understandable to change a business model and raise prices. Markets change and software developers should change with the markets too. After all, they're in the industry to make money. If this is done, the users need to know far ahead of the changes. This needs to communicated clearly. Some users may feel using the system is worth paying more money. Others may not and will need time to migrate their data to another system. Making these changes without notice would reflect poorly on the developers and hurt their image in the long run.

HW20: Chapter 19

19.3) Why is it impossible to infer the emergent properties of a complex system from the properties of the system components?

Emergent properties cannot be inferred because they do not exist until there is interaction between the components of the system. Emergent properties include things like security, reliability, and repair ability. These properties cannot be observed until after the components of the complex system interact with each other

HW18: Chapter 18

18.4) Define an interface specification for the Currency Converter and Check credit rating services shown in Figure 18.7.

Currency Converter:

Operation: convertCeurrency
Inputs:  inputCurrencyType, outputCurrencyType, inputCurrencyAmount
Outputs: exchangeRate, inputCurrencyValue, outputCurrencyValue, fees
Exceptions: Invalid Currency Exception, Invalid Amount Exception

Operation: exchangeRate
Inputs:  inputCurrencyType, outputCurrencyType, inputCurrencyAmount
Outputs: exchangeRate, outputCurrencyAmount
Exceptions: Invalid Currency Exception, Invalid Amount Exception

Operation: currency
Inputs:  inputCurrencyAmount, outputCurrencyType
Outputs: outputCurrencyAmount
Exceptions: Invalid Currency Exception, Invalid Amount Exception


Check Credit:

Operation: creditCheck
Inputs:  ssn, name, birthdate
Outputs: creditScore
Exceptions: Invalid SSN Exception, Invalid Name Exception, Invalid Birthdate Exception

HW17-B: Chapter 17

17.10)Your company wishes to move from using desktop applications to accessing the same functionality remotely as services. Identify three risks that might arise and suggest how these risks may be reduced.



  1. Security: Accessing data remotely opens up your data to all kinds of attacks that were not possible on desktop applications. To combat these attacks, the company needs to make sure they keep their security systems up to date. Employees need to be educated against social engineering attacks as well.
  1. Failure Management: Service based systems need to be constantly connected to the internet to accessed remotely. If this connection is interrupted, data will not be able to accessed. The company needs to make sure that connection problems are resolved as quickly as possible.
  1. Performance: making the system a service adds another layer of complexity to the system because the data now has to be loaded over an internet connection. The system should be as efficient as possible to make sure that the system performs well enough for the users.

HW17-A: Chatper 16

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 component that records calls made, and a vehicle discovery component that, given a post-code (zip code) and an incident type, finds the nearest suitable vehicle to be dispatched to the incident.


 

HW16: Chapter 9

9.8) Briefly describe the three main types of software maintenance. Why is it sometimes difficult to distinguish between them?


  1. Fault repairs: Involves simple bug fixes in the software.
  2. Environmental adaptation: Involves changing the system so it runs in new environments alongside new software.
  3. Functionality addition: Involves adding new features to the system
These can be difficult to distinguish because they are all different forms of making the code better.


9.10 ) Do software engineers have a professional responsibility to develop code that can be easily maintained even if their employer does not explicitly request it? 

Developers should always try make their code as maintainable as possible. Most good coding habits involve making code well documented and easy to understand. Code should also be thoroughly tested. These practices make the code more maintainable.

HW15: Chapter15

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, who has the right to reuse the developed code? Does the software contractor have the right to use that code as a basis for a generic component? What payment mechanisms might be used to reimburse providers of reusable components? Discuss these issues and other ethical issues associated with the reuse of software.

- To me, the issue of who has the right to reuse the developed code depends on the agreement between the developer and the customer. If the the customer is paying for the code, I believe they have the right to reuse it. If they are paying for the developer's time, I think they have the right to use the system, not reuse the code. I don't like the idea as reusing someone's code as a generic component. If the code is easily accessible, such as on github or stack overflow, it can be used by anyone who sees it.

Tuesday, September 26, 2017

HW14:Testing Reflections

Testing, while not regarded as "sexy," is an important component of software development. The author discusses functional and structural testing. Functional testing involves coming up with test cases and trying to break the code after it is written. This is the type of testing I am the most familiar with. However, structural testing makes the tests a vital part of the software itself and the strategy the developer uses while building the program. This takes a lot of work and testing starts before writing the functional part of the program.

Because of this extra work, the author says there needs to be accountability in development. If there are little to no consequences for not completely testing and fixing software before its released, the quality of software will decline. The users and companies that employ developers need to make sure the developers are doing their due diligence and they test their code.

This brings us to the author's next big point: complex systems can never be completely tested. There are often too many cases and situations that could never be tested because we don't know they exist while testing. 

HW13: Chapter 8

8.7) Write a scenario that could be used to help design tests for the wilderness weather station system.

- Craig works at wilderness weather station an hour from Charleston wear he uses the wilderness weather station system. Craig logs in every day using his username and password. Craig records readings throughout the day. He checks past data in the system and compares it to the data recorded today. He then sends the data recorded to the data management system. Craig logs out of the weather management system.

8.10) A common approach to system testing is to test the system until the testing budget is exhausted and then deliver the system to customers. Discuss the ethics of this approach for systems that are delivered to external customers.

- Simply exhausting the testing budget seems unethical to me. If the budget is low, testing should be done more efficiently. For example, The features of the system that get the most use should undergo more testing. If this is not enough, perhaps the budget should be rethought. Shipping an under-tested system is unethical. A system could have fatal flaws that causes difficulty for users.
x

Monday, September 25, 2017

HW9: Reflections

The first thing that really jumped out at me in the article was the author's belief that consoles will continue to replace PCs. I agree with this opinion to a certain extent. I assume when the author says consoles, he includes smart TV devices like the Roku and Apple TV and mobile devices like smart phones and tablets. I assume this because the author emphasizes that the consoles will replace PCs in home for use as entertainment systems. I agree with the author here. Many people, like my mother and grandparents, only use PCs for basic things like email, social media, and media streaming. Consoles will replace PCs in this realm. However, with new applications for PCs in the business world, I think PCs will remain popular for a long time.
I thought the author’s statement about data analysis and how it relates to the past election was interesting. He points out how many pundits were quick to dismiss data analysis after the predictions were incorrect. I have been interested in data analysis in sports for a few years now and see this same dismissal on a regular basis. I agree with the author that data science will continue to grow as the methods of prediction become more refined with more data to compare. While no one should rely solely on data analysis, I believe it will be a useful tool in many industries and it should not be ignored.
I disagree with the author on interfaces getting more complicated. The initial UI designs for new technology will always be ugly and clunky, but with time they always become refined and minimal. This is seen in smart phones and how swiping has been utilized more and more in the last ten years.

I too worry about the implications of the law on new technologies. There is an interesting contrast is people being worrying about the invasion of their privacy while at the same time willingly giving personal information to the likes of Facebook and Google. However, I also worry that laws that allow invasion of privacy by authorities will be passed by those who do not completely understand the technology they create legislation for.

HW8: Chapter 2

2.1) Giving reasons for your answer based on the type of system being developed, suggest the most appropriate generic software process model that might be used as a basis for managing the development of the following systems:

A system to control anti-lock braking in a car:
The waterfall approach makes sense here because of the simplicity of the system. Also, there won't be much change to the system since it it part of a car and important safety features should not need improvement after release.

A virtual reality system to support software maintenance:
The incremental approach would benefit a VR system since the technology is fairly new. Since VR is new, it's potential uses are still being thought of and incremental updates as users figure out what they want are needed.

A university accounting system that replaces an existing system:
The Reuse-oriented approach would benefit a replacement system. Modifications to the system can be made were they are needed, and parts of the old system that work well and don't need to be changed can be reused.

An interactive travel planning system that helps users plan journeys with the lowest environmental impact:
An incremental approach would work best here. Climate science is a growing field and the system needs to be updated as more research is done on the subject.

Thursday, September 7, 2017

HW6: Chapter 4

4.5 Using the technique suggested here, where natural language descriptions are presented in a standard format, write plausible user requirements for the following functions:
An unattended petrol (gas) pump system that includes a credit card reader. The customer swipes the card through the reader, then specifies the amount of fuel required. The fuel is delivered and the customer’s account debited.
- The user swipes their card and then chooses credit or debit. It debit is chosen, they enter their PIN.
- If the transaction is authorized, the user pumps gas. The amount is decided when the user hangs up the nozzle.
- The machine prints a receipt for the amount of gas pumped.
The cash-dispensing function in a bank ATM.
- The user inserts their card.
- The user types in their PIN.
- If the PIN is correct, the user can choose the amount of money to dispense.
- The user's card is returned.
- If there is enough money in the user account, the cash is dispensed.
- A receipt is printed.
In an Internet banking system, a facility that allows customers to transfer funds from one account held with the bank to another account with the same bank.
- The user inserts their credentials (username, password).
- The user enters the account number and routing number of the person they want to transfer money to.
- If the account and routing numbers are valid, the user enters the amount of money to be transferred.
- The money is removed from the user's account and transferred.
- The user is sent a confirmation message when the transfer is complete.
4.6 Suggest how an engineer responsible for drawing up a system requirements specification might keep track of the relationships between functional and non-functional requirements.
- The requirements should be illustrated with diagrams and explained clearly in writing.
4.7 Using your knowledge of how an ATM is used, develop a set of use cases that could serve as a basis for understanding the requirements for an ATM system.
x

Thursday, August 31, 2017

HW4: Chapters 11 and 12

11.4) What is the common characteristic of all architectural styles that are geared to supporting software fault tolerance?

- Redundancy

11.7)  It has been suggested that the control software for radiation therapy machine, used to treat patients with cancer, should be implemented using N-version programming. Comment on whether or not you think this is a good decision.

-  I think this would be a bad idea. and incorrect dose of radiation would be extremely dangerous to patient.

11.9) Explain why you should explicitly handle exceptions in a system that is intended to have a high level of availability. 

-  The more available a system is, the more it will be running. Exceptions need to be handled to ensure the entire system doesn't stop working unexpectedly.

12.5)  A train protection system automatically applies the brakes of a train if the speed limit for a segment of track is exceeded, or if the train enters a track segment that is currently signaled with a red light(i.e., the segment should not be entered). There are two critical safety requirements for this train protection system: 
The train shall not enter a segment of track that is signaled with a red light.
The train shall not exceed the specified speed limit for a section of track.
Assuming that the signal status and the speed limit for the track segment are transmitted to on-board software on the train before it enters the track segment, propose five possible functional system requirements for the onboard software that may be generated from the system safety requirements. 
- If the next segment of track is red, apply the breaks.
- If the next segment of track is green and the allowed speed is higher, accelerate until speed matches the segment.
If the next segment of track is green and the allowed speed is lower, apply breaks until speed matches the segment.
- If speed is higher than the current segment's allowed speed, apply breaks until speed is lower than the speed limit.
- If speed is lower than the current segment's speed limit, accelerate until the speed matches the speed limit.
x

HW3: Chapter 10

10.6 Explain why it is reasonable to assume that the use of dependable processes will lead to the creation of dependable software.


  1. Availability: The probability a system will be running and be able to serve the user at any time
  2. Reliability: The probability the system will operate correctly and deliver services to the user
  3. Safety: The probability that the system will not cause harm to people or the environment.
  4. Security: The probability the program will resist attacks from the outside.
  5. Resilience: How well the system can keep running when under attack or during some sort of component failure.
These are properties of dependable software. To create dependable software, dependable processes should be used. These processes are audit-able, diverse, document-able, robust, and standardized as described by the author. 

10.10 It has been suggested that the need for regulation inhibits innovation and that regulators force the use of older methods of systems development that have been used on other systems. Discuss whether or not you think this is true and the desirability of regulators imposing their views on what methods should be used.


To a certain degree, it is probably true that regulations can inhibit innovation. This is not a strictly a problem with regulations themselves but those who put them in place. I believe regulations are necessary to make dependable, long-lasting software. We need to make sure to also maintain and modify our regulations so they facilitate innovation instead of stifling it.

HW2: Responses

-

Tuesday, August 29, 2017

HW0: Introduction

Hello,

My name is Drew Bigelow and I am senior at the College of Charleston in Charleston, South Carolina. In this blog, I will be posting about CSCI 362: Software Engineering. I am working towards a BS in computer science and a minor in data science. Currently, I also work for Dr. Jim Bowring in CIRDLES on a program called Topsoil. There will be posts about my work on Topsoil as well.