Subscribe by Email


Showing posts with label Incremental. Show all posts
Showing posts with label Incremental. Show all posts

Wednesday, January 16, 2013

What kinds of functions are used by Cleanroom Software Engineering approach?


Harlan Mills and his colleagues namely Linger, Poore, Dyer in the year of 1980 developed a software process that could promise building zero error software at IBM. This process is now popularly known as the Cleanroom software engineering. The process was named in accordance with an analogy with the manufacturing process of the semiconductors. 

The Clean room software engineering process makes use of the statistical process and its control features. The software systems and applications thus produced have certified software reliability. The productivity is also increased as the software has no defects at delivery. 
Below mentioned are some key features of the Cleanroom software engineering process:
  1. Usage scenarios
  2. Incremental development
  3. Incremental release
  4. Statistical modeling
  5. Separate development
  6. Acceptance testing
  7. No unit testing
  8. No debugging
  9. Formal reviews with verification conditions
Basic technologies used by the CSE approach are:
  1. Incremental development
  2. Box structured specifications
  3. Statistical usage testing
  4. Function theoretic verification
- The incremental development phase of the CSE involves overlapping of the incremental development and from beginning of specification to the end of the test execution it takes around 12 – 18 weeks.
- Partitioning of the increments is critical as well as difficult. 
Formal specification of the CSE process involves the following:
  1. Box structured Designing: Three types of boxes are identified namely black box, state box and clear box.
  2. Verification properties of the structures and
  3. Program functions: These are one kind of functions that are used by the clean room approach.
- State boxes are the description of the state of the system in terms of data structures such as sequences, sets, lists, records, relations and maps. 
- Further, they include specification of operations and state in-variants.
- Each and every operation that is carried out needs to take care of the invariant. 
- The syntax errors present in a constructed program in clean-room are checked by a parser but is not run by the developer.
- A team review is responsible for performing verification which is driven by a number of verification conditions. 
- Productivity is increased by 3–5 times in the verification process as compared to the debugging process. 
- Proving the program is always an option with the developers but it calls for a lot of math intensive work.
- As an alternate to this, clean room software engineering approach prefers to use a team code inspection in terms of two things namely:
  1. Program functions and
  2. Verification conditions
- After this, an informal review is carried out which confirms whether all conditions have been satisfied or not. 
- Program functions are nothing but functions describing the prime program’s function.

- Functional verification steps are:
1.    Specifying the program by post and pre-conditions.
2.    Parsing the program in to prime numbers.
3.    Determining the program functions for SESE’s.
4.    Defining verification conditions.
5.    Inspection of all the verification conditions.
- Program functions also define the conditions under which a program can be executed legally. Such program functions are called pre-conditions.
- Program functions can even express the effect the program execution is having up on the state of the system. Such program functions are called the post conditions.
- Programs are mostly expressed on terms of the input arguments, instance variables and return values of the program. 
- However, they cannot be expressed by local program variables. 
- The concept of nested blocks is supported by a number of modern programming languages and structured programs always require well nesting. 
- The process determining SESE’s also involves parsing rather than just program functions.


Thursday, July 12, 2012

What are the characteristics of the unified process?


- Unified process is one of the most popular software development frame works based on the iterative and incremental approach.
- Unified process is a frame work that is extensible according to the needs of the software development project or according to the needs of the specific organizations. 
- The unified process signifies the generic processes that include elements that have been declared common for most of the refinements. 
- The unified process was first discussed in detail in a book called “the unified software development process” in the year of 1999. 
- Every process has got some characteristics and so does the unified process.

Characteristics of Unified Process



1. Iterative and Incremental Process: 
- There is no doubt believing that the unified process is an iterative and incremental one. 
- This is evident from the fact that the all the below mentioned 4 phases of the whole process are divided in to a set of time boxed iterations:
(a)  Inception
(b)  Elaboration
(c)  Construction and
(d)  Transition
- Depending up on the complexity and the size of the project, the inception phase may also be further divided in to a large number of small iterations to keep the over all development process as simple as possible. 
- The increments are the result of the individual iterations that are performed during the whole development process.
- These increments can be defined as a system containing improved and added functionalities that extend over those that were present in the previous version of the same software system or application.
- Mostly the iterations take care of the following aspects of the software:
       (a)  Requirements
       (b)  Testing
       (c)  Design implementation and so on.

