Wednesday, May 14, 2014

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 4

8. Self

8.01. Further their knowledge of developments in the analysis, specification, design, development, maintenance and testing of software and related documents, together with the management of the development process.


This project consists with lot of new technologies. There for we had to learn lot of them by our selves. We had the basic programming skills, Testing, analyzing skills and specification designing skills which we obtained from the university. Having them, it was little bit easy to follow up with the technologies such as AngularJS, ASP.net MVC etc.

We used tutorial videos in Youtube, Microsoft Virtual Academy, Pluralsight sites. Also we red lot of written tutorials to increase our knowledge.

Other than Video tutorials and written materials, our external supervisor 99X Technology provided us training sessions on various technologies such as Single Page Applications, Git version controlling, ASP.net MVC.

Our internal Supervisor Mr. Viraj Brian Wijesuriya was a key person who showed us many methodologies to obtain the required knowledge in maintenance and management as well as the development process.

8.03. Improve their ability to produce accurate, informative, and well-written documentation.


Documentation is a crucial component of every project. When it comes to group development it is very much needed. So it was compulsory for everyone to document on each and every module that they develop for the project. Initially it was little bit of a difficult task, but when it comes to do modifications, documentation really helped. Also continuous documenting help to improve each members ability of writing accurate and informative documentation.

 8.05. Improve their knowledge of relevant standards and the law governing the software and related documents on which they work.


It was a requirement that we follow standards on our code in order to make it a clean and efficient code. We had to focus on modular development. To gain the knowledge on standards we followed following.

ASP Conventions (http://msdn.microsoft.com/en-us/library/ms972100.aspx)
Code conventions for the JavaScript programming language (http://javascript.crockford.com/code.html)
Scalable code organization in AngularJS (https://medium.com/opinionated-angularjs/9f01b594bf06)

After following those articles, our knowledge on standards were much more solid than it was before. Even though it was bit difficult to adapt to standardize code writing, after few days it was easy for us as it increased the readability as well as maintainability.


Other articles of the series

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 1

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 2

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 3 




Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 3

7. Colleagues


7.02. Assist colleagues in professional development.

 Professional development of members are much required. We made this project an opportunity to develop everyone's professional skills. Few group members were lacking of communication skills in English. So everyone decided to continue all the project discussions in English and it was a success.

  In weekly iterations we have to present what we have done in each week to supervisors at 99X Technology. Instead of same person presenting the project work, we are circulating the presentation so that each one will have equal opportunity to increase their skills.

7.03. Credit fully the work of others and refrain from taking undue credit.

 Since our project is managed using trello, any one can see who did what and when. So far non has claimed credits for work which is not done by him. Also when we develop the product we had to use 3rd party libraries. When documenting we have mentioned all the 3rd party libraries used for our project and has given them the credit for their work.

For example :

We have used Ace Editor (ace.c9.io)
Octokit written by Phils Chatz (https://github.com/philschatz/octokit.js)
Bootstrap (http://getbootstrap.com/)

7.05. Give a fair hearing to the opinions, concerns, or complaints of a colleague.

 As the development grows, different opinions occurs. Each time we have different opinions we try to get together and ask everyone to express their thoughts on the matter. After everyone is done we as a team come to a decision on what to do and what not to. That really helped during the development as it helped to prevent conflicts among team members.

When anyone has a problem he has rights to give good reasons and make reasonable excuses for his work. But he has to catch up with the team soon.



Other articles of the series

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 1

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 2 

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 4

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 2

Principal 5 : Management

 

5.01 Ensure good management for any project on which they work, including effective procedures for promotion of quality and reduction of risk.

Currently Agile based methodologies are considered as the best methodologies to manage the processes of a software development projects. After having a discussion with our supervisors from "99X Technology" we decided to follow SCRUM based agile methodology through out the project.

Since the development team is in the university and external supervisors are in the 99X Technology premises we had to use an online Project management tool so that everyone could monitor our progress.

After comparing few online agile based management tools like Moovia, Trello etc, we decided to use Trello (http://trello.com) because it was a easy to use yet so powerful project management tool.
Figure 5.01.1 will show you the trello desk of our project.

Figure 5.01.1
 To manage as well as to version management of the project we used Github (www.github.com). Figure 5.01.2 will show you the Github page of the project.

Figure 5.01.1

5.04. Assign work only after taking into account appropriate contributions of education and experience tempered with a desire to further that education and experience.

 Initially we didn't had much of a knowledge on the required technologies like AngularJS and ASP.net MVC framework. But we continued to follow online tutorials as well as we were given opportunity to have training sessions from 99X Technology on various technologies required for the project. After that we were confident about the knowledge we had. Each iteration we were given a task which is totally new to us but with required learning materiel. So we divide tasks among our selves after considering about the difficulty of each task. Out of the all team members, who is most knowledgeable on a particular area will assign himself the most difficult task of the week.  

5.11. Not ask a software engineer to do anything inconsistent with this Code.

 It was very helpful to have a industrial supervisor for the project. Our code were required to be consistent as well as organized. Also it was a main requirement that the code should follow development standards. Therefor in each iteration we had code reviews and also we were informed to submit our code to project leader and get reviewed.


Other articles of the series

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 1

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 3 

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 4

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 1

Throughout the world, software development is done using various methodologies. It varies from very ad-hoc manner to very structured and well planned methodologies like agile. No matter what is the development methodology there are ethics to be followed. Those are named as Software Engineering Code of Ethics and Professional Practice.

Anyone can read more about it using the link given below.

http://www.computer.org/portal/web/certification/resources/code_of_ethics
Copyright © 1999 by the Institute for Electrical and Electronics Engineers, Inc. and the Association for Computing Machinery, Inc..


In this series of study, I will describe how we applied those ethics and practices to our project using few key points of code of ethics.

Project Details

Project Name : XApps
Project client/supervisor : 99X Technology
Project type : Software Implementation
Description : XApps is an enterprise app portal. Purpose of this app is to remove the gap between app developer and app stores. Therefor this app contains an Online IDE as well as an app store in the same solution. Developers can use this app to create web apps easily and then publish to the app store without extra effort.

This project is a Open Source project so developers around the world could contribute to the project as well.

Project source can be found in the below link.

www.github.com/rehrumesh/xapps

I will be describing the following topics on my study.

5.Management
7. Colleagues
8. Self.

Please read the next posts using following links
Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 2

Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 3 

 
Software Engineering Code of Ethics and Professional Practice - Analysis Using a real world use case Part 4


Monday, May 12, 2014

Single Page Applications with AngularJS

I have shared my slide set which I created for the TechTalk session organized by the CompSoc UCSC.

In this session I am hoping to talk about basics of Angular and how we can build a Single Page Applications using Angular.

Slides :



Source files can be found in
https://github.com/rehrumesh/spa-with-angularjs

Friday, May 2, 2014

How to Fix Mouse pointer flicking and disappearing issue in Ubuntu 14.04

Sometimes you may have noticed that in Ubuntu 14.04 mouse pointer starts to flick a lot and continuously disappearing and reappear.

You can fix this issue by doing following

Go to System Settings
Select Displays
You will see unknown display. Select it and disable it.

Now the issue should be solved.

Source
http://askubuntu.com/questions/360423/mouse-cursor-flickering-and-disappearing