Why Projects Fail

Executive Management, project Managers, and Team Members are the three sets of players for every project.  Project Management Institute, Inc. identifies four reasons why projects fail: lack of visibility, unclear objectives, resource workload, and gaps in communication.

Visibility into a project entails identifying tasks, reports, and schedules posted in real-time.  Many projects fail because key players are not informed of progress and updates thus leading to confusion.  Unclear objectives entail setting realistic goals and strategies.  Many projects fail because a lack of vision leads to chaos.  Resource workload entails the execution of a reasonable workload.  Overworked employees get burned out and ultimately quit.  Gaps in communication leaves key players uninformed.

Good practices should be communicated with the onset of every new project.  Executive Management must demonstrate effective leadership.  Project Managers must communicate to management and team members.  Team members must receive proper communication so they can effectively perform their job. Project Managers have been known to be overconfident in their abilities.  Overconfidence in meeting budgets, schedules, and project objectives can compromise the project and/or lead to disaster.  If new evidence presents itself along the way, do not ignore it.  Knowing when new evidence needs to be considered to re-evaluate a project could be crucial to success.

Due to eminent failure and unrecoverable costs, knowing when to pull the plug on a project may be a necessary evil.  While objectives need to be prioritized, it is important to understand that priorities and objectives change.  Projects require constant monitoring.  While these four points don’t explain everything that could go wrong, it serves as a reminder for all of us to consider.

John Brown, Abolitionist

Deeply rooted in Christianity, Abolitionists generally promoted nonviolence in their pursuit to end slavery. After the passage of the Fugitive Slave Law in 1850, some turned to civil disobedience to invoke awareness and social change.

A middle-aged Abolitionist named John Brown was quite certain slavery would never end without bloodshed that it prompted him to stage two infamous antislavery crusades, the Pottawatomie Massacre and the standoff at Harper’s Ferry.

John Brown’s actions caused great panic and fear throughout the South, it elevated him to martyrdom via antislavery sympathizers as Brown gave the ultimate sacrifice, and intolerance to our leaders. Whether a terrorist on a suicidal mission or a religious fanatic on a mission from God, John Brown was captured and found guilty of treason. Whatever slavery may be to our Republic, it did not excuse anyone to commit violence, murder, and most importantly, treason. John Brown’s actions further intensified tensions between the North and the South.

American Civil War: Fugitive Slave Law

I am currently taking a history course, HIST 335-50 Rebirth of Freedom: The Civil War and Reconstruction, at Metropolitan State University. We are learning more of the political, social, and cultural conflicts over the institution of slavery and how it assisted in the outbreak of Civil War. I find the study of American history fascinating, especially when I see how far we’ve progressed in human rights in regards to race, gender, and religion. Yet, there still is much more work to be done. This first post is about Fugitive Slave Law, I hope you enjoy it!

Southern farmers of the nineteenth century achieved agricultural superiority in fertile land, ideal climate, and the purchase of slave labor imported from Africa. They grew and harvested a variety of crops, mainly cotton, that resulted in a unique culture with enormous wealth and prosperity. This unique culture was so dependent upon agriculture for its survival that it sought ways to protect its interest, from advancements in machinery to the management of its slave labor force.

The life and treatment of slaves varied greatly throughout the South, forcing many slaves to run away from their homes. Owners utilized a variety of means to recuperate their “escaped” property, including cash rewards and the Congressional passage of the Fugitive Slave Law in 1850.

The American Constitution bestowed upon its citizens the right to own property, but to own a human being was controversial and viewed by many Northerners and Abolitionists as an extreme violation of basic human rights, furthering ideological disparity between America’s North and South.

Fall of the Berlin Wall

Today, marks the 30th anniversary of the fall of the Berlin Wall. The Berlin Wall was a guarded concrete barrier that physically and ideologically divided Berlin from 1961 to 1989. Construction of the Wall was commenced by the German Democratic Republic on 13 August 1961. The Wall cut off West Berlin from surrounding East Germany, including East Berlin.

Demolished‎: ‎9 November 1989

Size‎: ‎155 km (96.3 mi)

Construction started‎: ‎13 August 1961

Communication Management Plans

