Thursday 13 September 2012

Software Estimations : Introduction

You may be a good software developer but that doesn't qualify you to be a good estimator.
Software estimations are a totally different part and parcel and they don't have a much link with your development skill.
Estimation is a skill and you need to hone it to be a practioner.

But what's the need to learn software estimations?
The only reason I would say is a failed estimations lead to a failed project. If you want your project to succeed, get good estimators to work.

In these series of articles we will learn:
   Software Estimations : What it is?
   Software Estimations : Whats the need?
   Software Estimations :  Estimates Vs Planning
   Software Estimations :  Communication
   Software Estimations : Factors Influencing them
   Software Estimations : Good vs Bad
   Software Estimations : Creating a good estimate
   Software Estimations : Tips and Tricks
   Software Estimations :  Techniques
   Software Estimations :  Approach based on development methodology
   Software Estimations :  Estimating Schedule , Cost and Work
   Software Estimations :  Estimating Scope
   Software Estimations :  Estimating the phases
   Software Estimations :  Planning and Trade Offs
   Software Estimations :  Quality
 
   Lets begin our journey into software estimations.




Thought of the day : Day 4



Opportunities come always with challenges , issues and crises embedded and coupled tightly within it.
If you cannot take up a new challenge you cannot get the opportunity.
If you have never faced a crisis in life , you have not learnt life.
So , be brave face them and go ahead with opportunities.

Thought of the day : Day 3




"How does it matter whether a cat is black or white as long as it catches mice."
--Chinese Proverb

Monday 10 September 2012

Database : Understanding Database


  1. Database à Tables à Rows & Columns
  2. Rows à Tuples
  3. Columns àattributes
  4. Tables have Constraints,Indexes,Defaults,Customized User data types
  5. Declarative referential integrity (DRI) constraints can be added to the tables to make sure that interrelated data in different tables remains consistent.
  6. Tables can have indexes similar to those in books that enable rows to be found quickly.
  7. Database can have Tables,Stored Procedures,Triggers,Functions,Views.
  8. For example, you create a database named MyCompanyDB to manage the data in your company. In the MyCompanyDB database, you create a table that is named Employees to store information about each employee. The table also contains columns that are named EmpId, LastName, FirstName, Dept, and Title. To make sure that no two employees share the same EmpId and that the Dept column contains only valid numbers for the departments in your company, you must add constraints to the table.Because you want to quickly find the data for an employee, based on the employee ID or last name, you define indexes. You will have to add a row of data to theEmployees table for each employee, so you have to also create a stored procedure named AddEmployee. This procedure is customized to accept the data values for a new employee and perform the operation of adding the row to the Employees table. You may need a departmental summary of employees. In this case, you define a view called DeptEmps that combines data from the Departments and Employees tables and produces the output. 
  9. An instance of SQL Server can support many databases. Each database can store either interrelated or unrelated data from other databases.
  10. You should not create any user objects, such as tables, views, stored procedures, or triggers, in the master database. The master database contains system-level information used by the instance of SQL Server, such as logon information and configuration option settings.
  11. System Databases: Master database,Msdb database,Model database,Resource database,Tempdb database
  12. Master database:The master database records all the system-level information for a SQL Server system. This includes instance-wide metadata such as logon accounts, endpoints, linked servers, and system configuration settings. Also, master is the database that records the existence of all other databases and the location of those database files and records the initialization information for SQL Server. Therefore, SQL Server cannot start if the master database is unavailable.
  13. Msdb database:The msdb database is used by SQL Server Agent for scheduling alerts and jobs and by other features such as Service Broker and Database Mail.
  14. Model database:The model database is used as the template for all databases created on an instance of SQL Server. Because tempdb is created every time SQL Server is started, the model database must always exist on a SQL Server system.When a CREATE DATABASE statement is issued, the first part of the database is created by copying in the contents of the model database. The rest of the new database is then filled with empty pages.If you modify the model database, all databases created afterward will inherit those changes. For example, you could set permissions or database options, or add objects such as tables, functions, or stored procedures.
  15. Resource database:The Resource database is a read-only database that contains all the system objects that are included with SQL Server 2005. SQL Server system objects, such assys.objects, are physically persisted in the Resource database, but they logically appear in the sys schema of every database. The Resource database does not contain user data or user metadata.The Resource database makes upgrading to a new version of SQL Server an easier and faster procedure. In earlier versions of SQL Server, upgrading required dropping and creating system objects. Because the Resource database file contains all system objects, an upgrade is now accomplished simply by copying the single Resource database file to the local server. Similarly, rolling back system object changes in a service pack only requires overwriting the current version of theResource database with the older version.
  16. Tempdb database:The tempdb system database is a global resource that is available to all users connected to the instance of SQL Server and is used to hold the following:Temporary user objects that are explicitly created, such as: global or local temporary tables, temporary stored procedures, table variables, or cursors.Internal objects that are created by the SQL Server 2005 Database Engine, for example, work tables to store intermediate results for spools or sorting. Row versions that are generated by data modification transactions in a database that uses read-committed using row versioning isolation or snapshot isolation transactions.Row versions that are generated by data modification transactions for features, such as: online index operations, Multiple Active Result Sets (MARS), and AFTER triggers.Operations within tempdb are minimally logged. This enables transactions to be rolled back. tempdb is re-created every time SQL Server is started so that the system always starts with a clean copy of the database. Temporary tables and stored procedures are dropped automatically on disconnect, and no connections are active when the system is shut down. Therefore, there is never anything in tempdb to be saved from one session of SQL Server to another. Backup and restore operations are not allowed on tempdb.
  17. SQL Server does not support users directly updating the information in system objects such as system tables, system stored procedures, and catalog views. Microsoft does not support triggers defined on the system tables, because they might modify the operation of the system.
  18. You should not code Transact-SQL statements that directly query the system tables, unless that is the only way to obtain the information that is required by the application. Instead, applications should obtain catalog and system information by using :System catalog views,SQL-SMO ,Windows Management Instrumentation (WMI) interface ,Catalog functions, methods, attributes, or properties of the data API used in the application, such as ADO, OLE DB, or ODBC. 

