Saturday, July 11, 2020

State diagram in Software Engineering | State Machine Diagram

State Diagram in Software Engineering | State Machine Diagram 
software engineering,softwareengineering,,mysoftwarenotes,state machine diagram,state machine tutorial,state machine unity,UML state,uml state diagram,uml state chart diagram,uml state transition diagram,UML Diagram,UML,uml diagrams tutorial,state diagram examples,state chart diagram examples,how to draw state diagram,state diagram in software engineering,state diagram symbols,state machine,state chart diagram,state transition table

State Diagram is one of the UML Diagram which use to show the dynamic behavior of the system.
We use the state diagram only when any object of the system changes its states in the life. This diagram helps us in representing how an object goes through from one state to other and what are the factors which make the object to transit from one state to other, When object move from one state to other if we have options to go in different states so what state an object chose to move forward and where the chosen state take the object.

there is no Rocket science involve in the state diagram, you being an object of the person class have a unique name lets say "John" and you in your whole life make keep transiting through different states up different factors.

The factor of feeling sleepy transit you to the sleeping state, the factor of  being hungry transit you to the eating state, the factor or the environment which you hate transit you to the Angry state.

This UML Diagram only represent your transitions from one state to another in a flow.
Being a human if you start to make your life state diagram I don't think you can predict all the states through which you will pass in future. Because it depends on the environmental factors and lots of other external factors but the GOD knows your state diagram very well isn't it?

same like this when you develop a software, It could be the bundle of classes, and there would be lots of objects of different classes, Now the object of the class do not know the states from which or to which it will transit in the whole life, But the creator of the object in this case that's you being a programmer or Software Engineer knows very well the states from which an object going to pass in different situation so according to your knowledge you make this state diagram.

Now The objects in the software are not like Humans they some times change the states but most often they are assign to a task (specific task) and by remaining in a single state the keep performing those tasks and dies at the end just after completing the assigned task this is the case in most of the objects in software you don't have to draw state diagram for these kind of software just think if the software is not changing the state in the whole life what is the purpose of making state diagram.

If there are some objects who are assigned to some task but change the state on factors then you have to make a state diagram for it. 
I have given the examples of objects changing the states, may be the example of Easypaisa in the video will be beneficial to understand what I have describe in the whole article till now.

I will recommend you to watch the video now it will help you to clear the concepts.

Sunday, July 05, 2020

IPC model | Shared memory model | Message passing model in OS

Inter-Process Communication | Shared Memory Model | Message Passing Model in Operating System

Software Engineering,,mysoftwarenotes,software developer,software,operating system tutorial,operating system course,ipc in operating system,ipc in operating system in hindi,shared memory model in os,message passing model in,message passing model in os,message passing model in operating system,message passing model in distributed system,symmetric communication in os,asymmetric communication is os,os in hindi easy engineering classes

•IPC – (Inter-Process Communication) is the capability which allow two process of the computer to communicate with each other.

•Where will be those process?
•Its not important for process to be in the same computer they can be in same computer or in different computer which are connected over the network.

•There are two fundamental model of Inter Process Communication.
•1) Shared Memory Model
•2) Message Passing Model

Shared Memory Model
•This model made a region of memory which get shared between the cooperating processes.

•The process who want to share information read and write the data from this location.

•This is the fast model as compare to the Message passing model.

Where this shared memory is located?

You may find this shared memory under the address space of the process which want to share data with other processes.

•Yup, That’s true that OS usually prevent the process to inter in the memory of other process but in this scenario, we bypass this prevention.
•OR the process itself allow the OS to remove this protection from its memory for the cooperating processes.

Message Passing Model
In this model two process communicate with each other by passing messages.

•It is easy to implement as compare to shared memory model.

•It is useful to exchange small amount of data.

•This system is much more useful in the distributed environment when the two computers are on the same network and their processes want to share the data.

Message Passing Model Operations:

Message passing model provide two operations

In sending message and receiving message, there are two more concepts.
1.Direct Communication
    1.1.Symmetric Communication
    1.2.Asymmetric Communication
2.Indirect Communication