A communication management plan is a document that will help guide a project. It is part of the overall plan for the project’s communication for the lifetime of the project, and will also define the communication requirements and how information is distributed during for the project. The Project Manager take a proactive role in ensuring effective communications on a project, taking a contingency approach to communicating with employees and communicate on a personal level. They can also suggested methods or technologies for conveying the information to the team and stakeholders and what will be the frequency of communication.

Project communications management is an important part of the project life span. Failure to communicate during the starting phases of a project may result in an unclear project scope and unrealistic schedule for each phase. A communication management plan’s goal is to ensure a timely and appropriate generation, collections, dissemination, storage and disposition of project information. One of the main things which should be address is the communication requirements for stakeholder; the people who may be impacted by the success or failure of a project. Therefore, inclusion of their perception regarding the project is important for the communication management plan’s success. Having a communication plan for stakeholders is an important element in project management, and needs to be carefully formulated. Its layout generally includes the stakeholder identified roles and the designed management strategy. The information to be communicated must have an appealing format, meaningful content, and good level of detail.

Stakeholder Management is an important discipline that any project manager can use to win support from others, helping to ensure that the projects succeed where others may have failed. Analysis of the project’s stakeholder is the technique used to identify the key people who have to be won over the life span of a project. Building the support that will help the project succeed. A project manager can use the opinions of the main stakeholders to shape projects at an early stage, making it more likely they will support you. Their input can also improve the quality of your project. A project which has gained main support from the stakeholders may win more resources, making more possible that the projects will be successful. By communicating with stakeholders early and frequently, the project manager can ensure that they fully understand what the team is doing and understand the benefits the project.

If issues starts to arise an escalation procedures for will help to resolving issues and may result in a revision procedures for updating the communication management plan. For communication to success each member of the project team needs to have a mixture of technical and soft skills, like social networking communication. If communication is still an issue a glossary of communication terminology can be used to help the project team communication on a more common ground. One popular communications method is weekly reporting method, when every employee composes an e-mail report, communicating the to team about information on their activities of the preceding week, plans for the following week, and any other information deemed relevant to the group.

In conclusion, a communication management plan is an extremely important part of leading a successful project. Project managers define how to format communications with their team members and stakeholders. Having a successful and clear relationship with stakeholders helps a project gain support and resources for a team. The support of stakeholders, a team’s hard and soft skills set contribute greatly to a project’s success and defined by the communication management plan.

Software Quality Management

Quality is defined as the sum of the total characteristics of a software entity that bears on its ability to satisfy or implied needs. The purpose of software project quality management is to ensure that the project will satisfy the needs for which it was undertaken. Managing the quality of a software project and its development processes must meet the requirements and satisfy the user’s experience. Businesses often make quality management a serious discipline a major component of their IT risk reduction strategy.

A software package must conform to the written requirements of the project’s processes and deliverables. When the project is “fit for use” is when the product can be used as it was intended, ensuring the product will satisfy the needs for which it was developed for. In the end the customer will decide of the quality of the software is acceptable or not. Design of experiments is a technique that helps to identify which variables have the most influence on the overall outcome of a process for understanding which variables affect the final outcome is an important part of quality planning.

There are many scope aspects of IT projects that affect the quality of a project are. The biggest aspect is the system’s functionality, the degree to which a system performs its intended function. A system must contain the features that have characteristics which are appealing to the intended user. After the user interacts with a system it must generates outputs which are shown on the screens and reports, it is important to define clearly what the screens and reports look like for a system. A system’s performance will address how the software package will perform to the customer’s intended use. To design a system with high-quality performance, project stakeholder must address many issues. Reliability is the ability of a product or service to perform as expected under normal conditions. Lastly, maintainability addresses the ease of performing maintenance on a product. If a software system breaks down after being implementing within a system, project team must review the project to fix the problem to give the user a future satisfying experience.

Planning quality management is the ability to anticipate situations and prepare actions that bring about the desired outcome. Having a plan for the software development life span help to stop a lot of the issues which comes from developing a software system. The first step is to define the quality to match the requirements of both the business and achieving a satisfying user experience. The second step is to broadcast a simple quality metrics, this helps to reduce defeats, as well as keeping the quality on the minds of the whole development team and expose when efforts fall short. Another possible step it to keep fine tuning the project’s goals to make sure the requirements are being meet and each user test of the system has a satisfying experience. Getting the requirements right the first design phase means the software would need to be reworked less and less retesting and troubleshooting code to test for bugs. Designing a simple application helps to lessen the risk for bugs and is easier to test and rework if needed.