19. Every SQL Server 2005 database has a transaction log that records all transactions and the database modifications made by each transaction. The transaction log is a critical component of the database and, if there is a system failure, the transaction log might be required to bring your database back to a consistent state. 
20. The transaction log should never be deleted or moved unless you fully understand the ramifications of doing this.
21. The transaction log supports the following operations:
  • Recovery of individual transactions.
  • Recovery of all incomplete transactions when SQL Server is started.
  • Rolling a restored database, file, filegroup, or page forward to the point of failure. 
  • Supporting transactional replication.
  • Supporting standby-server solutions.
22. The following table defines the database states.



SQL Azure : known issues

Following are the Known Issues , collated from msdn and various other sources:

Management Studio 

Changing Worker Role Alters Database??

SQL Database





Thought of the Day : Thought 1



The Clock of Life

The clock of life is wound but once,
And no man has the power
To tell just when the hands will stop
At late or early hour.

To lose one’s wealth is sad indeed,
To lose one’s health is more,
To lose one’s soul is such a loss
That no man can restore.

The present only is our own,
So live, love, toil with a will,
Place no faith in “Tomorrow,”
For the Clock may then be still.

by Robert H. Smith,
copyright 1932, 1982



Power of infinite

Life is infinite

So are all its possibilities
Nature is infinite
so is knowledge
Joy is infinite

 so is Serenity

We are just a part of infinity...express the infinites in you.


Sunday 9 September 2012

Activities for a year old kid

Activity 1: Collect and Put


Step 1: Collect balls of three different colors(preferably red , blue , yellow) in a bag.( 4 balls each color)

Step 2: Let the child empty the bag.

Step 3 : Introduce the baby to the three colors.

Step 3 : Put three baskets in front of the baby.

Step 4: Tell him to put the particular collect a particular color ball and put it in a basket.

This develops:
a.  hand-eye co-ordination
b. Listening abilities
c. Grasping capabilities
d. Motor skills
e. Color identification

If possible do this activity with a group of children by increasing the number of balls. This will increase competitive spirit in the child.

Activity 2: Bang the drum



Step 1: Get a drum with 2 sticks.

Step 2: Instruct the kid to drum it.

You can add this activity along with activity 1 or you can have this activity individually.

