HW15: Chapter 15

15.10. The reuse of software raises a number of copyright and intellectual property issues. If a customer pays a 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.

It would depend on the language the contract uses. If it explicitly states that the coder retains rights to the code then by all means he may re use it. however if the contract states that all rights are transferred to the customer then it can not be touched. Perhaps a payment method in the vein of royalties for music can be beneficial here. Whenever the code is reused the writer must pay a royalty to the owner much like how music on the radio works.

HW13: Chapter 8

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

A meteorologist wakes up and begins his early morning routine. Once his ritual is completed he heads out the door and to his work. Once there he logs into his weather monitoring system. Logged in, he can view all sorts of information that is needed to accurately predict the weather. He also needs to routinely check to make sure all the instruments are functioning appropriately as well.

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.

This is an extremely flawed model for testing a system. While there is no way to 100% know there will not be any bugs in a system one should still commit the appropriate amount of time to the project in order to make sure it is of the highest quality possible.

HW 11: Chapter 11

  6.4. Draw diagrams showing a conceptual view and a process view of the architectures of the following systems:

A ticket machine used by passengers at a railway station.

Conceptual view
Process view

A computer-controlled video conferencing system that allows video, audio, and computer data to be visible to several participants at the same time.

Conceptual view
process view

A robot floor-cleaner that is intended to clean relatively clear spaces such as corridors. The cleaner must be able to sense walls and other obstructions.

Conceptual view
Process view

HW10: Chapter 5

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 birthday parties. Using an activity diagram, model the process context for such a system that shows the activities involved in planning a party (booking a venue, organizing invitations, etc.) and the system elements that might be used at each stage.

5.5. Develop a sequence diagram showing the interactions involved when a student registers for a course in a university. Courses may have limited enrollment, so the registration process must include checks that places are available. Assume that the student accesses an electronic course catalog to find out about available courses.

5.7. Based on your experience with a bank ATM, draw an activity diagram that models the data processing involved when a customer withdraws cash from the machine

5.8. Draw a sequence diagram for the same system. Explain why you might want to develop both activity and sequence diagrams when modeling the behavior of a system.

You would want to use both a sequence diagram and an activity diagram as they show “two different sides of the same coin.” The activity diagram is the form and function of how the system works, while the sequence diagram shows how the user would interact with the system.

HW8: Chapter 2

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 your answer according to the type of system being developed:

A system to control antilock braking in a car.

The waterfall method seems most appropriate since this is an important system to have. The purpose of this system is cut and dry so therefore the process for design should be easily laid out as well.

A virtual reality system to support software maintenance

I would suggest the spiral model as VR is still a new and evolving field. Due to this the team would need a model that is prepared for risk taking and has risk management plans to ease through them.

A university accounting system that replaces an existing system

Integration and Configuration would be best the best model for this system. Due to the there already being a system in place the team designing the replacing system could integrate parts from the older one that are still worthy of use.

An interactive travel planning system that helps users plan journeys with the lowest environmental impact

This sounds like it would be best to use the evolutionary prototyping model. Due to different means of travel becoming more and more important as the years go by this project would have to be able to adapt quickly in order to provide the least environmental impact.

HW 6: 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
.

Description: A system that accepts a valid debit/credit card, accepts a specified amount of gas, and then dispenses gas.
Function: charges customers the correct price for the amount of gas requested, and then dispenses the correct amount of gas.
Input: A valid credit/debit card, and an amount of gas.
Source: A pad used to navigate the menu, and a card reader.
Outputs: The specified amount of gas, and a receipt if requested.
Destination: The receptacle for which the gas is stored in (car’s tank, or gas container.)
Precondition: The pump must have enough gas stored for the transaction, and the customer must have the means to pay for the requested gas.
Action: The customer swipes their card, then requests a specific amount of gas, the pump then totals the amount to be charged on the card, and dispenses the gas.
Post-condition: The gas is dispensed from the pump to its new container, and then the card holder’s account is charged.

The cash-dispensing function in a bank ATM.

Description: an automatic system that lets one withdraws money from their card’s account when they swipe/insert their card.
Function: Allows customers to withdraw money from their debit/savings account.
Input: a valid debit card, and associated pin number.
Source: a magnetic strip/chip card reader, and a pin.
Outputs: The amount of cash requested, a receipt, gives the users card back.
Destination: The customer’s hands.
Precondition: The customer has the means to withdraw the requested amount, and the ATM has the enough cash stored to dispense the requested amount correctly.
Action: The customer gives the ATM their debit card, the ATM accesses the customers bank account, The customer requests a specific and valid amount to withdraw, the ATM dispenses the amount if it is valid, and then the ATM returns the card to the customer, along with a receipt if requested.
Post-condition: The customer now has the correct amount of cash in hand, the ATM, and the customer’s bank are updated to show the transaction occured.

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.

Description: A banking system that lets an account holder transfer funds to another account from the same bank.
Function: to transfer funds between two accounts under the same bank.
Input: An account to be transferred from, an amount of money to be transferred, and an account to transfer to.
Source: an internet connected device such as laptop or phone.
Outputs: a report of the transaction being documented.
Destination: the user’s account or email’s inbox.
Precondition: The customer must have the means to transfer the requested money, and the account the money is moving to must be under the same bank.
Post-condition: the account from’s balance is adjusted to the correct amount after the transfer, and the account to’s balance is credited the amount transferred.

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