Ransomware

What is Ransomware?  By now, most of us know that it ruins your files – mostly pictures, documents and other personally created items by encrypting them and asking for a “ransom” to decrypt them.   Ransomware is a vicious malware that locks users out of their devices or blocks access to files until a sum of money or ransom is paid. Attacks cause downtime, data loss, major financial loss and intellectual property theft.    If an attack makes it through a corporation’s defenses to even one computer – it can affect the entire network by encrypting and locking out files on network shared drives used by all employees thus potentially spreading to all computers.   Ransomware can enter the network via an email, computer, phone, tablet or a USB drive.   A file that is on an infected computer or USB drive and transferred to another computer can also cause infection and propagation.  Social media sites can also be used to transfer malware via links and file attachments.

 

95% of security breaches are due to human error and lack of employee training and knowledge

What can you do?

–       Be suspicious of every email you receive.  Treat each as a potential threat especially if there are attachments and links included

–       All of your computers including MAC computers should have a reputable antivirus service

–       Don’t share thumb drives on computers you don’t know or if you are not sure they are “clean”

–       Turn on the Windows firewall on your PC

–       Backup your data and secure those backups.

–       Be wary of what you are downloading on your computer

Quote to Ponder: “Live in the sunshine, swim in the sea, drink the wild air…” Ralph Waldo Emerson

What is cybersecurity?

Cybersecurity, or computer security, is the protection of computer systems from the theft or damage to their hardware, software, of electric data, as well as form the disruption or misdirection of the services they provide. The field is becoming more important due to increased reliance to computer systems, the Internet, wireless networks, and the growth of “smart devices.”

 

Vulnerabilities and attacks

A vulnerability is a weakness is design, implementation, operation or internal control. Most of the vulnerabilities that have been discovered are documented in the common vulnerabilities and exposures (CVE) database. An exploitable vulnerability is one for which at least on working attack or “exploit” exists. Vulnerabilities are often hunted or exploited with the aid or automated tools or manually using customized scripts. To secure a computer system, it is important to understand the attacks that can be made against it. Some of the Benefits of cybersecurity are:

  • Business protection malware, ransomware, phishing, and social engineering
  • Protection for data and networks
  • Prevention of unauthorized users
  • Improves recovery time after a breach
  • Protection for end users
  • Improved confidence in the product for both developers and customers

 

Types of cybersecurity Threats

The process of keeping up with new technologies, security treads and threat intelligence is a challenging and ongoing task.

#1 Ransomware: A type of malware that involves an attacker locking the victim’s computer system files, typically through encryption, and demanding a payment to decrypt and unlock them.  Paying the ransom does not guarantee that the file wills be recovered, or the system stored.

 

#2 – Malware: Any file or program used to harm a computer user or gain unauthorized access.

  • Worms
  • Virus
  • Trojan horses
  • Spyware

#3 – Social Engineering: An attack that relies on human interaction to trick users into breaking security procedures in order to gain information that is typically protected

#4 – Phishing: A form of fraud where fraudulent emails are sent that resemble emails from reputable sources; however, the intention of these emails is to steal sensitive data. This is the most common type of cyber-attack.

  • Credit Card
  • Login Information

 

Tenets of Information System Security

There are three protections that must be extended over information: confidentiality, integrity, and availability (CIA).

cia triad
Confidentiality, integrity and availability, also known as the CIA triad, is a model designed to guide policies for information security within an organization.

#1- Confidentially (Data Privacy)

It is important that only approved individuals can access important information, thus protecting the information from everyone except those with rights to access it. Implementing security controls to help reduce the risk of data leaks by Defining a set of rules that limits access to only authorized users can view information.

Putting an Information Technology security policy framework in place that outlines an identifies where security controls should be used. Protecting private data is the process of ensuring data confidentiality. Organizations must use proper security to this concern. Adopting a data classification standard that defines how to treat data throughout an IT infrastructure.

  • Private data of individuals
  • Intellectual property of businesses
  • Keep data private

 