You can enhance the game by taking one stick your self and giving the other stick to the child.

You can also enhance the activity by drumming with 1...5 fingers while counting 1, 2, 3, 4, 5. First with a single hand then with both the hands.

After some time you can start singing a song..or a rhyme.

The drum can be replaced with a infant milk powder container tin , colors with various colors and stick can be replaced by wrapping pencils in colorful papers.

This develops:
a. Sense of music
b. hand-eye coordination
c. Left and Right hand dexterity
d. Harmony when you are playing with the kid
e. Rhymes and Rhythms

Activity 3 : Build and Break


Step 1: Collect lot of empty non-breakable and non-injurious containers from Kitchen. The containers should be of different size.

Step 2: With the kid stack the containers one over the other.

Step 3 : Once you have build the tower together, allow the child to break it. ( Watch the joy.)

Step 4 : Tell the child to gather all the containers/blocks.

Step 5 : Repeat building and breaking.

This develops:
a. Cognitive skills
b.Hand-Eye Coordination
c. Grasping skills
d. Fine motors


India's top boarding schools

What my 15 months old says now



My sweet heart is a all time chatter box. So fond of chatting that in sleep also starts speaking , and now a days he is building his vocabulary ....he has a big collection of words in his book and believe me he picks up everything which he hears...though his words lack a little clarity but the way he uses the mumbbled-crummbled words in correct place and correct sense I am astonished.


Earlier I used to think I have given birth to a genius...after researching I found that most of the kids behave the same way he does. (But still I hold to the fact that my sunny is a genius... :) (mothers will be mothers always....Einhhhhh)

Asu is 15 months , he is able to identify following and also know whats their use.

  1. Book
  2. TV
  3. Fridge
  4. Telephone
  5. Laptop ...he thinks its to be used to hear songs...(WowW)
  6. Bottle
  7. Car
  8. Bicycle
  9. Ball
  10. Glass
  11. Bucket
  12. Tub
  13. Mug
  14. Exhaust fan
  15. Fan
  16. AC (knows how to use it as well)
  17. Remotes ...can differentiate TV remote , AC remote and remote of Set-top box
  18. Light  -He knows fan and lights should be switched off when no one is in room.
  19. Door
  20. Stairs
  21. Shoes
  22. Shoe racks

Asu can identify following fruits and vegetables

  1. Papaya
  2. Banana
  3. Potato
  4. Tomato
  5. Onion
  6. Ginger
  7. Cucumber
  8. Pumpkin...(is afraid of pumpkin)
  9. Carrot
  10. Lady finger
  11. Mango
  12. Apple
  13. Grapes

Asu is able to identify following animals:

  1. Dog
  2. Cat
  3. Cow
  4. Lion
  5. Tiger
  6. Elephant
  7. Kangaroo
  8. Hippopatamus
Following Birds:
  1. Crow
  2. Pigeon
  3. Ostrich
  4. Robin
  5. Tailor-bird
  6. Owl
  7. Parrot
  8. Hen
  9. Sparrow


Words he speaks now (all are not very clear ....he just tries to speak out)

  1.  pp-lLL-e for apple
  2.  Ba-LL for ball
  3. Caaaa for car
  4. Paaaya for Papaya 
  5. nnnNa for Banana 
  6. Papa for father
  7. Maaa for mother
  8. Mam-Ma for mother(when he wants to get curdling 
  9. Aa-da (Odia word for Grandfather)[This is the first word he said]
  10. Aaaa---eeeeeeee(Odia word for grandmother)
  11. BhaiyaDi (Hindi word for brother and sister , these are actually two separate words)
  12. Hamma-for Cow)
  13. Ca-Ca-for Crow)
  14. sQu -for squirrel)
  15. Umbela- for Umbrella
  16. kKuN - for kangaroo

Speak more dear......





Thursday 6 September 2012

FAQs -II - OOPs

What is software architecture?

Software Architecture is defined to be the rules, heuristics and patterns governing.

What are steps to follow when architecting a solution? 

  • Partitioning the problem and the system to be built into discrete pieces
  • Techniques used to create interfaces between these pieces
  • Techniques used to manage overall structure and flow
  • Techniques used to interface the system to its environment
  • Appropriate use of development and delivery approaches, techniques and tools.

