Week 1 Introductions

  • Question

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.

  • Answer

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.

  • Beginner: Ruby, PHP, Python, Visual Basic, Shell, C, C++, C#
  • Competent: Java, JavaScript, SQL (MySQL, PostgreSQL)

What operating systems I use are as follows.

  • Client OS: OS X 10.11 El Capitan
  • Server OS: Linux (CentOS)
  • Local Virtual Environment: Vagrant and VirtualBox

My vitals related to software engineering are as follows.

  • Skills: Cloud computing (especially using AWS), business development, requirements analysis, system architecture, database design, programming, system operational design Weaknesses: Front-end design and programming such as user interface design, English (second language)
  • IDEs: Eclipse, Xcode (on MacOS X 10.11)
  • Modeling tools: astah* community, ERMaster
  • Version control systems: Subversion, Git
  • Issue tracking: Redmine, Wiki (PukiWiki), Backlog
  • Communication tools: Slack, Google Hangouts, Skype
  • Private file sharing: Dorpbox, Box.net, Google Drive
  • Documentation: Microsoft Office 2016 for Mac, Google Docs, Google Spreadsheets, iWork
  • CMS: WordPress

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

  • Question

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

  • Find an article in an IEEE or ACM journal about project management, read and summarize it, and give us your reactions to the article. Be sure to include a good citation to the article.
  • What do you propose to do in case one or more members of your group make no significant contributions to your project. Note that reasonable ideas may be used in determining project grades!
  • Describe some problems that might arise in a group project and suggest one or more strategies for dealing with those problems.
  • You are welcome to comment (nicely!) on the postings of other students.

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

  • Answer

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

  • Question

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.

  • Answer

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

  • Question

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

  • Answer

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

  • Question

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:

  • What is this project supposed to do?
  • Be specific.
  • The specification should include scenarios (HINT, HINT)!

System Specification:

  • Hardware and software base for your project.
  • A PC with JDK 6.0 is reasonable, but you might add more details, or make other selections, as appropriate.
  • Answer

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

  • 2.5GHz processor
  • 1 GB of Ram
  • JDK version 8.0
  • Internet Connectivity
  • JSP/HTML/CSS/JavaScript as frontend
  • Servlet as backend
  • MySQL version 5.7

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:

  • Design what the system is suppose to do and how different pieces fit together
  • Create database tables and fields
  • Create different front end modules and review front end code
  • Verify modules are translating data from front end modules to back end database
  • Test Wrong input values and verify the error correction is working
  • Put all modules together and test entire program functionality
  • Team Member Roles & Responsibilities:

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 2 Project Plan

Week 3 Discussion

  • Question

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

  • Find an article in an IEEE or ACM journal about technical documentation. Read and summarize the article, and give us your reactions to the article. Be sure to include a good citation to the article.
  • You are welcome to comment (nicely!) on the postings of other students.
  • Answer

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
  • Otey, M. (2014). Documenting Code: A Necessary Evil, or Just Plain Wrong? I'm a firm believer in comments—How about you?. SQL Server Pro, 16(4), 5-7.

Week 3 User's Guide and Test Plan

  • Question
  • A detailed Test Plan + User's Guide.
  • Before the design!
  • Be exact about inputs and expected outputs.
  • This is the time to create test data files, if appropriate.
  • Feedback to the requirements documents - now is the time to make those clearer and writing a User's Guide as part of the test plan will help, also.
  • Answer

Week 3 Test Plan

Week 4 Discussion

  • Question

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

  • Find an article in an IEEE or ACM journal about the history of computing. Read and summarize the article, and give us your reactions to the article. Be sure to include a good citation to the article.
  • You are welcome to comment (nicely!) on the postings of other students.
  • Answer

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

  • Question

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!

  • Answer

Week 4 Project Design

Week 5 Discussion

  • Question

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

  • Find an article in an IEEE or ACM journal about open source software, or division of labor. Read and summarize the article, and give us your reactions to the article. Be sure to include a good citation to the article.
  • You are welcome to comment (nicely!) on the postings of other students.
  • Answer

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

  • Question

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.

  • Answer

Week 6 Discussion

  • Question

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

  • Find an article in an IEEE or ACM journal about security. Read and summarize the article, and give us your reactions to the article. Be sure to include a good citation to the article.
  • You are welcome to comment (nicely!) on the postings of other students.
  • Answer

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

  • Question

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.

  • Answer

Week 7 Discussion

  • Question

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

  • Describe an ethical conundrum found in a magazine or newspaper article, and your own thoughts.
    • Give good citations, of course.
  • You are welcome to comment on the postings of other students.
  • Answer

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

  • Question

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.

  • Answer

Week 8 Lessons Learned

  • Question

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?

  • Answer

The topic I was interested the most through the course is open source software.

Actually, our team has been actively using GitHub to share source code in real time. Through working our project, I found a lot of open source projects on GitHub. This is why I became more interested in open source software.

Open source software is not monolithic but is composed of many components.

For example, thinking about Linux, several distributions as primitive runtime for applications, commands and bash shell for operations, package managers for installation and management, and etc. have been developing since Linus Torvalds started developing its kernel as a university project in 1991.

Also, most of middleware such as Apache HTTP Server and Tomcat, database management systems such as MySQL and PostgreSQL, and programming languages such as Java, PHP, Ruby, Python has also been developing as OSS projects.

In an OSS project, any one can participate in modifying and improving OSS software itself; moreover. you can fork the project and start as another project.

Furthermore, nowadays, most of OSS projects are sharing their source code and tracking issues on GitHub repositories. Even though GitHub is a commercial company, Git itself is OSS developed by Linus Torvalds as well.

The biggest difference between proprietary software and open source software is largeness of ecosystems. As a number of OSS exist around Linux including I mentioned above, OSS projects mutually influence one another.

Of course there is a lot of proprietary software developed by such as Microsoft and Apple as well; however, Windows 10 now provides Bash shell and Linux environment as a subsystem and Swift became open source. Nowadays, OSS is necessary for advancement of all the software.

Since I became more interested in OSS through this CMSC class, I would like to participate in some OSS communities and to try pull requests to upstream OSS projects when there is an opportunity.

Week 8 Peer review 3

Week 8 Final Report

  • Question
  • Post your final project and report here to let the rest of the class appreciate what you have done.
  • Also post your peer review of another project as a reply to the report posting here
  • And this would be a good place to have conversations about the final projects
  • As usual, be nice, and try to be constructive.
  • As usual, you also need to post the work for grading using "Submit Assignments".

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
  • Answer

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-03-18 (土) 16:06:58 (556d)