#2 – Integrity (Validity and accuracy of data)

Integrity ensures that the information is correct and no unauthorized person or malicious software has altered the data. Data lacking integrity (inaccurate and not valid) are of no use to user and organizations.

  • Only authorized users can change information
  • Assurance that the information is trustworthy and accurate

 

#3- Availability (Data is accessible)

Information is accessible by authorized users whenever they request the information and has value if the authorized parties who are assured of its integrity can access the information. Also, information cannot be locked so tight that no one can access it.

Coupling and Cohesion

Coupling

Coupling is the degree of interdependence between software modules, and how closely connected the relation of two modules are. Modules should be as independent as possible from other modules, thus any changes to modules do not heavily impact other modules. Implementing a higher coupling relationship in modules would they are dependent on the inner workers of other modules. This would make changes harder to coordinate and increasing probably of functionality errors. By using low coupling, is often a sign of a well-structured system design. Changes are easier made to the internals of modules without the possibility of impact on other modules in the system. Code is easier to write, test and maintain since modules are not interdependent on each other.

Types of Coupling:

  • Data Coupling – the components are independent to each other and communicating through data.
  • Stamp Coupling – the complete data structure is passed from one module to another module.
  • Control Coupling – if the modules communicate by passing control information, then they are said to be control coupled
  • External Coupling – the modules depend on other modules.
  • Common Coupling – the modules have shared data such as global data structures.
  • Content Coupling – one module can modify the data of another module or control flow is passed from one module to the other module.

 

Cohesion

Cohesion often refers to the degree to which the elements of a module belong together. Everything in a module is meant to work together. The elements within the module are directly related to the functionality that module is meant to provide. Software can easily design, write, and test our code since the code for a module is all located together and works together. Low cohesion would mean that the code that makes up some functionality is spread out all over the code-base.

Types of Cohesion:

  • Functional Cohesion – every essential element for a single computation is contained in the component.
  • Sequential Cohesion – an element outputs some data that becomes the input for other element
  • Communicational Cohesion – two elements operate on the same input data or contribute towards the same output data
  • Procedural Cohesion – elements of procedural cohesion ensure the order of execution.
  • Temporal Cohesion – elements are related by their timing involved.
  • Logical Cohesion – elements are logically related
  • Coincidental Cohesion – the elements are not related

 

Example

A class to open a bank account would not try to handle both a savings account and checking account opening. High cohesion would say those go into different classes, yet low coupling says modules should not be dependent on each other.

In a higher cohesion software design was chosen implementing a class for checking and another for savings, would allow for an easier maintain of the bank account module. Also adding future features to one or two both classes, would be able easier to accomplish and less prone to software logic errors.

In a low coupling design, all states and behaviors of each account would have to be implementing. This would create a very lengthy module, and thus harder to maintain for future developers

Agile and UML

Agile as a process

Agile is a process by which a team can manage a project by breaking it up into several stages and involving constant collaboration with stakeholder and continuous improvement and iteration at every stage. The benefits of using agile are:

  • Enables teams to deliver value fast
  • Greater quality and predictability
  • Greater aptitude to respond to change
Agile Methodology
Agile Methodology

The agile methodology begins with clients describing how the final product will be used and what problem it will solve. This clarifies the customers expectations to the project team. Once the work starts, the team can cycle through a process of planning, executing, and evaluating. Collaboration is always continuous and key, among team members and stakeholders to make informed decisions about the project.

The main development values of using agile are:

  • Individuals and Interactions over processes and tools
  • Working Software over comprehensive documentation
  • Customer Collaboration over contract negotiation
  • Responding to Change over following a plan

Using agile requires each small team to be led by a scrum master whose main job is to clear away all obstacles to completing work. Work is done in short cycles called sprints, but the team meets daily to discuss current task and roadblocks that need clearing.

Agile Method Sprints
Agile Method Sprints

 

UML as a documentation system

The Unifies Modeling Language (UML) is a general-purpose, development, modeling language that is intended to provide a standard way to visualize the design of a system. There are several types of UML diagrams that each serves a different purpose regardless of whether it’s being designed before or after the implementation.

The two main categories of UML diagrams are:

  • Behavioral
  • Structural
Unified Modeling Language
Unified Modeling Language (UML)