HW27: 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.

Configuration files defining how the release should be configured for particular installations like windows will be a different installation then MacOS, or Android and iOS, etc.

Data Files which can be files of error messages in different languages, that are needed for successful system system operation and for a simultaneous world-wide release (or close enough!)

An installation program that is used to help install the system on target hardware.  Again windows usually has something like a setup.exe where as on linux you might actually have just the source code and need to build the application yourself with a makefile, maven, or gradle.

Electronic and paper documentation describing the system which these days is mostly found online so at the very least updated manuals on the website.

Packaging and associated publicity that have been designed for that release.  These can actually differ to a very widespread and aggressive social media campaign to something more exclusive like a live streaming Tesla preview.  In some cases you can just release and let your users upload their own experiences on youtube but that can be risky but it is very cheap and can be very effective.

HW26: Chapter 24

Ex 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?

They are effective because they are rather inexpensive as they involve team members from different backgrounds who make careful line-by-line review of the source code.  They look for problems and defects and describe them at an inspection meeting.  These can range from anomalies in the code to outright logical errors.  In one study (Fagan 1986) it was found that about 60% of the errors in a program were found during code inspection, that’s pretty effective.

What I think inspections don’t uncover is how the program will perform in the system environment it was intended for because this is usually not uncovered until either a) there is a very similar test environment that mimics the production environment very closely and has all the other programs and components running there or b) the program is let loose on the production environment after passing its successful tests.  Sometimes it isn’t until this point that other mistakes in design or coding will be discovered as well.

 

HW25: Team Progress II

More of the same, I think at this point tempers are rising because of the sheer amount of work that needs to be done.  It is almost easier to just to all the work myself than have to explain exactly what needs to be done.  I didn’t ask to be the lead on the team project and the fact that some team members have problems making file conversions or still figuring out how to use git or what still needs to be done is beyond my control.  I try to help but it’s almost better that I do not however with the amount of deliverables it is best to enlist at least some help getting those started/done.  Having to trust that my teammates can accomplish one artifact or assignment with great competence has yet not come to fruition but simple completion of assignments however sloppy and uninspired are good enough.  A common excuse is they have a lot of other work to do, ok and I just live to finish this?

I’ve had to redo all the test cases since there was plenty of feedback during our demonstrations that the requirements weren’t being communicated correctly.  I’ve also had to think ahead about the fault injection and decided to rename all the tests to test1, test2, … testx in order to be able to use some cool bash functions that can navigate the tests in the directory in a specific order like 1 thru 5 or 10 thru 15.  However with 25 test cases I wasn’t able to pawn this off to any team member and had to do it myself since explaining it was getting really frustrating.  Overall this team project has been stressful but luckily we weren’t getting our homework graded at the same time since with finite time I have to pick and choose what I do in 16 hours time 8 of which are spent at work ha!

I have full confidence we would finish the project but just not sure how nice that polish would be done or that foresight executed so we weren’t all scrambling the day before everything is due.  However, at some point I just have to delegate and hope for the best and if it’s not up to par well it’s not up to par as long as there is minimal risk to the actual framework I am fine.

HW24: Chapter 23

23.6 Figure 23.14 shows the task duration for software project activities. Assume that a serious unanticipated setback occurs, and instead of taking 10 days, task T5 takes 40 days. Draw up new bar charts showing how the project might be reorganized.

HW23: 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 such contracts may increase the likelihood that product risks will arise.

Product risks affect the quality or performance of the software being developed.  During testing issues might be uncovered that weren’t part of the agreed upon requirements.  But if a contractor has burned through their allotted budget on development and held nothing in case bugs are found then the software being delivered will have bugs which is obviously bad quality software.  It is important that if a contractor is to agree to a fixed-price that they save enough of the budget towards bug fixes resulting from testing and the inevitable extras that no one has thought of that come up like maybe release notes or documentation expenditures.  Performance is also tied to a lot of non functional requirements like usability, maintainability, reliability, and availability — most of the -ilities.  The contractor could be meeting all the functional requirements and still deliver a poor quality product whose performance is abysmal because there’s no budget left to refactor or identify and eliminate bottle-necks in the software.

HW22: Chapter 21

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

Typically lower level languages are used because they are more efficient with the code they generate which is important to execution time when dealing with real-time systems.  Execution time needs to be fast in order for the responses to be meaningful from a real-time system as these are based on a stimulus-response model.  Languages like Java involve data-hiding representations and accessing attribute values through operations defined with the object which lead to significant performance overhead in OO systems.  Implementations in C are still preferred these days until Java can develop less resource hungry code.

HW21: Team Progress I

