Subscribe by Email


Showing posts with label Artifacts. Show all posts
Showing posts with label Artifacts. Show all posts

Thursday, June 14, 2012

What is meant by Domain engineering? What activities are involved in domain engineering?


Domain engineering is nothing but also known as product line engineering. This article is focussed up on the domain engineering and the activities that are involved with it. 

About Domain Engineering


- This is the process that re- utilises the entire domain knowledge in the production of the new software systems or applications.
- The domain engineering is an important concept under the systematic re- use of the software systems and applications. 
- There is a domain by the name of “application domain” consisting of the systems that share commonalities.

You must be wondering how it is possible to cater to the varying needs of the customers by working with just a few domains. 
- The developers make it possible by repeatedly building similar software systems or applications in one domain with many variations to cater to the wide needs of the customers and clients.
- They do not develop a new system starting again and again from the scratch. 
- Effective development is achieved by re- using the portions of the already existing software system or application in the domain. This way time is also saved.
- One of the activities in domain engineering is domain analysis and it involves:
  1. Identifying domains
  2. Bounding the identified domains
  3. Discovering commonalities and variabilities among all the systems in a particular domain.

Purpose of Domain Engineering


- Domain engineering aims at improving the quality of the software systems and applications through the re- cycling of the already existing software artifacts. 
- Thus, the new software systems and applications developed with the domain engineering are not actually new as a whole but are variants of the other systems and applications within the same domain that were built earlier. 
- Domain engineering has helped in maximizing the business profits and a reduction in the time to market has been observed. 
- The overall cost of the project is also reduced and is evident in the implementation phase of the domain engineering. 
- With the domain specific languages, the code size can be restricted both in the terms of numbers and methods. 
- In the domain engineering the developers are forced to use their knowledge that they gathered during the previous software engineering processes. 
- With the development of the re- usable artifacts, the cost of the software is reduced and the quality is improved. 

Domain engineering consists of three phases and the above principle applies well to all these three phases.

1. Domain Analysis 
- This phase involves defining the domain and collecting information about it and produce model based on the collected info. 
- With such a model, the common points as well as variant points of the domain are identified and thus the development of configurable requirements is facilitated.
- Domain analysis is not be confused with the requirements engineering.
- The effectiveness of the domain engineering stays only when the re- use of the software artifacts is deployed in the earlier phases of the software development life cycle of that software product. 
- Potential sources of the domain analysis include:
(a)  Design documents
(b)  User manuals
(c)   Requirements documents
(d)  Standards and
(e)  Customers as well.

     2. Domain Design 
   - This phase makes of the domain model produced in the first phase and produces a generic architecture appropriate for this model and to which all the systems within the domain can adhere to. 
    - With the configurable requirements produced in the previous phase, a standardized solution is obtained. 
  - The solution that is generated in this phase is common for all the systems within that particular domain.

     3. Domain Implementation
     - This phase involves creation of a customized program in that domain. 


Tuesday, June 12, 2012

Explain the concepts of Domain Analysis Process?


Domain analysis is one of the three phases of the domain engineering and is the first one. Domain engineering makes re- use of all the domain knowledge in the development of new software systems and applications. It forms a key concept of the software re- use. 

Application domain provides a key idea in the systematic software re- use of the software system or application. In this article we have discussed the process of domain analysis. The process of domain analysis involves sub processes like:
  1. Identification of domains
  2. Bounding of the identified domains
  3. Discovering commonalities and variabilities among all the systems in a particular domain.
The knowledge obtained in the above mentioned activities is captured in the models which are then later used in the third phase of domain engineering i.e., domain implementation for the creation of the artifacts such as:
  1. Domain specific language
  2. Re- usable components
  3. Application generators

Concepts of Domain Analysis