2. Use case driven: 
- The unified process is rightly called the use case driven software development methodology since it is driven by the use cases that are quite effective in capturing the contents of the iterations and the functional requirements.
- Each iteration involves a number of use cases as well as scenarios for the proper identification of the requirements, their implementation, testing and deployment.

3. Risk Focused: 
- The unified process requires that the most critical risks in the whole development cycle are focused up on in the early stages of the life cycle of the process. 
- For addressing the factors with the highest risk rating, the deliverable of all the iterations especially in the second phase of the life cycle i.e., the elaboration phase are selected in a pre-defined order.

4. Architecture Centric: 
- It is obvious that the success of any software development process is greatly dependent on what kind of architecture is being used in it. 
- Architecture seems to work the very best at the heart of any software development process. - With the right architecture in the process, the efforts of the teams can shape the software system or application the way they want. 
- One problem is encountered here which is that only one model never suffices in providing coverage in a unified process, several models have to be conjoined and used. 
- It is one of the attractive features of the unified process that it supports multiple architectural views and models. 
- The elaboration phase witnesses the creation of an executable architecture baseline which can be called as an important deliverable. 


Sunday, June 10, 2012

What are the strengths and weaknesses of scrum?


Even though a lot of programmers and developers have been opting out for using scrum for the development of their projects, they had always faced some problems when implementing the scrum processes. These problems more or less are a consequence of the weaknesses of the scrum development method. 

However, in comparison to the weaknesses, the scrum has more number of strengths or plus points and this is what that makes the scrum so popular among the programmers and developers in spite of its weaknesses. 

According to a research, scrum was find to be weak in scrum training and certification. As we all know the scrum has always been looked up on as one of the best ways to implement the agile principles in the development process. All these modern agile software development processes like the waterfall, spiral and iterative models are quite different from the traditional approaches to software development. 

Problems and Misconceptions faced by Scrum Methodology


- One thing that really makes the scrum implementation weak is that programmers and developers think that implementing scrum itself is equal to agile implementation which is absolutely wrong! 
- Any software development process on a whole cannot be considered to be a complete agile process until and unless all the disciplines and rules of the agile management have been incorporated in to the development process.
- When one takes the scrum process to be equal to the agile process, then the agile disciplines go missing from the development process without the knowledge of the developer. 
- The developer thinks that he had implemented all the aspects of the agile management via the scrum which is a very false perception. 
- Many people do not understand that scrum is a software development process meant to achieve the goals of agility. 
- Scrum is a means and not a goal in itself. 
- Implementing the scrum without knowing about it in depth is like drawing up an empty process which takes you nowhere except that your time and efforts are wasted.
- When the scrum is simply thought of as a process so many formal activities that are carried out are a total waste. 
- There is another aspect to this weakness! This weakness in some cases becomes the strength of the scrum process making several problems visible to the developers. 
- But this is not the usual case since some developers may identify the problems found, themselves. 
- Plus if such problems are discovered during the implementation of the scrum then one more thing is obvious that the communication between the team members is not fluent and effective. 

Some developers and programmers may also blame the scrum for such problems. Here below we have summarized all the strengths and weaknesses of the scrum:
      
        1. Strengths:
a)  Encourages team work.
b)  Maintains transparency of the development process.
c)   Breaks down hierarchies.
d)  Keeps a focus on user features. (this is a weakness also in some cases)
e)  It is adaptive.
f)   Encourages visibility of the development.

      2.Weaknesses:
a)  Keeps a focus on user features: Focus on user features to some extent is ok but what if the process is totally in to it? A slow and clean approach always seems difficult to a team! Non functional requirements can be ignored since they don’t have any direct impact on the user.
b)   With scrum every team member needs to forget about his/ her area of expertise.
c)   Scrum is more useful to the companies that are product based rather than other aspects.


