Posts

Agile and Scrum Methodology - Product and Sprint backlog

Image
In this post, we are going to see what is a Product backlog and what is a Sprint backlog and the differences between the two. Product backlog: The product backlog is an ordered list of everything that might be needed in the product and is the single source of requirements for any changes to be made to the product. A product backlog contains a list of product backlog items. The items could be in the form of: Story - short description of what the user wants from the product (eg., As a online retailer I need a catolog of products to be displayed). Bug Epic - represents bigger user stories The items which are of high priority will be at the top of the backlog. The product backlog is maintained and managed by the product owner.  Progressive Refinement: It is a process wherein items at the top of the backlog will have more details into it than the ones at the bottom of the backlog. With time, and as and when the the backlog items at the top a...

Agile and Scrum Methodology - Roles and Responsibilites

In this post, we will talk about the various roles and responsibilities associated with Scrum. In scrum, generally there are 3 distinguished roles as follows: Product Owner Scrum master The Team 1. Product Owner The role of a Product Owner is very crucial in the making the product a success in the market, as it deals with the "What" and the "Why" of the product. Is one who has a product vision on how the product should look like, what should be its features etc. Unsurprisingly, the product owner should have very good domain expertise. Communicates with various stakeholders like sponsor, client, end users and gathers requirements. Also responsible for end user satisfaction, has overall commitment to product road map. Also responsible for ROI (return on investment) and work out the budget constraints. 2. Scrum master Scrum master is more of a facilitator and a coach who gives valuable advice to the team. The roles include: Make sure every...

Agile and Scrum Methodology - Introduction

In this post (and a a few more to come), I will be writing about Agile methodology and how it works. What is agile? Agile is a methodology, a way of managing projects which is emerged as an alternative to traditional software management (also termed as "Waterfall" model). In Waterfall model, we perform the following: Team gathers requirements Team comes up with design and architecture  Team implements (coding) Release it to market Now, lets say it is a huge project and took around 6 months to complete. At the end of six months, when the product is released, the team realizes that this is not what the customer wanted or the market conditions have changed and the customer wants lot of modifications to the product.  There is only one shippable deliverable in this process and that was produced at the end of 3rd step, which took months together. Clearly, there is a problem with this process. Why Agile? Agile as the name suggests is a process which allows th...

Security Questions and password security in Web Applications

Security questions: Today almost every web application uses security questions to identify the user, especially when the user forgets password.  However these security questions pose a major security risk, if they are not properly thought of. Most of the times we come across simple questions like 'In which city you were born' ,'What is your favorite movie' etc.  Nowadays there is so much information on social networking sites, that a little research will give us all the information needed. Information on favorite movie/actress etc, can be mined by following the 'likes' the user has clicked. The questions have to be smart enough to avoid questions on events which occurred in the person's life, and also avoid questions on person's taste and likes.  Rather, the questions should evoke answers (sometimes strange) which cannot be guessed. How about these  questions :  'Name a city which you never visited', (definitely this will have a lar...

Hibernate Tutorial - Part V

For previous posts, refer: Hibernate tutorial Part - I Hibernate tutorial Part - II Hibernate tutorial Part - III Hibernate tutorial Part - IV In this post, we are going to take a look at ' Table per subclass' approach for inheritance. Table per subclass: This strategy, represents inheritance relationships as relational foreign key associations.Every class/subclass that declares persistent properties, including abstract classes and even interfaces has its own table. Unlike the table per concrete class strategy, the table here contains columns only for each non inherited property (each property declared by the subclass itself) along with a primary key that is also a foreign key of the super class table. Lets take a look at the class definitions and annotations: User Class: @Entity @Table(name = "USER") @Inheritance(strategy=InheritanceType.JOINED) public class User implements Serializable{ @Id @Column(name = "USER_ID...

Hibernate Tutorial - Part IV

For previous posts refer: Hibernate tutorial Part - I Hibernate tutorial Part - II Hibernate tutorial Part - III In this post, we will take a look at 'Table per class hierarchy' strategy of inheritance. Table Per Class hierarchy: In this approach, an entire class hierarchy can be mapped to a single table. This table includes columns  for all properties of all classes in the hierarchy. The concrete subclass represented by a particular row is identified by the value of a type discriminator  column. Lets take a look at the classes and their annotations: User Class: @Entity @Table(name = "USER") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn( name="USER_TYPE", discriminatorType=DiscriminatorType.STRING ) @DiscriminatorValue(value="U") public class User implements Serializable{ @Id @Column(name = "USER_ID") private String userId; @Column(name = "USERNAME...

Hibernate Tutorial - Part III

For previous parts refer: Hibernate tutorial Part - I Hibernate tutorial Part - II Inheritance Mapping: In this post, I'm going to write about Inheritance mapping in Hibernate. Essentially, there are 3 different types of inheritance mapping which could be achieved: Table per concrete class  Table per class hierarchy Table per subclass 1. Table per concrete class In this type of mapping, we will have a table mapped to every concrete class in the hierarchy. Lets say we have the following class hierarchy for representing different users of the system. Abstract class, User Concrete subclass, Customer Concrete subclass, InternalUser Lets take a look at the class definitions and the the annotations for each of these classes. User Class: @Entity @Table(name = "USER") @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class User implements Serializable{ @Id @Column(name = "USER_ID") private String u...