All the above mentioned artifacts can be used to develop new software systems or applications within that particular domain. 
- Domain analysis is one of the three primary phases of the domain engineering and focuses up on multiple systems within a domain. 
- In the phase of domain analyzation, the system domain is defined with the help of feature models. 
- Earlier these feature models were considered to be a part of the so called method: feature oriented domain analysis.
- One of the main aims of the domain analysis is to identify the common points as well as varying points in a particular domain. 
- The domain analysis has greatly helped in improving the development of the system architectures as well as the configurable requirements. 
- Apart from this, the domain analysis also helps with the development of static configurations.
- Most of the people confuse the domain analysis with requirements engineering, this is a mistake not to be made! 
- Domain analysis proves to be an effective technology for the development of the configurable requirements as compared to the traditional approaches since they are ineffective in domains. 
- The domain engineering tends to be effective only if the re-use of the already existing software artifacts is considered in the early stages of the development of the software system or application. 
- In the domain analysis, the features that can be re- used in the new software systems or applications are selected earlier and later are worked throughout the development life cycle. 
- The entire process of the domain analysis is driven by the past experience produced from the artifacts on a primary basis. 
- There are many potential sources of the domain analysis few of which have been mentioned below:
  1. Artifacts of the existing systems.
  2. Requirement documents
  3. Design documents
  4. Standards
  5. User manuals
  6. Customers and so on.
- It is not necessary that the domain analysis should consist of the collected and formalized information rather it is the presence of a creative component that matters more.
- This thing distinguishes the domain analysis from the requirements engineering. 
- During the domain analysis what actually happens is that the developers try to extend their knowledge of the domain beyond what is already known. 
- This is done basically to categorize the similarities and differences of the domains so that the re-configurability is enhanced. 
- The domain analysis is carried out with the help of a domain model that represents the commonalities and variabilities of all the systems lying in that domain. 
- Basically, the creation of the components and architectures of the system is assisted by the domain model. 


Saturday, June 9, 2012

What is a Scrum Framework?


Many a times you might have heard, “scrum is a framework rather than a full methodology or process”! Why scrum is said to be a framework and not a process? 
This article explains the scrum framework in detail and answer the above mentioned question to the best of my understanding.

Scrum Overview


- Scrum is an iterative as well as incremental process and has its foundation laid up on the principles of the agile software development. 
- The agile foundation of the scrum helps it to focus up on keeping the code as simple as possible, testing the code quite often and delivering the working releases of the software system or application as soon as possible when they are ready. 
- The goal of the scrum lies in the philosophy of building a small client approved release as the team continues to develop the project rather than delivering one whole large completed software system or application with many undesired aspects at the end of the development process. 

What is a Scrum Framework?


- The scrum frame work is developed with the help of 3 core roles out of which first one is the “development team”. 
- When the scrum process is implemented for the development of a project, the development team is supposed to answer the following three questions:

  1. What they had accomplished since the last scrum?
  2. What they will do before the beginning of the next scrum?
  3. Did they encounter any stumbling blocks or hindrances?
- After the answers to these three questions are obtained, the sprint burn down chart is updated. 
- Next comes the role of the “product owner”, the person who holds the vision for the software project. 
- He/ she hold the responsibility for defining the software product and preparing a product backlog based up on the user requirements. 
- This product backlog is constituted of the user requirements listed in the order of their priority of the business values. 
- The product owner has the authority to accept or reject the work that has been done and change the priority of the features that are to be implemented in a sprint. 
- The scrum master has to supervise all these processes and remove impediments if any. 

Benefits of Scrum Framework


- The scrum framework works well with a team that has abilities like that of self organizing and cross functionality. 
- The frame work allows the development team to do everything to achieve the sprint goals but staying within the boundaries of the scrum principles. 
- For the frame work to be properly implemented it is necessary that the sprint burn down chart should be high with the updates on a regular basis i.e., daily after the sprint review meeting. 
- The scrum frame work demands commitment to the sprint goals and the results are demonstrated to the product owner at the end of every sprint.