Why is Architecture Important?

Architecture is important because it:
  • Controls complexity
  • Enforces best practices
  • Gives consistency and uniformity
  • Increases predictability
  • Enables re-use.

What are various principles to design a class

Five principles that should be followed when designing a class,
  •  SRP - The Single Responsibility Principle - A class should have one, and only one, reason to change.
  • OCP - The Open Closed Principle - You should be able to extend a classes behavior, without modifying it.
  • LSP - The Liskov Substitution Principle- Derived classes must be substitutable for their base classes.
  • DIP - The Dependency Inversion Principle- Depend on abstractions, not on concretions.
  • ISP - The Interface Segregation Principle- Make fine grained interfaces that are client specific.

What is the best way to design a sytem?

In software world the concept of dividing and conquering is always recommended, if you start analyzing a full system at the start, you will find it harder to manage. So the better approach is to identify the module of the system first and then dig deep in to each module separately to seek out classes.

What are four Pillars of OOP?
 

  1. Encapsulation,
  2. Abstraction,
  3. Inheritance, and
  4. Polymorphism


What is Encapsulation?


  • Encapsulation is Information Hiding.
  • You hide the internal implementation and just expose the contract to the outside world.
  • Encapsulation is achieved through Association , Aggregation and Composition.
  • Interfaces are best examples of encapsulation.
 
 

Describe Association, Aggregation and Composition


  • Association - Is A relationship Animal Cat
  • Aggregation - HAS A relationship School Principal
  • Composition - Special type of aggregation.Book and Chapters
  • If you dispose Chapters , book won't exist.
  • Composition is used in Collections. Key -Value pairs.


What is Abstraction?

  •  Simplification of a system can be said to be abstraction.
  • abstraction is derived from its ability to hide irrelevant details and from the use of names to reference objects.
  • It places the emphasis on what an object is or does rather than how it is represented or how it works. Thus, it is the primary means of managing complexity in large programs.
  

What is Polymorphism?

  •  Reducing the complexities of a system.
  • Polymorphsim is generalization.
 
 

What is abstract class?


  • Abstract classes, which declared with the abstract keyword, cannot be instantiated.
  •  It can only be used as a super-class for other classes that extend the abstract class.
  • Abstract class is the concept and implementation gets completed when it is being realized by a subclass.
  • In addition to this a class can inherit only from one abstract class (but a class may implement many interfaces) and must override all its abstract methods/ properties and may override virtual methods/ properties.
 
 

What is an interface?


Interface can be used to define a generic template and then one or more abstract classes to define partial implementations of the interface.
Interfaces just specify the method declaration (implicitly public and abstract) and can contain properties (which are also implicitly public and abstract).
Interface definition begins with the keyword interface. An interface like that of an abstract class cannot be instantiated.
 
 

Difference between Class and Interface?


  • Class and an interface are two different types (conceptually).
  • Theoretically a class emphasis the idea of encapsulation, while an interface emphasis the idea of abstraction (by suppressing the details of the implementation).
  • The two poses a clear separation from one to another.
  • Therefore it is very difficult or rather impossible to have an effective meaningful comparison between the two, but it is very useful and also meaningful to have a comparison between an interface and an abstract class.
 

Differences between Interface and abstract class


  • Interface definition begins with a keyword interface so it is of type interface
  • Abstract classes are declared with the abstract keyword so it is of type class
  • Interface has no implementation, but they have to be implemented.
  • Abstract class’s methods can have implementations and they have to be extended.
  • Interfaces can only have method declaration (implicitly public and abstract) and fields (implicitly public static)
  • Abstract class’s methods can’t have implementation only when declared abstract.
  • Interface can inherit more than one interfaces
  • Abstract class can implement more than one interfaces, but can inherit only one class
  • Abstract class must override all abstract method and may override virtual methods
  • Interface can be used when the implementation is changing
  • Abstract class can be used to provide some default behavior for a base class.
  • Interface makes implementation interchangeable
  • Interface increase security by hiding the implementation
  • Abstract class can be used when implementing framework
  • Abstract classes are an excellent way to create planned inheritance hierarchies and also to use as non-leaf classes in class hierarchies.

What is Inheritance?


