Week 1 Introductions

Introduce yourself here by telling us your name, what part of the world you live, your major or primary area of study at UMUC and what you envision doing with your programming skills you obtain from this course.

Hello class, my name is Yuji Shimojo and I'm 28. I am from Okinawa, Japan and live in Tokyo, Japan now.

I have more than 6 years of working experience as a technical sales representative and more than 2 years of working experience as an AWS (Amazon Web Services) certified solutions architect at an IT company based in Okinawa, Japan. I have much experience in technical sales for system migration, integration, and 24/7 operational monitoring by using both public clouds such as AWS and on-premise IT infrastructures including x86 servers, networking appliances, and storage hardware. Recently, as an AWS certified solutions architect, I am mainly directing projects including architecting, building, managing systems on AWS.

I'm currently majoring in Computer Science with a minor in Business Administration. I took CMSC335, CMSC350, CMSC325, CMSC330, CMSC405, CMSC412, CMIS320, CMIS330, and CMIS435 as part of my major in the past.

What programming languages I have used are as follows.

What operating systems I use are as follows.

My vitals related to software engineering are as follows.

In addition, I have practical experience in proposing solutions for customers' business issues and analyzing system requirements for them in Japan, I am not exactly sure about business customs and IT trends in the U.S. though.

Week 1 Discussion

For this week's conference, respond to the following:

I would suggest you consider the following reference - I have attached a copy just in case the reference moves:

http://www.learningace.com/doc/2598322/1a75062f2077bdf9de0b36cd393068cc/ieee1058

I chose the article Why Software Fails (Charette, R. N., 2005). This article is a little bit old, but even now I often hear that unfunctional and buggy business software costs too much.

In my opinion, because there is no bug-free software, I suggest that you build of a management system that allows to detect and fix software bugs early. The same applies to hardware as well. You need to architect systems based on the idea of design for failure.

In addition, you should try not to write code as much as possible, and make the very minimum of software. In other words, you actively use exist and mature software modules or components including open-source software and Web APIs.

Reference

Charette, R. N. (2005). Why Software Fails. IEEE Spectrum, Retrieved on January 9, 2016 from http://spectrum.ieee.org/computing/software/why-software-fails

Week 1 Form Groups

Here is where you discuss with each other topics you are interested in, and what role you would like to play in a project with the goal of forming at least tentative groups by the end of the week.

By the end of this week, you should have pretty well decided on the project topic for your group, posted it here, and gotten my agreement.

Hi class,

I would like to play a role as an AWS (Amazon Web Services) architect.

As I posted to the introduction thread, I have some experience in programming through UMUC coursework, but I actually have a little practical experience in programming, so that I am not so good at programming. Especially my weakness is front-end design and programming. Also, because English is my second language, playing a leading role seems to be difficult for me.

Instead, I can contribute for architecting and building back-end systems by using AWS because I have more than 2 years of working experience as an AWS certified solutions architect. I have certain knowledge about basic AWS services such as Amazon VPC, Amazon EC2, Amazon RDS, Amazon S3, Elastic Load Balancing, and Amazon CloudFront.

Although I don't have any exact ideas for the software project, I am interested in Infrastructure as Code such as configuration management by using Ansible, managing Amazon Machine Images (AMIs) by using Packer, provisioning AWS components (services) by using AWS CloudFormation or Terraform. I am also interested in serverless architectures on AWS such as using AWS Lambda (Node.js, Python, or Java), API Gateway, Amazon Cognito, Amazon DynamoDB, etc..

If someone is interested in building systems on AWS, I can prepare AWS accounts for each team member.

Week 2 Discussion

For this week's conference, respond to the following:

I chose the article Requirements Engineering Tools (Carrillo de Gea, J. M., et al., 2011) which I found through the Library.

The authors surveyed requirements engineering (RE) tools in the world and evaluated 37 tools.

The evaluation is based on ISO/IEC TR 24766:2009: Systems and software engineering - System life cycle processes. The tools are assessed on the basis of elicitation, analysis, specification, modeling, verification and validation, management, traceability, other tool capabilities, global, and price range (single seat).

In my opinion, no matter what great IT tools we use, we are not necessarily maximize our performance essentially; however, adequate IT tools accelerates iteration speed and promotes collaboration.

I strongly agree with the author's opinion that selecting a RE tool is a key factor for such as distributed development teams and agile teams.

For distributed development teams, IT tools help them real-time communication and prevent miscommunication. For agile teams, the tools help them be less document-centric and more code-oriented.

Actually, our project team for the capstone project are using Slack for collaboration. We are able to actively discuss the project plan, specifications, and system design, and we also share code snippets to our Slack channel.

References

Carrillo de Gea, J. M., Nicolás, J., Alemán, J. F., Toval, A., Ebert, C., & Vizcaíno, A. (2011). Requirements Engineering Tools. IEEE Software, 28(4), 86-91. doi:10.1109/MS.2011.81