There are certain artifacts associated with the scrum framework which have been defined as follows:

  1. Product backlog: Ordered log the user requirements based on the priority level of the business values. Created by product owner.
  2. Sprint backlog: Created by the development team. Log of the tasks that are to be accomplished during the sprints. Obtained from the user stories.
  3. Increment: Sum of all backlog items completed in the current sprint + backlog items completed in the previous sprints.
  4. Sprint burn down chart: This chart provides the project stats.
From all the above discussion it won’t be wrong to conclude that scrum forms a type of “inspect and adapt” frame work.  Scrum is a quite easy to understand consisting off just 4 ceremonies, 3 core roles and 4 artifacts. 


Friday, June 8, 2012

When should scrum be used and when should it be avoided?


There are conditions and situations encountered while the development of a software system is in process in which only one specific development methodology can be implemented! 
It does not mean that any software development methodology can be implemented any time and any where! This holds true for all the software development methodologies and so for scrum too! 
In the recent years of the use of the scrum development method, it has been observed that many developers and programmers have faced problems while implementing the scrum in the development process of their software product, project or application etc. The nature of the scrum development methodology should always be kept in mind while implementing it. 

What is Scrum Methodology?


- Scrum represents a light weight agile process frame work that primarily finds it use in the management of the software development process. 
- The scrum has been recognized under the category of light weight agile process frame works since it involves the use of very few elements, 3 core roles (namely the scrum master, development team, product owner) and three main artifacts (namely sprint backlog, product backlog and burn down chart). 
- With scrum, the rate of response to the ever changing needs of the customers is improved. 
- Scrum cannot be called as a mere process but a frame work since it is composed of several concepts and practices that together can be used to build several combinations of processes.  
- The iterations in a scrum process are cyclic in nature i.e. the iterations are repeated in every few weeks. 
- The requirements are supplied by the product owner as the user stories. 

When should scrum be avoided?


There are cases in which the scrum should be avoided! They have been mentioned below:
Case I: 
Implementing scrum in a problem for whose domain it is not compatible and
Case II: 
Implementing scrum in a development processes whose processes are against that of the scrum principles.
Case III: 
When the development processes of an organization works actively or passively against the principles of the scrum, then the scrum cannot be fully used here. 
Case IV: 
The scrum spirit is also threatened whenever a faux scrum is implemented by the company.
Case V:
Scrum can go wrong when the company involves too many people in the development process of so many projects! This phenomenon is called matrixing.
Case VI:
When the teams cannot commit to a fixed scope of work during a week, the scrum can not be implemented for that project since the scrum processes demand commitment. 

When should scrum be used?


There are cases in which scrum is used. 
Case I:
Scrum can be used well till the company is not bothered about the process that is being used at the team level and is not against the scrum values. 
Case II:
Also implementing scrum in a holistic way is itself an art and requires faith in scrum development process. 

Matrixing at the level of the scrum master is somewhat ok but may pose as a hindrance in the way of scrum. Matrixing is ok as far as the people involved in it have high knowledge and IQ levels. 

Usually teams like production support, network support and so on encounter this kind of problem with scrum. You should be careful while fixing the scope since if it’s too much for the team than your team can experience some serious dysfunction. In some cases if you are advocating for scrum, it may prove to be a disaster for you lest you know how to embrace it! 


Tuesday, June 5, 2012

Who all are involved in scrum development? What are their roles?


Scrum development process is one of the very famous agile software development processes which is nowadays gaining much popularity with the developers and the programmers. Since its advent it has been proved very effective when it comes to the matters regarding the management of the software system and products development. So many people and professionals are involved with the scrum development process and importance of each of them is so inevitable. 

In this article we will be discussing about all the people involved in the scrum development process. So let us see who all are involved in the scrum development process.

Categories in Scrum


- The people involved in the scrum development process have been divided in to two categories according to the importance of their participation in the development process. -
- Those two categories are namely:
  1. The core roles and
  2. The ancillary roles