We were able to get 5 test cases working by the deadline and made use of the script to compare the output of the method being tested with the oracles we were expecting.  There is an issue with polishing up the whole project and making it more presentable but it’s become very, very difficult to do so as really only two of us are working on this with any kind of vigor.  One thing I have noticed is that sometimes if there’s dead weight it might be a good idea to just keep them out of the loop and keep moving forward as this allows a lot more time for development and polishing instead of explaining and bringing up to speed.  I think that will be the strategy moving forward, I had expected more contributions to the project from this team member over the weekend than we received but that didn’t happen.  And as a result the presentation was made unclear and confusing to Professor Bowring, which is valid and something that you don’t really think of when you’re dealing with the small details.

The good news is my other team member Cameron is doing a very good job keeping up.  I believe he takes the criticism or feedback a little hard when it’s given after so much work but it doesn’t really phase me.  It just lets me know what we really need to polish up.  If behind the scenes everything is working great but the audience cannot tell, that is a major issue.  I made sure what was being done behind the scenes was up to specification, now we just need to present the test cases in a better manner — that shouldn’t be too difficult but will take work.  I have no expectations at this time that the third team member will be able to work on any of this so I’m clearing my plans for November and making huge pushes to the repository.  I actually enjoy the project very much and if it weren’t for previous commitments I had made months ago and my 40hour a week job it would show more.  I expect our next presentation to go a lot better (no more connection problems to the screens either).

HW20: 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 the 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.

Unfortunately ethical considerations take a back seat to profits 9 times out of 10.  It’s very, very hard to be ethical and maximize profits which as a shareholder is one of your main concerns.  The shareholders of both public and private companies have corporate boards that discuss these kinds of ideas all the time and we’ve seen them show up many times.  How many times have companies deprecated fully working functions and interfaces in lieu of more lucrative business models involving pay as you play when once they were free?  A lot.

As for the customers using these software systems your faced with one of two choices, revert to a different company’s system which is both expensive and time consuming or build your system in-house which is even more expensive and time consuming!  So you’re effectively stuck between a rock and a hard place.  I will say if a company is to do this to their customers number 1 be sure you let them know a long time ago it was coming a good two years is ample time, but often a year is what’s given.  If you can’t even do then I’d really reconsider working with these companies as they are very unethical.

Finally the employees that have to make these changes often are ethical and the first line of defense.  They should stand up and say to the boss that it isn’t right and explain why.  Explain the ACM code of ethics, explain how customers will flee, explain why you have a duty to both customer and management.  If they can’t get that or won’t work with you, there are several other ways to effect change.  Maybe hustle hard so you can move up in the company and impose your ideas with a little more leverage.  Only in very egregious cases should things become made public to show the world how unethical the company is, I remember reading a lot about Google employees leaving the company after they unethically installed a lot of filters in the search tool in order to please the leaders in China and left everyone in the dark about it.  Google’s mantra used to be “Don’t be Evil.”  That was pretty evil and in the worse cases it’s often best to say bye to the company when they don’t want to reason with you.

https://www.foxnews.com/tech/google-employees-quit-over-controversial-china-search-engine-project-report-says

HW19: Chapter 19

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

I think a perfect example of this was presented in the reading of Mythical Man Month where we learned that adding more programmers to the mix doesn’t exactly shorten your time frame.  In many cases, adding more programmers actually starts increasing the complexity of the project just on communication areas alone.  If there’s one or two programmers, you have no one or just one person to communicate your ideas or implementations on.  With two or more you start adding on communication channels in a almost parabolic fashion, with 4 programmers we are talking 6 channels.  With 5 it’s 10 channels!

There was a discussion in class about Synergy, refined by R. Buckminister Fuller who analyzed its implications more fully and coined the term synergetics which we learn:

  • A dynamic state in which combined action is favored over the difference of individual component actions.
  • Behavior of whole systems unpredicted by the behavior of their parts taken separately, known as emergent behavior.
  • The cooperative action of two or more stimuli (or drugs), resulting in a different or greater response than that of the individual stimuli.

So we find that it’s impossible to infer because emergent properties of individual components working together result in a different or greater response than that of the individual component.

(https://en.wikipedia.org/wiki/Synergy)

HW18: Chapter 18

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

In this case we are talking about a programmatic web service interface which defines the data available and how it can be accessed and used.

Currency Converter

Operation Inputs Outputs Exceptions
ConvertCurrency curIn Original Currency, New Currency, Amount curOut New Amount, New Currency curFault Invalid Amount, Invalid Currency Type
ListCurrency numIn Maximum number numOut URL of page with list of valid currency types up to maximum number listFault Maximum number must be a positive integer
SearchCurrency searchIn Currency Type searchOut URL of page with search results searchFault Invalid currency type

Check Credit Rating Services

Operation Inputs Outputs Exceptions
ListRatingServices numIn Maximum number numOut URL of page with list of valid rating services up to maximum number listFault Maximum number must be a positive integer
CheckCreditRating credIn Social Security, Rating Service code credOut URL of page with Credit Rating score and how that compares to rest of population curFault Invalid social security, Invalid rating service code