Week 2 Plans and Specifications

This is where you should include an outline of the key milestones for your project and who will achieve them.

Get my comments.

Requirements Specification:

System Specification:

What is this project supposed to do?

This project is designed to allow a hospital to have a single enterprise system that ensures data needs only to be entered one time into the system. This will allow multiple departments to see relevant information, but only certain roles can modify certain fields. Additionally this will improve the efficiency of the hospital and reduce the number of errors.

System Specification

Case Scenarios:

  1. Once going to the web interface for the system, the user will be prompted for a username a password.
  2. Based on the role of the user administration forms, doctor forms, medical records forms will be displayed.
  3. For administration forms the appropriate hospital employees can modify general information about patients, and staff members.
  4. For doctor forms the doctor and the doctor’s team members are able to modify medical information.
  5. For medical records the patient is able to review all general and medical information, but they will not be able to modify it.
  6. Once the forms have been modified or reviewed the user clicks a save button which then sends all the inputted data to the database.
  7. The database then timestamps the entry and saves the data in the appropriate fields.
  8. Once all modification and reviews are done the user then clicks a log out button which securely logs the user off.

Milestones:

Yuji Shimojo – Database lead, Backend development lead, Program reviewer

As database lead Yuji will design and implement the creation of tables and fields that hold all our patients data. Yuji will also verify that the data being sent to the database is correct, and ensure that the database is properly secured from traditional manipulation techniques. As the backend development lead Yuji will implement servlets with database connections. Additionally, Yuji will help review and make suggestions for other aspects of the project.

Cara Howie – Website design lead, Program reviewer

As the website design lead Cara will design, implement the front end interface that all the users will interact with. Cara will also ensure that the code has been designed to work efficiently, and that the code has been designed to prevent common manipulation techniques. Additionally, Cara will help review and make suggestions for other aspects of the projects.

Thomas Vera – Project lead, Technical writer

As project lead Thomas will ensure to keep up to date on group progress and any issues that will arises. Thomas will also provide any help in any area like designing test data and make suggestions for improvement. Additionally, Thomas will write all documentation for user guides, and manuals that will help troubleshoot any issues.

Week 3 Discussion

For this week's conference, respond to the following:

Since I couldn't find an article relevant to "technical document," I searched a article in the UMUC library and chose Documenting Code: A Necessary Evil, or Just Plain Wrong? I'm a firm believer in comments—How about you? written by Otey, M. (2014).

This ariticle mentions how important documenting code is.

In my opinion, when you document code, it is very important that you define who readers at first. Even if you write instructions and procedures on how to do something in detail, if your comments have an entirely different expectation for your readers, it makes no sense. Additionally, it is important to write not only what the code do but why the code do so and also prior conditions if needed.

Nowadays, software documents are actually not only in MS Word or PDF formats but can be scripts themselves. For example, server configuration management tools such as Ansible and cloud provisioning tools such as AWS CloudFormation and Terraform can be the alternatives for build procedure manuals themselves. Also, most of modern ER diagram tools can generate DDL (Data Definition Language) statements. Furthermore, Swagger, which is a RESTful API framework, be specifications, codes, and documents in html for RESTful APIs. That allows us to minimize maintenance cost of software documents.

Reference

Week 3 User's Guide and Test Plan

Week 4 Discussion

For this week's conference, respond to the following:

I chose the article Alan Turing and Bletchley Park (Severance, C., 2012).

This article is written about Alan Turing who is known as the father of modern computer science and mainly focuses on a highly developed mechanical computing device he designed at Bletchley Park, UK during World War II This cipher device was called the BOMBE and built to decrypt original German messages encrypted by the Enigma which was used by the German navy.

In addition to developing the BOMBE, Turing accomplished many of great achievements such as the Turing test, Turing machine, and Turing completeness; however, what he was not admired during his lifetime maybe because of his personality and absolute secrecy of the BOMBE project is indeed regrettable.

Interestingly, when I used to study at University of the Ryukyus, I learned that the ENIAC was the first general-purpose electronic computer through a computer history class at the college. I strongly remember that I was very excited when I had an opportunity to see actual panels of ENIAC at the Computer History Museum in Mountain View, CA in 2008. However, in doing searches for Alan Turing and early digital computers, I came to a conclusion that this is not necessarily true from a different point of view.

For example, Zuse Z3 which is an electronic computer developed in Germany, Colossus which is a subsequent decryption machine of the BOMBE, and the Atanasoff-Berry Computer (ABC) which is an electronic computer developed at Iowa State University, were built before the ENIAC started running.

Of course, they are not stored programs and may not be the von Neumann architecture, also Colossus is not general-purpose; however, since Z3 and ABC actually use binary numbers internally, they absolutely form the foundation of current computers.

Reference

Week 4 Design

Design?

Classes, methods, fields, interfaces? Data structures, data file structures, input formats, output formats?

Overall approach.

Any relevant performance estimates would be appropriate here also.