- All the roles falling under the above mentioned two categories are pre defined and have their own unique part to play in the development process. 

Core roles in Scrum


- The core roles in the scrum development process are those who are strongly committed to the development of the software project.
- These roles are only responsible for the primary production of the software product. 
               a) The scrum master
                   b) The product owner
                   c) The Development Team

The Scrum Master


- As the name of the role itself suggests, the scrum master is said to be the in charge of the whole scrum development process.
- It ensures that all the processes are being implemented properly and at the right place thus removing the impediments. 
- He/ she also hold the responsibility for the protection of the development team from disruption and other factors that can falter the spirit of the development team. 
- The impediments are removed to the ability of the team by virtue of which it delivers the goals or deliverable of a sprint or iteration.
- Though all the processes in the scrum development are facilitated by the scrum master he/ she is not to be mistaken for the team leader. 
- It is a kind of role that acts as a buffer i.e., resists the development team from all the influencing distractions and disruptions. 
- He/ she always make it a point to ensure that the scrum processes are put in to right use. 
- The scrum master acts as a police thus enforcing the rules. 
- Overall, the scrum master is responsible for maintaining the focus of the development team on the tasks that are at hand and protect the team from any wrong factors. 
- In most of the cases the role of the scrum master has been characterized as “servant- leader” to represent the dual perspectives of the role.

The Product Owner


- This sub category involves all the stake holders and the business people involved in the development process and production process indirectly. 
- One person known as the product represents the voice of all these people. 
- The product owner holds the responsibility for telling the requirements and demands of the customers and the business people to the development team so that the desired values are delivered to the business.

The Development Team


- The values desired by the business are delivered by none other then the development team. - At the end of each sprint, the deliverable obtained is nothing but a shipped product increment. 
- A typical development team may consist of at the most 10 members who possess skills like self organizing and cross functionality.

Ancillary Roles in Scrum


The ancillary roles consist of the following roles:
  1. Stake holders and
  2. The managers. 


Monday, June 4, 2012

What is scrum methodology?


When it comes to the agile software development practices, the “scrum” is what that comes to our ears! The scrum development methodology is not new to us, it is something that we have been witnessing over the years in the field of the software engineering. 

This article has been dedicated to the scrum methodology! Scrum is a very vast topic to be discussed in detail in an article of short length! Here in this article we have tried to give you a glimpse of what is scrum methodology actually. 

Evolution of Scrum Methodology


- Scrum being an agile software development is supposed to follow a methodology based up on the iterative and incremental model of development. 
- Over the years the scrum development methodology has made the development and management of the software products and projects. 
- The birth of the software development was seen as an approach towards the commercial production of the software products thus making a remarkable improvement in the flexibility and speed. 
- The cross functionality and self organized teams are considered to be the best ones to perform the scrum development. 
- Initially the scrum development methodology was known as the rugby or the holistic approach to development. 
- The rugby approach was first replaced with the name scrum methodology in the year of 1995 when the a paper describing this methodology was presented in the “business object design and implementation work shop” by the Schwaber and Sutherland. 
- This workshop was conducted as a part of the OOPSLA ’95. Scrum consists of some of predefined roles and methods that regulate the whole development process. 

Roles in Scrum Development


The pre defined roles in the scrum development have been categorized in to two categories as we have discussed below:
  1. The Scrum Master: As the role itself suggests this person is responsible for taking the charge of the whole development process.
  2. The Product Owner: This role is also self justifying but does not refers to a single person, rather it includes all those people who are to be benefitted by the software product on the terms on which it has been agreed up on.
  3. The development team: The scrum development team is one that has the characteristics like cross functionality and self organizing.

Terminology used in Scrum Methodology


Now we shall discuss some terminology of the scrum methodology:

