Thursday, March 1, 2012

Tea time talk on Software developments

Software Development Style


Software development lifecycle is unpredict to define. Industry operates in its own way to develop the softwares and its release management cycle.

Factors are identified in certain extent and style of approaching the complex problems and arriving at smaller problem.

Considering other risk involved in factors like resources, cost, time, quality and scope. Delivery become success or delayed success.


In the product industries, development milestone defining for years will help to move in the directions.
However, acquisitions, Intellectual Properties, and competitor are factors will impact the lifecyle and change the directions.

For instance, competitor attracting our customer with various usability features, and performance. If we move towards fixed direction, we will deliver the product.
However, no customer will be there to consume(Now or Never). Hence, plan B should be executed to reach. If we do this, we won't deliver any new product, like riding old car having a mechanic.
This is when, management skill applied to balance existing customer and adhere to industry directions.

Development model, approach, methodology, and processs varies based on the nature of the software and its market. World is always define the rules to break in future.

Few of the important development styles


  • Waterfall model
  • Customer Driven Development
  • Bug Driven Development
  • Test Driven Development
  • Feature Driven Development
  • Spiral model
  • Behavior Driven Development
  • Domain-driven design
  • Service-oriented modeling
  • Agile software development

Monday, February 20, 2012

HTML 5.0


Very welcoming initiatives are happening in HTML side, we cannot say any more, this is so simple to display static pages.

It avoids complications in showing calendar, audio, video and etc., In addition to this minimize external tool like Flash usage.
Developer can avoid some of the javascripts get used to manipulate the data in this release using Tag itself.
Some of the tags introduced in old days are removed


HTML5 improves interoperability and reduces development costs by making precise rules on how to handle all HTML elements, and how to recover from errors.


Some of the new features in HTML5 are functions for embedding audio, video, graphics, client-side data storage, and interactive documents. HTML5 also contains new elements like <nav>, <header>, <footer>, and <figure>.

What is HTML5?

HTML5 will be the new standard for HTML.

The previous version of HTML, HTML 4.01, came in 1999. The web has changed a lot since then.

HTML5 is still a work in progress. However, the major browsers(Internet Explorer 9, Firefox, Chrome, Safari 5, and etc) support many of the new HTML5 elements and APIs.


Some rules for HTML5 were established:

  • New features should be based on HTML, CSS, DOM, and JavaScript
  • Reduce the need for external plugins (like Flash)
  • Better error handling
  • More markup to replace scripting
  • HTML5 should be device independent
  • The development process should be visible to the public

References

HTML5.0 on w3schools.com | HTML5 Tags

Tuesday, July 26, 2011

Top TEN Tips for code reusability, maintainability, and flexibility

Top TEN Tips for code reusability, maintainability, and flexibility

Writing a product is not an overnight job. It is the practice of implementing combination of the identified requirements in field and interest of field in future. Successfull product needs several processes, which are enforced from the one liner requirement to the completion of the product. The process are evolved and fine-tuned to improvise the quality and user experience. Product developers has to focus on the best practices in coding which avoid surprises in customer environment.

Development time – An individual has to love, to write more code. Optimization (Code coverage) time - An individual has to hate the code written already.

Reusability, Maintainability, and Flexibility are the major key factors to keep the product stable and long-lived.

  1. If happened to type same set of lines again , please move them to new method.

  2. If same set of lines exist already in a method, wanted to reuse it, please move that piece of code to new method. And , existing piece of lines has to be removed and new method has to be get called.

  3. If found new method may be used by other classes, and found as utility API, then it has to be moved to necessary class with 'public static' access.

  4. If Double quoted string needs to be used in the code and found it may be required to capture in other classes too, then create a class field(constant)with 'public static final' access. Where field name keeping in UPPERCASE would be good.

  5. Writing method with approx 1000 lines with hundreds of local variable , will perform slower than splitting into 10 to 15 methods with hundreds of local variable. In addition, it helps to improve the code readability and reusability. Methods needs to be very precise to do particular task as per name of the method. For instance, method name is purge(), then collecting or filtering purgeable data logic has to be placed in other methods. In this method, only purge logic such as API calls to purge or transaction API calls can be written.

  6. JUNIT testcases has to be added to test negative usecase where incorrect values for the argument get passed, and positive test has to be done by passing possible values. This helps to cover and confirm , possible values for the arguments. And, regression bugs will be avoided more than 99 percentage.

  7. In J2EE application, maintaining the actual business implementation away from the EJB methods would be good. EJB methods has to act like deligate method and calls the method which has actual implementation in other class. This business implementation may be reused in WS, JMS and/or other J2EE technology.

  8. In an application, a JAVA Class has to be introduced to keep only rt.jar based utilities ( public APIs). These APIs can be used by application , or developer for testing dirctly without associating any other jars from the dependency components.

  9. Utility methods needs to have JAVA Doc comments with @author . Whenever the method gets modified by other developer, it is easy to cross check with the developer.

  10. Dependency component's jar/classes has to be accessed through a single class(Wrapper around the component). If depedency component usage is more then a package can be introduced to deal with that component.

Recent Posts

Unix Commands | List all My Posts

Texts

This blog intended to share the knowledge and contribute to JAVA Community such a way that by providing samples and pointing right documents/webpages. We try to give our knowledege level best and no guarantee can be claimed on truth. Copyright and Terms of Policy refer blogspot.com