This would be a good time to finalize test cases!

Week 5 Discussion

For this week's conference, respond to the following:

Since one of the most familiar open-source projects I come up with first is Linux, I chose the report Introduction to Linux by Stefanos Laskaridis.

I actually often use Linux for business. In addition, for the capstone project, we are using CentOS 6.6 with Vagrant as a local runtime environment and Amazon Linux which is based on RHEL 6 as a remote host runtime environment.

This report covers about Linux in full detail which contains information on history, licensing, distributions, install process, components and basic architecture, basic commands and bash shell, package managers, and programming under Linux.

What I didn't know in the report is the term POSIX which is standarized by the IEEE. POSIX defines the API, along the command line shells and utility interfaces, for Unix-like operating systems. Interestingly, Windows NT kernel is also compliant with it.

In my opinion, one of the biggest reasons that Linux became popular is providing useful package managers such as Yum, RPM, Apt, Dpkg, and so on. This makes us easier to set up a runtime environment. Nowadays similarly, there are many package management systems such as pip for Python, gem for Ruby, and brew for Mac OS.

Reference

Week 5 Phase I

The actual software, first of 4 phases. Start with "hello world", and at the end of each week, you should have something compiling and working.

This report should include the original milestone for this week, whether or not you are on schedule, any special problems that were encountered, and a reevaluation of the all the decisions made so far - from the very beginning.

Also, any changes to any of the previous documents should be noted.

Week 6 Discussion

For this week's conference, respond to the following:

I chose the article Data Security and Privacy in Cloud Computing written by Sun et al.

This article provides definition and introduction of cloud computing, and then introduce its data security risks and approaches of some studies for the risks.

In the article, data security is divided into four sections: data integrity, data confidentiality, data availability, and data privacy and explained.

For example, to ensure data integrity, approaches using RDBMS which provides ACID properties and error correction code for remote applications are explained.

To enhance data confidentiality, some encryption algorithms are discussed. What I am interested in the most is Shamir's secret algorithm that divides data into chunks instead of encryption as an option cloud be store data in multiple cloud data storage.

To improve data availability, an approach of geographic data replication in Amazon cloud, which our project team is using, is mentioned.

I strongly agree with the idea that we see data security in multiple perspectives: data integrity, data confidentiality, and data availability. Even though we are likely to focus on data confidentiality when we think about data security, balanced approaches to data security are important. We also need to understand that sometimes we might choose to trade off data availability against data confidentiality.

Reference

Week 6 Phase II

The actual software, second of 4 phases. Start with "hello world", and at the end of each week, you should have something compiling and working.

This report should include the original milestone for this week, whether or not you are on schedule, any special problems that were encountered, and a reevaluation of the all the decisions made so far - from the very beginning.

Also, any changes to any of the previous documents should be noted.

Week 7 Discussion

For this week's conference, respond to the following:

I chose the article Will abandoning DRM have a boomerang effect on Apple? - An empirical analysis of lock-in and network effects (Dörr, J., et al., 2009).

The article shows the research study on lock-in and network effects by Apple's iTunes ecosystem and Apple's as-is and to-be DRM strategies. The article finally suggests Apple's intention at that time to fully getting rid of DRM protected music downloads may bring loss of its market share by a negative boomerang effect.

Interestingly, the article insists that the abandoning of DRM has no effects on lock-in effects neither with existing clients nor with new clients, but claims the effects are rather exerted by iTunes Software and its mobile music player iPod. Because the article was written in 2009, we can put iPod into iPhone now.

Without doubt, Apple's iTunes Store and its ecosystem is the most successful case by using DRM. The company uses the DRM technology FairPlay as protection for their music files sold online via their iTunes Store. This DRM is very user-friendly but surely protects the rights of music labels. In my opinion, this business model is the result of learning from Napster's success and fail.

Apple actually announced iTunes Plus that provides DRM free music in 2009; however, the company still seems to stick to the as-is business model based on DRM as the article suggests.

With the new trends of music streaming services such as Spotify becoming more common, I would like to be looking at how Apple is improving the user value while protecting the digital rights.

Reference

Week 7 Phase III

The actual software, third of 4 phases. Start with "hello world", and at the end of each week, you should have something compiling and working.

This report should include the original milestone for this week, whether or not you are on schedule, any special problems that were encountered, and a reevaluation of the all the decisions made so far - from the very beginning.

Also, any changes to any of the previous documents should be noted.

Week 8 Lessons Learned

What topics in this course did you find the most interesting and possibly applicable to the work you envision in the future? Explain how you would use what you learned?

Week 8 Final Report

Your final report should contain at least the following sections (as specified in the Syllabus):

  1. Overview - including summary of individual constributions
  2. Project Plan
  3. Requirements Specification
  4. System Specification
  5. User's Guide
  6. Test Plan and Results
  7. Design and Alternate designs
  8. Development History
  9. Conclusions including lessons learned, design strengths, limitations and suggestions for future improvement

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS