Friday, August 30, 2013

Creating my directory on Subversion

My first mistake when attempting to create my directory on SVN was when I sat down and decided to do it. I assumed I had to ssh in, and after I started typing in the command, realized I wasn't provided a port and that I was an idiot.
After typing "svn" into my terminal, it took very little time to install. I had looked up the command to actually create the directory earlier, mkdir, and recalled it was similar to how other file systems on Linux work.
Unfortunately, after a quick perusal of the staple SVN commands, I thought that the "checkout" command would give me what "ls" would normally - this turned out to be wrong. Luckily enough though, it did allow me to login to the server so that I needn't be bothered when running other commands, so it wasn't a complete waste - and it did show me that someone else had beat me to the punch.
I quickly found the command I was looking for, the list command, with the reasoning that even if I make the directory I was looking for, I would need to verify it's existence in an easy way. Besides, I was curious to see how many other people had completed the assignment as well, just in case checkout was reporting oddly.
Unfortunately while using mkdir, in my confusion, I may not have properly logged my actions when prompted - however, upon using the list command, found that I was indeed successful.

Wednesday, August 28, 2013

Homework 5 – Software Engineering – CSCI 362-001

The software problems that caused the aerospace accidents seem like things that should have been easily avoided to us now, but perhaps then not so much. I don't know how the schooling was for the engineers, nor the common procedures – we seem to have a process for trying to cover as much as possible nowadays and a better standard for making decisions on what should be included and making sure it works. I was most troubled when it was mentioned that software was apparently assumed correct until proved faulty – as if they were just going to see if a program worked on a cheap replaceable computer instead of launching hardware into space.

The lack of responsibility in these projects shocked me as well. I thought people in higher up agencies at least tried to make sure someone else could take responsibility – even if it was due to simple paranoia for their own skins. The fact no one was doing certain things was also baffling; certainly checking whether something was done or at least basically tested would be on the checklist? It seems odd to have more software and procedures than necessary on something that once deployed would be essentially unmodifiable. The old adage less is more should hold some weight when applied to something where everything must go perfect – and who isn't willing to specify exactly what they need when they're going to be shipping the thing off to space?

The Sentinel and Virtual Case File articles disappointed me. As a kid I always assumed that the government was always listening and constantly keeping up to date with information and how to manage it – it seems like the FBI should have a better system than paper to keep records. The fact they don't seem able to communicate with those it has working to make a more up to date system is also baffling – certainly they should be harassing those who work for it for constant work updates, if nothing else? These agencies are usually thought of as more capable – or at least more capable of intimidation in regards to getting others to do something they want. The fact that security was apparently an issue was also appalling – for any system for the government I would imagine security would be the top priority.

The situation with medical equipment – radiation emitters specifically – seems like something that should have happened at most with one device. I would expect more caution from anyone working on a medical device. Furthermore, I would think that the makers would be more paranoid about lawsuits or being held responsible for their product malfunctioning so horribly. It seems all of the systems did not have nearly enough feedback, and attempted to be way too complicated – offering features such as auto treatment when something so life threatening should be given instructions very discretely. For the Therac-25 it seemed like a horrible legal and PR move to deny knowing of other accidents at one point – especially when evidence existed to the contrary.

Tuesday, August 27, 2013

Homework 4 – Software Engineering – CSCI 362-001

11.4 – Giving reasons for your answer, suggest which dependability attributes are likely to be most critical for the following systems:

An Internet server provided by an ISP with thousands of customers – Availability and reliability so that the thousands of customers can get the services they pay for.

A computer-controlled scalpel used in keyhole surgery – Safety, reliability, and security so that when the scalpel does perform, it does so correctly and does not cause damage. Security is involved in this so that the system is not compromised and used to murder patients.

A directional control system used in satellite launch vehicle – Availability, reliability, and security are paramount. This is so that the satellite can be moved out of the way of debris at any time without worrying about malfunctions, and security so that it isn't used for terrorist purposes.

An Internet-based personal finance management system – Security and reliability are the most important. The finances should not be compromised at any cost, and accidents involving the finances should not occur.


11.7 – In a medical system that is designed to deliver radiation to treat tumors, suggest one hazard that may arise and propose one software feature that may be used to ensure that the identified hazard does not result in an accident.
An example of a hazard in this situation is that the sensor that measure how much radiation is to be released may stop working. In this situation the software should not allow the treatment to proceed until it is fixed.


11.9 – Using the MHC-PMS as an example, identify three threats to this system (in addition to the threat shown in Figure 11.8). Suggest controls that might be put in place to reduce the chances of a successful attack based on these threats.

An unauthorized user will gain access to the system by infecting an access terminal and stealing login credentials.

An unauthorized user will harass and clog the system in an attempt to cause a denial of service.

An unauthorized user will bypass login terminals and inject malicious software into servers in order to change or steal confidential information.

Thursday, August 22, 2013

Homework 3 - Software Engineering - CSCI 362-001



10.6 - A multimedia museum system offering virtual experiences of ancient Greece is to be developed for a consortium of European museums. The system should provide users with the facility to view 3-D models of ancient Greece through a standard web browser and should also support an immersive virtual reality experience. What political and organizational difficulties might arise when the system is installed in the museums that make up the consortium?

Depending on where the physical museums are located there may be legal issues depending on the content of the system. Ancient Greece had several activities which are not necessarily accepted today - this ranges from pedophilia, young marriage, and brutal murder. If the system includes these then there may be political damage done to the institutions. Organizational difficulties may arise if the system makes staff members irrelevant - the job that they previously done has been replaced.