What is a scrum process and how does it work?


To implement the scrum development process, it is important to know how it actually works. Most of the errors in the development occur because of the lack of knowledge about the working process of the scrum. 

Scrum works on the principle of iterative and incremental development and it operates with the help of two types of roles namely:

  1. Core roles:
(i)                Scrum master
(ii)              Development team
(iii)            Product owner

  1. Ancillary roles:
(i)                Stake holders and
(ii)              Managers

What is a scrum process?


- The scrum process deals in terms of sprints which are usually called iterations for the other agile software development processes. 
- In a typical scrum, a sprint may have duration of a week to a month. 
- Scrum is facilitated by various meetings which have been mentioned below:

1. Daily scrum: 
This meeting is held during the sprint and is based up on the project status. Usually the core roles participate in this meeting. This meeting is time boxed to 15 minutes.

2. Story time (back log grooming): 
This process involves the estimation of the existing backlog and the acceptance criteria for the user stories is also refined. These meetings are time boxed to an hour.

3. Scrum of scrums: 
This meeting follows after daily scrum and is somewhat same.

4. Sprint planning meeting: 
This meeting is held before the beginning of every sprint and the tasks that have to be completed within that sprint are selected.

5. Sprint review meeting: 
It reviews the status of the sprint and also the tasks that could not be completed.

Principles on which working of scrum depends


The scrum follows the following three principles throughout its working:

  1. Working software is more valuable then the documentation.
  2. Response to the changes in requirements is more important than the plan.
  3. Team collaboration is important than contract negotiation.

How does a scrum process work?


- Usually the first few weeks of the scrum are spent working out the high level requirements including business needs and system architecture. 
- After this, the team produces the product backlog and sprint backlog. 
- These two backlogs together make the scope of the software project by the end of the week. - All the team member themselves take up the responsibilities and operational activities from each other during the daily meetings. 
- At the end of some sprints, it happens that some of the tasks could not be completed as planned so they have to be included in the next sprint in addition to the other tasks. 
- One of the reasons for such situations is the “scope creep”
- However, this does not turns out to be a real issue especially when the team is working closely with the business owners who have good understanding of the development process going on. 
- It should be understood that the scrum is a framework rather than just being a full methodology. 
- A detail of everything that is to be done is not provided by the client since it is decided by the team itself.
- At the end of the sprints the coding, testing, integration of the features is done. 
- In the sprint review, the newly added features to the software are demonstrated to the product owner. 

Reasons why scrum works well


There are several reasons why scrum works and few of them have been mentioned below:
  1. Iterative nature.
  2. Re assessment of priorities between iterations.
  3. The old check points are discarded when the team is doing something new.
  4. Availability of the product owner.
  5. The development team works on a single project at a time.
  6. The team has a chance to co- locate the entire development process.


Saturday, June 9, 2012

What are different scrum controls?


It happens in some of the cases that the whole scrum process comes on the verge of the collapsing! In such cases it is required that the management controls stay in order, undisturbed and firm all the times. 
There are many scrum controls; however the risk assessment continues to be the most valuable one with its impacts as well.

What are different Scrum Controls?


The below mentioned are the effective scrum controls:

1. Issues: 
Issues can be thought of as the obstacles that do not pose any major risk, defect or bug but cannot be considered to be a positive aspect for the software project.

2. Risk assessment: 
This is the most influential scrum control also as it influences the other scrum controls quite much. The success of the project depends largely up on this scrum control as well its impacts.

3. Packets: 
These are product elements pending for the modification in order to facilitate the implementation of the product backlog items in to the working software that is to be released at the end of the sprint.

4. Backlog: 
This backlog consists of all the details of the bugs, defects and the requests of the customers that could not be implemented in the current release and have to be incorporated in to the next release. In addition to all these, the backlogs also consist of the technology and functionality upgrades.

5. Solutions: 
These are the scrum controls occurring between the risks, problems and changes.

