Saturday, December 10, 2016

H28: Chapter 25

Describe five factors that engineers should take into account during the process of building a release of a large software system:

Building large software systems is a time intensive process that requires detailed planning. Factors that engineers need to consider are the basic fundamentals an engineer or software manger would take when designing software. They would need to follow some of the processes identified in plan-driven development. The engineer first would need to develop a conceptual design for the software system. Secondly, a risk analysis would need to be taken, followed by contingency plans to deal with those risks. To be able to act promptly incase of a contingency plan needs to be exercised, the engineer needs to establish procedures that monitors their risk. Last but not least, the engineer need to address organizational issues such as staff that will handle coding and clerical duties.



HW27: Chapter 24

Explain why program inspections are an effective technique for discovering errors in a program.  What types of errors are unlikely to be discovered through inspections?

Inspections are a fundamental need for any product that is made for public use, the same applies to program code. Inspections in programming allows errors to be found that would not necessarily be found at compile time. These types of errors are logical errors. Types of logical errors can be arithmetical or interpretative. Since these type of errors may not cause faults in a program at run or compile time, it can make them hard to find. The most effective way to find logical errors is not by automated processes but by manually probing through the code. Routine inspections provide this type of manual probing. 

Tuesday, November 15, 2016

HW25: Team Progress II

After our last project was banned (PokemonGo map), we were able to find another project that was not at risk of being banned or blocked. We choose todo a League of Legends application that provides a slew of testable methods.  Since we already had our test driver setup and running for the Pokemon map application, we reused the framework from that project to test methods in the League of Legends application. We have successfully identified and tested 20 methods within the League of Legends application. Also, we have scripted the results of the methods to generate in a webpage as specified. Now, we are awaiting for feedback to any changes that may need to be made to our test driver and any other portions of our project.

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 contacts may increase the likelihood that product risks will arise.

Fixed-price contracts may increase product risks in many different ways. The objective of the contractor bidding on a job is to bid at a price that will allow for him to make a profit while delivering a specified product. Often bidders have to be competitive in time and price, as-in who can deliver the product for the lowest contract price in a specified amount of time. This leads to contractors promising completion time frames for projects that may not necessarily be obtainable. To compensate, the contractor produces a rushed product that may not fulfill all of the clients requirements and may lack in the area of security.  This is a result of not having sufficient amount of time to fully test and debug the project. 


HW22: Chapter 17


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

This type of switchover models a client-server type of architecture which requires client-side functionality and server interaction. The type of risks with this type of architecture include server overload,  control of data transfer rates/speeds,  and server failure resulting in data loss. To reduce the risk of server overload, web technologies such as AJAX and HTML5 can be implemented. They provide better efficiency when it comes to webpage presentation and local computation.  To aid in data transfer rates and speeds, data can be compressed then transferred. This reduces the size of the file and may reduce the load on the network.  To prevent a situation where there is a complete data loss due to a server malfunction, the company can regularly schedule data backups to external sources other than on the hosted server. 

Wednesday, November 2, 2016

HW21: Chapter 20

(20.10)  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.

Changing a system interface without notice to coerce its users into paying higher chargers is unethical and violates the basic principles of the ACM. Namely, it violates the Judgment, Profession, and Client and Employer principles. Together they emphasize that professionals of the field should act in a manner that promotes the reputation and integrity of the industry and produce products that are in the best interest of client.  The idea coercing a client for the gain of profit can be detrimental to the reputation of the industry. It can lead to mistrust with the public and most importantly result in unwanted legal attention and repercussions.  

Thursday, October 27, 2016

HW20: Chapter 19

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

A system, especially one that is complex, is composed of many intricate parts known as components, that can be composed of trivial properties on broad level. But its specific purpose as an complete unit is non-trival from a birds-eye perspective. It is equivalent to disassembling a machine designed for a specific purpose down to its nuts, bolts, and screws (and whatever is leftover), then asking someone what is the purpose of those screws. The person can identify the nuts, screws, and other individual items (which we will call properties of the components), and infer its purpose,  but in no sense will that person be able to determine what the overall functionality of the parts as a complete unit.