10.10 - You are an engineer involved in the development of a financial system. DUring installation, you discover that this system will make a significant number of people redundant. The people in the environment deny you access to essential information to complete the system installation. To what extent should you, as a systems engineer, become involved in this situation? Is it your professional responsibility to complete the installation as contracted? Should you simply abandon the work until the procuring organization has sorted out the problem?

As a systems engineer you should attempt to gain the information you require to do the job you were
contracted to do. If it is being kept from you by others, you should avoid direct conflict (getting in
arguments or threatening those barring your way), and have the procuring organization gain and provide the data. At no point should you do any illegal activity to gain access to the data you need.

Homework 2 - Software Engineering - CSCI 362-001

No Silver Bullet by Frederick P. Brooks, Jr has many fair points, though seemingly none revolutionary. I agree that the nature of software means that a sure-fire way to complete every software project seems unlikely. The complexity, need for change, and variety of all software required seems too vast, especially with changing hardware and the variety of hardware. I also agree that high level programming languages did a huge amount for software development – it reduces labor time and complexity.

While object orientated programming does help in terms of design, I do not personally feel having a class hierarchy greatly aids the whole field of software engineering. While it does aid in the complexity of the craft, there are other factors that simply outweigh the advantages it gives. Similarly, I do not feel that artificial intelligence is going to make software engineering really easy – at least not in the near future. There are still great strides left to be taken to get the AI field to smaller accomplishments – solving something like easy software engineering development seems far off. I feel similarly about automatic programming.

In Kode Vicious' Cherry-Picking and the Scientific Method I agree that preparation for thins such as mergers is more important than trudging through old code for diamonds in the rough. Doing so seems like a much better use of time and will lead to more efficiency. Similarly, any time any bugs are to be fixed I think good documentation is in good practice – that way, if nothing else, you can always backtrack if your fixes have unexpected consequences, or someone wants proof that you have been working on something specifically.

Software Analytics by Tim Menzies and Thomas Zimmerman proved to be an interesting read. This was due to the fact that I had previously heard of and conceived the field, but had not actually read anything about it previously. I definitely find software analytics techniques necessary with all the data available today – it would be impossible to search through it all with humans, and would more than likely prompt many mistakes. The article also supports the idea that the “silver bullet” for software engineering is not likely to pop up, as even they state that what you learn from one experience may not apply to a different one. The article also reassures job security when they state that having a huge amount of processing power is useless without good scientists behind it – something I would assume that most people would think.

It seems out of the three articles that this one describes a subject that may encounter legal issues the most, depending on what type of data is being worked on and where it comes from. With recent scandals such as the NSA debacle and the companies related, this field may be greatly affected if legislation is passed to alter what is allowed. I must admit though, the predictions for software analytics in 2020 seemed a bit generic and lack luster.

Tuesday, August 20, 2013

Homework 1 - Software Engineering - CSCI 362-001



1.3 : What are the four important attributes that all professional software should have? Suggest four other attributes that may sometimes be significant.

Four Important:

I. Functionality/Performance
II. Maintainable
III. Dependable
IV. Usable

Four Suggested:

I. Secure
II. Safe (In terms of potentially damaging hardware)
III. Portable
IV. Understandable and Simple


1.8 : Discuss whether professional engineers should be certified in the same way as doctors or lawyers.

    Professional engineers should be certified in a similar way to doctors and lawyers. They should
have to demonstrate some level of competence in regards to knowing a variety of different software
engineering techniques. This would be so that they are capable of making a decision about what techniques should be used for development, as opposed to applying one approach to every problem.



1.9 : For each of the clauses in the ACM/IEEE code of ethics shown in figure 1.3, suggest an appropriate example that illustrates that clause.

I. Public - Do not develop systems designed to harm the public, such as making a program that acts as
mal-ware.

II. Client and Employer - Develop systems that meet client and employer specifications whilst still
preventing harm to the public, such as meeting specifications while maintaining security and performance.

III. Product - Do not create shovel-ware designed to capitalize on a fad whilst disregarding quality, such as creating a bad application to capitalize on the release of a new popular movie.

IV. Judgement - Do not allow yourself to be swayed into violating or ignoring moral or legal problems, such as accepting bribes to let something go or stealing previously developed software for use in your project.

V. Management - Not only should you hold yourself to a code of ethics, but encourage others to do so as well, such as in an office with potentially unethical business practices.

VI. Profession - Do not "paint software engineers black" by attempting to jeopardize the integrity or
reputation of the profession due to a fall-out with employers or colleagues.

VII. Colleagues - Do not belittle colleagues who have failed or are having trouble, and instead help or
give advice and support, even if in direct competition.

VIII. Self - Continue to learn about new software engineering techniques and encourage others to be ethical in their approach to software engineering, as opposed to refusing to use new techniques and sitting idly by whilst others do unethical actions without being encouraged to be ethical.



1.10 : To help counter terrorism, many countries are planning or have developed computer systems to track large numbers of their citizens and their actions. Clearly this has privacy implications. Discuss the ethics of working on the development of this type of system.

 By working on this type of citizen monitoring system several of the clauses above may be breached.
This is somewhat dependent on whether or not the citizens would like to be monitored and whether they agree such a system would be in their best interest, as well as your own thoughts on the matter. It would seem more likely that the citizens would not be in favor of such a system - and therefore, according to the clauses above, your actions potentially unethical.