Direct Communication:
In direct communication sender and receiver mention the name of the process from which they want to receive messages or to whom they want to send messages.

In Symmetric communication both sender and receiver mention the name of each other.

in Asymmetric Communication Only sender mention the name of the receiver, receive the message from the ID.

Indirect Communication:
•In this system messages are sent and receive from the mailbox.

•Mailbox is a place where two or more process store and remove messages.

•Processes communicate sharing one mailbox.

Thursday, July 02, 2020

Software Project Management in Software Engineering

software engineering,,mysoftwarenotes,software developer,software,software project management,software projects,software project management tutorial,software project management tools,software manager interview questions and answers,software manager skills,software manager interview,software manager,it project management,it project manager interview questions and answers,it project manager day in the life,cs615

What is a project?

•A project is a group of tasks that we perform to achieve the required result. Not only in the software domain project in every domain is a group of tasks.

•Every project no matter if it is in the field of software or some else have some starting and ending time linked with it.

•Every project need some resources, in the term of time, in term of manpower, finance and knowledge-bank.

•Collectively all these resources help us to complete a project.

What is Project Management

•Project management is a way to lead the team and use all the resources in a manage way to achieve the required results which we want at the end of the project.

•The focus of the project management is to achieve all of the project goals under the given constraints.

•Goals are the tasks which collectively makes a project and manpower is working on it.

•Constraints are given time frame, budget, requirements and all these things.

What is Software Project?

•A software project is complete procedure of software development from the requirement gathering to final stage of developing a software and maintain It.

•It is also important to keep the software project under the define constraints. 

•It is the duty of Software Project Management to keep this under constraints. Software Project management keep the software project under the all define constraints.

What is Software Project Management?

•Software Project management is a well-disciplined field and an art using which we plan, manage and supervise the software project.

•Software Project management is a complete procedure which helps in managing the software project in sense of time, budget and all other constraints.

•Software Project Management field mainly deal with three things

Project Manager

•Software Project management is a complete domain and the Project manager is the person responsible to keep the whole project under the domain according to the constraints.

•He is the person who keep the project on track and manage it. 

•Project manager is the driver of the software project management.

Responsibilities of Project Manager

•Project Planning
•Scope Management
•Project Estimation
    Software Size
    Cost estimation
•Resources Management
•Risk Management

•He is the fully responsible to keep the project on track.
1.He monitor the flow of team activities, Their planning and put them in a sequence and under the constraints of the project. 

2.Project Manager also make important changes if needed some where in between the project according to the situations and take some bold decisions.

Tuesday, June 30, 2020

IPC- Inter Process Communication

Inter Process Communication - IPC in Operating System
•IPC – (Inter-Process Communication) is the capability which allow two process of the computer to communicate with each other.

•Where will be those process?
•Its not important for process to be in the same computer they can be in same computer or in different computer which are connected over the network.

•IPC allow one application to control other application, It also allow two applications to share data with each other.

•IPC is an important thing in the multiprogramming system, or we can say multiprogramming system depends on this system,

•Single process Operating system do not use IPC.

•Microsoft windows is a Multiprogramming operating system and it use the IPC. In windows IPC is known as Dynamic Data Exchange System.

•In an OS (Multiprogramming OS) many process may be running at the same time. In the context of IPC we can divide those processes into two main categories.

1.Independent Process
2.Cooperating Process

Independent Process 
•As name shows in the Multiprogramming OS environment these processes are work independently.
•They never ask any other process to share data and never share their own data to some other process.
•Although they are in the Multiprogramming OS but they never share data.

Cooperating Process
•Name is telling the whole store these are just opposite to the independent process and share the data with other cooperating process into the system.

•Different advantages of process cooperation:
1.Information Sharing
2.Computation Speed up

Computation Speed up
•Task get divided into multiple tasks, all task run parallel and achieve the required results.

•Divide a function into separate process and threads.

•If user is using the same data in different tasks conflict can be arise so this system try to avoid conflicts.

•There are further two memory models in this system.
•Shared Memory Model
•Message Passing System

Sunday, June 28, 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.

Friday, June 26, 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”.