Software Engineer, Your next Programming Instructor.

"Here I share myself."
Showing posts with label SQA. Show all posts
Showing posts with label SQA. Show all posts

Friday, 13 November 2020

Sequential Cohesion in Software Engineering - Types of Cohesion

Communicational Cohesion in Software Engineering Urdu/ Hindi

Types of Cohesion - Procedural Cohesion in Software Engineering Urdu/Hindi

Sunday, 28 June 2020

What is Scrum? What is a Scrum Master? The Role and Responsibilities


What is scrum?
Scrum is a framework which fall under the Agile framework. It is use to manage the complex software development and it is usually consists on the team of 3 to 9 persons. Scrum uses iterative manner of development. As scrum belongs to Agile so it provide frequent deliveries. 
Some basic point of attraction in scrum are:
  1. It is a lightweight framework
  2. It urge you to work in the form of a team
  3. It is self organizing type of framework
Roles in Scrum
There are three general role in the Scrum
  1. Product Owner
  2. Scrum Master
  3. Team
Product Owner: He is the person who want you to develop a software. Product Owner can be an individual or a group of people but all in all no matter how much people we count them as an entity product owner.

The Team: Because in Scrum framework wo work in a team that is why team is consider as a role in the scrum in which every is performing his duties.

Scrum Master: He is the most responsible person and do lots of work in the scrum frame work. The Scrum master is the facilitator who facilitate the team in every sense. It is his duty to facilitate the team and to product owner.
The facilities the scrum master provide are his responsibilities actually in the Scrum team.

Three Important Question a scrum master may ask to team on daily basis:
  1. What did you do yesterday?
  2. What will you do today?
  3. Are there any kind of obstacles your way?
Don't get confuse:
Just because scrum master is facilitating team asking them questions doesn't means at all that a scrum master is the name of a project leader or the project manager in the scrum environment. 
Keep it very clear project leader and scrum master are the different persons.

Just like you will have a programmer in the team and the person with good programing skill will be a programmer same for the software designer and some for the software Architect same thing is for the scrum master. scrum master is also a person who have expertise in scrum framework and have experience in a scrum framework. He work as a couch in the team and tell the other team member how to keep themselves in the scrum framework and also perform his responsibilities.

Responsibilities of the Scrum Master: 
Scrum master Facilitate the Scrum Team:
  • He is responsible for improving the interaction between the team as this thing improve the productivity level.
  • He is responsible to arrange the team meeting and planning session according to the schedule of every team member.
  • He is responsible for clearing the obstacles from the way of the scrum team or from the way of the project on which scrum team is working.
  • He is responsible for ensuring the good relationship between the team and the product owner. These good relationships are the key to achieving quality in the product.
  • He is also responsible for protecting the team for any kind of distraction.
  • These all things we have just seen are the services which are for the scrum team from the scrum master.
Scrum Master Facilitates the Product owner:
  • Helps product owner in the technical way so he can convey his product requirement to the scrum team.
  • Facilitate and arrange the meeting session if the product owner want to have some meeting.
  • Help the product owner in back log management (this is the most important task.)
  • Back log management is process in which the product owner add adjust modify the items he want in product.
Challenges for scrum master:
All the things looks like fun and easy and you will be thinking I can do that what so difficult?
But there are lots of challenges a scrum master face on his way.

Dealing with change: May be the customer suddenly demand a change in the product when it is not possible.
May be the customer ask for what is not possible for team to implement.
All these things and dealing with these things is not a piece of cake.

Misunderstandings: When people are working in the team, and the project are of kind in which your focus is urgent and frequent deliveries in iterative manner.

In this condition there is always room of misunderstandings in the team members or in between the team members and the product owner. These things directly affect the quality of the product, relationship between the people and reputation of the scrum team in the organization keep an eye and keeping things in smooth way is challenge for the scrum master to fulfil.


Video Lecture on the Topic

Friday, 26 June 2020

Software Architecture and Architecture styles in Software Engineering

To understand the concept of Software Architecture you should have knowledge and concept of what is Architecture.
When you here this word, At the most simplistic level, you think about the overall shape of the physical structure. The word Architecture put the image of building into your mind most of the time but not simple building the most beautiful and well engineered building.

Why this happen?
Why this happen? Because just making a building is not the goal of arch Making a building by keeping all technical aspects in mind and dealing with them is the goal of architecture.

It is the way in which the building fits into its environment and meshes with other buildings in its vicinity.

It is the degree to which the building meets its stated purpose and satisfies the needs of its owner.

The architecture is not the operational thing.
Rather, it is a representation that enables you to:
  1. analyze the effectiveness of the design in meeting.
  2. consider architectural alternatives at a stage when making design changes is still relatively easy.
  3. reduce the risks associated with the construction.
The concept of Software Architecture:
I hope now you would have the basic mind set about what is the Architecture. Its time to move towards the concept of software architecture.

Architecture serves as a blueprint for a system . It provides an abstraction to manage the system complexity.

It defines a structured solution to meet all the technical and operational requirements, while optimizing the common quality attributes like performance and security.

IEEE defines architectural design as “the process of defining a collection of hardware  and software components and their interfaces to establish the framework for the development of a computer system.”

Software Architecture Styles:
Data centered architectures : A data store (e.g., a file or database) resides at the center of this
architecture and is accessed frequently by other components that update, add, delete, or otherwise modify data within the store. Existing components can be changed, and new client components
added to the architecture without concern about other clients. Client components independently execute processes.


Data flow architectures: This architecture is applied when input data are to be transformed
through a series of computational or manipulative components into output data. A pipe and filter pattern has a set of components, called filters ,connected by pipes that transmit data from one component to the next.
Call and return architectures: This architectural style enables you to achieve a program structure that
is relatively easy to modify and scale. two arch. styles are relative to this call and return architecture style.

Main program/subprogram architectures . This classic program structure decomposes function into a control hierarchy where a “main” program invokes a number of program components that in turn may invoke still other components.

Remote procedure call architectures . The components of a main program/subprogram architecture are distributed across multiple computers on a network.

Object oriented architectures The components of a system encapsulate data and the operations that must be applied to manipulate the data. Communication and coordination between components are accomplished via message passing.

Layered architectures: A number of different layers are defined, each accomplishing operations that progressively become closer to the machine instruction set. At the outer layer, components service user interface operations.At the inner layer, components perform operating system interfacing. Intermediate layers provide utility services and application software functions.




Why the architecture is important?
The answer to this question would be clear to you till know but still let me tell you some key points which will summed up why the software architecture is important.

Three key reasons that software architecture is important:

  1. Representations of software architecture are an enabler for communication between all parties (stakeholders) interested in the development of a computer based system.
  2. The architecture highlights early design decisions that will have a profound impact on all software engineering work that follows and, as important, on the ultimate success of the system as an operational entity.
  3. Architecture “constitutes a relatively small, intellectually graspable model of how the system is structured and how its components work together”.

Video Lecture in Hindi Urdu For the above notes.