Ability of a new class to be created, from an existing class by extending it, is called inheritance.
 

What is method Overloading?


The method overloading is the ability to define several methods all with the same name but different signature and return type.
Ex : + ; operator overloading
 

What is method overriding?

Changing the implementation.
Ex : ToString () method overriding

What is an extender class?


An extender class allows you to extend the functionality of an existing control. It is used in Windows forms applications to add properties to controls.


What is implementation and interface inheritance?


When a class (type) is derived from another class(type) such that it inherits all the members of the base type it is Implementation Inheritance.

When a type (class or a struct) inherits only the signatures of the functions from another type it is Interface Inheritance.

In general Classes can be derived from another class, hence support Implementation inheritance. At the same time Classes can also be derived from one or more interfaces. Hence they support Interface inheritance.
 

FAQs -I-Design Patterns

Design patterns MVC and MVVM uses Widely

MVC , MVVM aren't these two patterns design patterns.
Yes , both MVC and MVVM are UI design.

The other design patterns prominently used in MVC and MVVM are:
a. Observer pattern
b. Command pattern
c. Strategy pattern
d. Inversion of Control

The design principle used here are
S - Separation of Concern
O - Open- Closed Principle
D - Dependency Inversion

If we use Entity Framework and RIA Services will be using the Repository Pattern as well.

What does a View Model Contain?

It is important to note that the ViewModel does not describe how the view looks. It describes how the view functions, and what information it provides to the user.
 

Difference between View and User Control

while a View is a UserControl, a UserControl is not necessarily a View
 

Do you think developer in MVVM shouldn't contain any code

Developers should refrain from writing any code in the View's code behind file that doesn't pertain purely to the GUI.
 

View and View Model Relationship

A view should only have one viewmodel but  a single viewmodel might be used by multiple views

What are the two things necessary for MVVM?

  •  A class that is either a DependencyObject or implements INotifyPropertyChanged to fully support data-binding, and
  • Some sort of commanding support.

When will you use design patterns ...Always?

A pattern is useful when it accelerates development, improves stability and performance, reduces risk, and so forth. When it slows development, introduces problems, and has your developers cringing whenever they hear the phrase "design pattern", might want to rethink on the approach.
 
 

 

Tuesday 4 September 2012

Differences between SQL Server 2008 and SQL Server 2005

 

Data Encryption

  • Transparent Data Encryption. The ability to encrypt an entire database.
  • Backup Encryption. Executed at backup time to prevent tampering.


  • Administration

  • External Key Management. Storing Keys separate from the data.
  • Auditing. Monitoring of data access.
  • Data Compression. Fact Table size reduction and improved performance.
  • Resource Governor. Restrict users or groups from consuming high levels or resources.
  • Hot Plug CPU. Add CPUs on the fly.
  • Installation improvements. Disk images and service pack uninstall options.


  •      Development

  •  Performance Studio. Collection of performance monitoring tools.
  • Dynamic Development. New ADO and Visual Studio options as well as Dot Net 3.
  • Data Synchronizing. Development of frequently disconnected applications.
  • Large UDT. No size restriction on UDT.
  • Dates and Times. New data types: Date, Time, Date Time Offset.
  • File Stream. New data type VarBinary(Max) FileStream for managing binary data.
  • Table Value Parameters. The ability to pass an entire table to a stored procedure.
  • Spatial Data. Data type for storing Latitude, Longitude, and GPS entries.
  • Full Text Search. Native Indexes, thesaurus as metadata, and backup ability.
  • MERGE. TSQL command combining Insert, Update, and Delete.
  • LINQ. Development query language for access multiple types of data such as SQL and XML.
  • Entity Data Services. Line Of Business (LOB) framework and Entity Query Language (eSQL)
  •  Full support to Azure database.

  •  

    SSIS SSAS SSRS

  • SQL Server Analysis Server. Stack improvements, faster block computations.
  • SQL Server Integration Service. Improved multiprocessor support and faster lookups.
  • SQL Server Reporting Server. Improved memory management and better rendering.

  •  

    Supportability 

  • Microsoft Office 2007. Use OFFICE as an SSRS template. SSRS to WORD.
  • SQL 2000 Support Ends. Mainstream Support for SQL 2000 is coming to an end.

  •