6. Release and Enhancement: 
After the risk assessment, this is the second most valuable scrum control for the entire development cycle. This scrum control at any point of time represents a viable release based up on the requirement variables.

How does these scrum controls help?


- Most of the above mentioned scrum controls are employed for the management of the product backlogs and the sprint backlogs. 
- These scrum controls are used for the following purposes:
  1. Managing issues
  2. Obtaining better solutions
- Even these controls are reviewed from time to time and modified or reconciled if and whenever required during the sprint planning meetings. 
- These scrum controls help control chaos that occurs during the development process. 
- All the above mentioned scrum controls play a great role in the following stages of the scrum:
  1. Defined processes
  2. Project cost
  3. Final product
  4. Responsiveness to the environment
  5. Completion date
  6. Knowledge transfer
  7. Team flexibility creativity
  8. Probability of success

Scrum, we can say is an enhanced version of the iterative and incremental object oriented development cycle. 
The software releases in a scrum are planned according to the below mentioned variables:
  1. Time pressure: Time frame required to make most of the competitive advantage.
  2. Quality
  3. Resource: It includes staff availability and funds.
  4. Vision (system vision)
  5. Competition: What is required to gain the competitive edge?
  6. Customer requirements: How the current system can be enhanced?
All the above mentioned can be modified according to the development plan during the project. But any processes carried out further should take these changed variables in to account. A system that requires a complicate and complex development process require appropriate control and maximum and efficient control.



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. 


Tuesday, June 5, 2012

What are different processes involved in scrum development?


We have been witnessing the milestones achieved in the field of software engineering with the help of the scrum development process regarding the development of the agile projects. There is no doubt regarding the efficiency of the scrum development process in the terms of agility. 
It supports all the principles as stated by the agile manifesto for all the development methodologies and processes falling under the category of the agile software development processes. 
Initially the scrum approach to development was considered to be a holistic but eventually in by the year of 1995 it achieved its present form and was officially termed as the “SCRUM”. 

Scrum Development Cycle


The scrum methodology consists of various stages and processes that we are going to discuss in this article. The scrum development cycle is constituted of the below mentioned processes:
  1. Creation of the product back log
  2. Creation of the sprint back log
  3. Sprint
  4. Delivery of a shippable working increment of the software system or application.
- The product back log can be thought of as an ordered list of the requirements and specifications of the software product or the system that is to be developed and its creation is the responsibility of the product owner. 
- The product owner orders some product back log items and these items only are mentioned in the product back log.
- The product owner may order these product back log items based on any one of the following criteria:
  1. Risk
  2. Business value
  3. Date needed
  4. Dependencies and so on.

What is Product Back Log?


- The product back log is a list that is open to every one and all are free to edit it but, for any kind of changes and ordering the items, only the product owner is only held responsible. 
Apart from the requirements, the rough estimates of the development efforts and business values are found in the product back log. 
- All these values appear in the back log but in the form of some story points developed by the means of some rounded Fibonacci sequence.
- With the help of these estimates the product owner is able to gauge the time line and influence the ordering of the back log items. 
- Contrary to all this, the efforts required for completing each back log item is estimated by the development team. 



What is Sprint Back Log?

- It can be thought of as a list of work or tasks that must be addressed by the development team in the sprint that is to follow. 
- The sprint back log is prepared by obtaining some selective features and stories form the product back log until the sprint includes enough tasks to be accomplished. 
- But while adding the tasks the velocity of the previous sprints should be taken care of by the development team. 
- The stories or the features are broken down in to smaller tasks that up on estimation would not exceed 16 hours of efforts by the development team. 
- This reduces the burden on the development team and helps them understand what is to be done. 
- Rather than assigning the tasks on the sprint back log, they are just signed up by the development team as required for the following sprint and according to the priority and skills of the development team. 
- The working increment that is delivered at the end of the sprint is the sum of all the product back log items that have been completed during that particular sprint and all the other sprints preceding it. 
- It is necessary that the increment is delivered in a working condition and is usable.


Facebook activity