1. Sprint: Like so many cells together form a tissue, similarly many iterations or sprints together make up the sprint development cycle. Like all the other software development processes the sprints or the iterations in the scrum process are time boxed. And also like what happens in all the other agile software development processes, here also a sprint planning meeting is conducted before the starting of the sprint. The features that have to be incorporated in to the software system in a particular sprint are obtained from the product back log.

2. Story time: This is the time spent by the whole team grooming the back logs. The existing block usage efforts and points are estimated during this time thus chalking out  a whole new acceptance criteria for the individual stories. 

3. Daily Scrum: This is a sort of a project meeting that takes during the sprint and is also known as the daily stand up. Certain guidelines are must to be followed in this meeting:
(i)   Meeting should start at the exact time.
(ii) The participation of the core roles is mandatory.
(iii)Meeting should not exceed 15 minutes.
(iv)Meeting should take place at a fixed place every time. 
(v)  Each member must answer the below mentioned 3 questions:
(a)  What have you done?
(b)  What do you plan to do today?
(c)  Do you see any stumbling blocks?


What is meant by Scrum? What are principles of scrum?


You must have heard about the scrum being a very popular and good agile software development process. In this article we shall be discussing about the scrum and the principles it follows in short. 
"The scrum under the context of the agile development has been defined as an iterative and incremental method that follows agile principles and rules for the management of the software products and projects and applications".

Stages through a Scrum Process


Before we discuss more about the scrum methodology let us see what all are the various stages that are followed through a scrum process:
  1. Product back log items
  2. Sprint back log
  3. Sprint (from a few weeks to months)
  4. Working increment of the software

Roles involved in Scrum Methodology


- The scrum methodology was developed as an approach that would support commercial product development with increased speed and flexibility.
- Earlier, the scrum methodology was known as the rugby approach. 
- The scrum follows a set of methods and involves some predefined roles. 
- First we shall mention the predefined roles involved in the scrum:
  1. The development Team: The scrum development team has been recognized as a self organizing and cross functional team that is responsible for the actual analysis, implementation, design and testing etc.
  2. The Product Owner: In the scrum development the customer is said to be the rightful owner of the software product. But, in some cases this role may represent all the business people and the stake holders.
  3. The Scrum Master: As the role itself suggests, the scrum master is responsible for:
 (i)   ensuring that the scrum discipline is maintained throughout the process,
(ii)  protecting the development team against the disruption,
(iii) removing the impediments and so on.

- Unlike the other agile software development methodologies, the scrum iterations have got a name which is “sprint”. 
- Many sprints or iterations together make up a complete scrum cycle. 
- The above mentioned three roles are known as the core roles of the scrum development.
- There are certain other roles that are called the ancillary roles and have been mentioned below:
  1. Managers: They are held responsible for the management of the development environment.
  2. Stake holders: It includes the customers and the vendors also. Stake holders include all the people for whom the project is developed. They have direct involvement in the development of the software project.
- The above mentioned ancillary roles have got no formal role in the development process as to say. 

Over the years the scrum has been effectively put in use for the development and management of the software projects that have to be developed according to the agile principles. 
The scrum has also been a centre for most of the controversy because of its proposed conventional ideas about the traditional project management practices. 

What are certain artifacts associated with scrum?


- Scrum practices come in to play when it becomes difficult to move ahead with the other development methodologies. 
- The scrum has come to represent an overall new approach radical in nature for the planning and management of the projects. 
- It has brought the operation properties and the certainties and the decision making authority all at the same level. 
- Following the principles of the agile manifesto, for the scrum development also daily scrum meetings are held known as the daily stand ups. 
- There are certain artifacts associated with the scrum development as mentioned below:
  1. Sprint burn down chart: This chart represents the progress made in a particular sprint against the length of the sprint.
  2. Product back log: This log consists of the high level requirements that have been prioritized by the customer.
  3. Sprint back log: This log consists of the tasks that have been prioritized by the development team and have to be completed in that particular sprint. 


Facebook activity