An engineer may use a UML diagram or flow-chart to keep track of their functional requirements while having a spreadsheet available to keep track of the non-functional requirements.

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.

  • The validation of the debit card being used accompanied with a pin number
  • Being able to view your account’s balances
  • being able to make changes on your account: Withdraw, deposit, and possibly cashing checks.
  • securely exiting the person’s account after all-if any requested actions are completed.

HW 5: Reflections

These articles highlight the how severe the effects from software can be when it fails, and why it is important to have a dependable system working for you. One of the best ways to prevent a catastrophic failure is to be open minded and flexible with your dependable system. This requirement in preventing system failures allows engineers a certain level of discussion when creating a system that is open to conflicting ideas and at the engineer level allows the team to more cohesively move towards their goal. Identifying underlying problems is no simple task as well, and probably the best solution to solving these problems is testing your system. Going through your code and thinking of all possible outcomes that could come from running it, and then seeing how what you’ve designed reacts to those cases. Finding every case seems insurmountable, but with extensive testing – the quality of your code can only improve.

Now another theme that shared between the documents was a discussion on why systems fail. There is a litany of answers to this question, and to find the solution to prevent any one problem from arising could extent to both ends of the spectrum from being trivial to confounding and difficult. With that said there are few factors that can hinder the system greatly, those being: Funding, time, and organization. Without enough funding the engineers may have to work in substandard environments such as not having the access to the right equipment for the task. Time is important to any project as without a large enough time table the engineers will have to rush which ultimately leads to cutting corners, and overlooking problems. The final factor mentioned is organization. Organization is important to a system as with a lack of it this can lead back to wasting time on tasks that could be easily completed had thought been put into the project before work began.

To me there are clear solutions to preventing system failures. With attention to detail and a comprehensive and extensive testing most of the problem cases that could arise in a system could be fleshed out. However humans are fallible creatures and mistakes will occur. With that in mind as an engineer one can learn from past mistakes in order to create stronger systems moving forward.

HW4 Chapters 11 & 12

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

Redundant and diverse hardware and software are shared characteristics of different architectural styles.

11.7 It has been suggested that the control software for a 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 suggestion.

This is a good idea because something as serious as radiation therapy should have multiple checks in place in order to help prevent any errors in the system.

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

All exceptions should be handled in a system since if any exception is left unchecked it can high a high probability of breaking the system, and thus prolonging deadlines, loss of data, and loss profit, etc. could occur.

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 cannot go faster than the speed limit.
  • The train cannot proceed on a track with a red light.

HW 3

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

It is a reasonable assumption because using a dependable process involves using explicitly defined procedures to ensure that through the task of creating the software that its requirements are being met. It also helps ensure a low to non existence error rate and to ease time spent debugging. Other tasks involved in a dependable process include: formal specification, system modeling, inspections, static analysis, testing, etc. All these different procedures come together to form a check and balance system that will ensure the integrity of your software.

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.

In the ACM Code of Ethics, section 1.2 is titled “avoid harm.” It then goes on to discuss that even when your actions are well-intended they could still cause harm as to why certain regulations should be taken into consideration. a regulator could force the use of an older system of development due to it being considered more profitable than experimenting with a newer model, or regulators could also enforce an older model due to it generating a “safe” product.

HW 2

The articles No Silver Bullet, Kode Vicious, Google Code Repo share a common concern with how software should be organized, and the procedures taken that could be beneficial to software engineering, and therefore also produce an excellent software engineer.

The article No Silver Bullet makes a comparison between werewolf’s and software engineering. The concern here is how at any single moment the program could break. It discusses how complex software engineering can be to fully grasp, and mentions no real solutions exist to on how to fix this lack of complete understanding or in other words there is no silver bullet to end the beast. The article does state however that working with experienced people leads to furthering one’s own experience.

The article Google Code Repo discusses their monolithic repository, and how other resources have been utilized to make their repository possible. The majority of Google’s software engineers are running off the same repository. This done by using piper and CitC to store the code that is written into the repository. A plus to using this method is that engineers do not need to perform extensive testing on their project while it is being built as using one repository keeps everyone up to date. This method is also useful for the re-use of code. Multiple teams could share code in order to accomplish a different set of tasks. The article the ends with a discussion of why their model works, which it attests to their open work environment. Stressing that working in a stress filled environment can be just as detrimental as bad organization or one’s own personal skill.

Unlike the No Silver Bullet article, The Kode Vicious article provides  more tangible insight onto how to become an excellent software engineer. The article provides answers to two questions that might be common to software engineers. The article is an anecdotal account of the author’s experience in what not keeping well organized code can do. The first thing the author mentions is that an engineer can ease the difficulty of their task by merging branches often so that there is a less need to pick through your code later searching for that line you are looking for. The author also talks about the importance in keeping every member of your team informed on the task at hand and future task as well. This is to ensure cohesiveness of the team, and allows the code from different parts of the team to merge together more efficiently. It then discusses a strategy of documentation that comparable to the scientific method. Utilizing this strategy often leads to well documented code that offers and easy readability to anyone who tasked with working on the code written.

These three articles all provide us with methods that help produce more organized, thought-out code from sources such as a personal story from an experience programmer, a large company such as Google, and addressing fixes to the problems that arise

Design a site like this with WordPress.com
Get started