Avatar of admin

by admin

Life Cycles and Development Processes

September 30, 2007 in Software Project Management

A development process is a model that tells us how to build software.

  • Defines the stages
  • Defines the relationship between stages
  • Defines the activities needed at each stage

The life cycle consists of the entire life of a software as a sequence of activities. It is therefore very dependent on the development process.

Software Project Management is heavily dependent on the development process because you cannot expect to manage something if you do not know how it works.

In the early days of software project management, there was no well defined development process. Programmer were given a project and they would then head off to code and test until they were done. This was obviously not a very efficient way of doing things and so eventually the Waterfall Process was heavily adopted. The idea for the Waterfall Process came from other engineering fields where such a process was the effective way of proceeding because the desired end product was well defined right from the beginning. However, with software projects, this model did not work well because software projects usually involve using new technologies and techniques and the requirements for the final end product are always changing.

Some problems that therefore would occur when using the waterfall method were:

  • Late design breakage
    • Early success via paper designs and discussions in meetings but difficulty arising later during implementation and integration due to unforseen problems of complications.
    • Waterfall method forces band-aid solutions to problems since cannot go back to earlier stages of design. This results in a fragile and unmaintainable product.
  • Late risk resolution
    • Too few tangible facts known at start when initial requirements are defined.
    • Risks become apparent later, and are expensive to mitigate.
  • Requirement-driven functional decomposition
    • Attempting to define precise requirements and implement them exactly is not realistic.
    • Depends on requirements remaining constant.
  • Adversarial stakeholder relationships
    • Difficulty in defining exact requirements leads to prolonged paper document exchanges at the beginning of the development process.
    • Leads to contract disputes over misinterpretation of requirements.
  • Focus on documents and review meetings

Due to the weaknesses of the Waterfall Process, it has been replaced by the Iterative and Incremental Process. This process combines the waterfall process with an iterative process allowing each of the steps within the waterfall process to be re-visited many times throughout the development process.

Another model is the eXtreme Programming model. More about this can be read here.

[1] Prof. Shervin Shirmohammadi, University of Ottawa SEG4100 Course Notes, Lecture2

Avatar of admin

by admin

Secure System Design Principles

September 30, 2007 in Security in Computing

Specific design principles underlie the design and implementation of mechanisms for supporting policies. These principles build on the ideas of simplicity and restriction. Simplicity reduces the potential for inconsistencies within a policy or set of policies. Restriction minimizes the power of an entity. The entity can access only information it needs. [1]

Saltzer and Schroeder [2] describe eight principles on the ideas of simplicity and restriction:

  1. Principle of least privilege – states that a subject should be given only those privileges that it needs in order to complete a task.
    • If a subject does not need an access right, the subject should not have it.
    • The function of the subject should control the assignment of rights
      • If specific actions require that a subjects access right be augmented, those extra rights should be relinquished immediately on completion of the action.
    • Requires that processes be confined to as small a protection domain as possible.
  2. Privilege of fail-safe defaults – states that, unless a subject is given explicit access to an object, it should be denied access to that object.
    • Requires that the default access to an object be none.
    • If a subject is unable to complete its action or task, it should undo those changes it made in the security state of the system before it terminates so that even if the program fails the system is still safe.
  3. Principle of economy of mechanism – states that security mechanisms should be as simple as possible.
    • If a design and implementation are simple, fewer possibilities exist for errors.
    • The checking and testing process is less complex, because fewer components and cases need to be tested.
  4. Principle of complete mediation – requires that all accesses to objects be checked to ensure that they are allowed.
    • If the system checks that a user has permission to access a file and then permission is granted to access the resource, the next time the user requests that same file, the system should again check if the subject is still allowed to access the resource. Do not cache the results of the first check!
  5. Principle of open design – states that the security of mechanism should not depend on the secrecy of its design or implementation.
    • It should be assumed that attackers know or can find out all the design details of the system through some means and therefore secrecy of the design should not be part of the security.
  6. Principle of separation of privilege – states that a system should not grant permission based on a single condition.
  7. Principle of least common mechanism – states that mechanisms used to access resources should not be shared.
    • Sharing resources  provides a channel along which information can be transmitted, so this should be minimized.
  8. Principle of psychological acceptability- states that security mechanisms should not make the resource more difficult to access than if the security were not present.
    • Configuring and executing a program should be as easy and as intuitive as possible and any output should be clear, direct and useful.
    • If security related software is too complicated to configure, administrators may unintentionally setup the software in a nonsecure manner.

[1] Matt Bishop, Introduction to Computer Security, Addison-Wesley, 2005

[2] J. Saltzer and M. Schroeder, The Protection of Information in Computer Systems, Proceeding of the IEEE 63 (9), pp. 1278-1308 (Sep. 1975)

Avatar of admin

by admin

Understanding Computer Security

September 29, 2007 in Security in Computing

Computer security is concerned with three main components:

  • confidentiality
    • the concealment of information or resources. keeping information secret.
    • includes concealing the existence of data or information
    • includes resource hiding (concealing configuration or types of systems being used)
  • integrity
    • the trustworthiness of data or resources
    • preventing improper or unauthorized change of data or resources
    • considers the content of the information and the the source
      • source of the information will impact on its accuracy and credibility as well as the trust people will place in the information
  • availability
    • the ability to use the information or resources desired
      • is the system reliable? unavailable systems are not useful for anyone!

Threats

“A threat is a potential violation of security. The violation need not actually occur for there to be a threat. The fact that the violation might occur means that those actions that could cause it to occur must be guarded against. [1]”

Shirley divides threats into four main classes [2]:

  • disclosure
    • unauthorized access to information
  • deception
    • acceptance of false data
  • disruption
    • interruption or prevention of correct operation
  • usurpation
    • unauthorized control of some part of a system

Types of Threats

  • Snooping
    • unauthorized interception of information
    • form of disclosure
    • confidentiality services used to counter this type of threat
  • Modification or alteration
    • unauthorized change of information
    • form of deception, disruption or usurpation
    • integrity services used to counter this type of threat
  • Masquerading or spoofing
    • impersonation of one entity by another
    • form of deception and usurpation
    • integrity services used to counter this threat
  • Repudiation of origin
    • false denial that an entity sent or created something
    • form of deception
    • integrity mechanisms used to counter this threat
  • Denial of receipt
    • false denial that an entity received some information or a message
    • form of deception
    • integrity and availability mechanisms used to counter this threat
  • Delay
    • temporary inhibition of a service
    • form of usurpation
    • availability mechanisms used to counter this threat
  • Denial of service
    • long-term inhibition of a service
    • form of usurpation
    • availability mechanisms used to counter this threat

Critical to the study of security is the distinction between policy and mechanism

A security policy is a statement of what is, and what is not, allowed

A security mechanism is a method, tool, or procedure for enforcing a security policy.

Mechanism can be non-technical, such as requiring proof of identity before changing a password; in fact policies often require some procedural mechanisms that technology cannot enforce. [1]

Goals of Security

  • Prevention
    • Ensure that an attack fails
    • involves implementation of mechanisms that users cannot override and that are trusted to be implemented in a correct, unalterable way, so that the attacker cannot defeat the mechanism by changing it
    • very cumbersome and interfere with system use to the point that they can hinder normal use of the system
    • Example of a simple prevention mechanism that is widely accepted is passwords
  • Detection
    • useful when an attack cannot be prevented
    • can indicate the effectiveness of preventative measures
    • goal is to determine when an attack is taking place and to report it
  • Recovery
    • stop an attack and then assess and repair any damage caused
    • complex because they nature of each attack can be unique
    • recovery also involved the follow-up step of identification of the problem and then fixing of the vulnerability
    • restoration from system backups is an example of recovery

Assumptions and Trust

Designers of policies always make two assumptions:

1. The policy correctly and unambiguously partitions the set of system states into “secure” and “nonsecure” states.
2. The security mechanisms prevent the system from entering a “nonsecure” state.

If either assumption is erroneous, the system will be nonsecure. [1]

Assurance

How much can a system be trusted? Have specific tests been taken to ensure that the computer will function properly?

Specification

  • A formal statement of the desired functioning of the system
  • Can be informal or highly mathematical

Design

The design of a system translates the specifications into components that will implement them. The design is said to satisfy the specifications if, under all relevant circumstances, the design will not permit the system to violate those specifications. [1]

Implementation

Given a design, the implementation creates a system that satisfies that design. If the design also satisfies the specifications, then by transitivity the implementation will also satisfy the specifications. The difficulty is proving that a program correctly implements the design and specifications. A program is correct it its implementation performs as specified. [1]

Operational Issues

Any useful policy and mechanism must balance the benefits of the protection against the cost of designing, implementing, and using the mechanism. This balance can be determined by analyzing the risks of a security breach and the likelihood of it occurring.

Risk Analysis

The level of protection required is a function of the probability of an attack occurring and the effects of the attack should it succeed. If an attack is unlikely, protecting against it has lower priority. If the unlikely attack would cause long delays in an organizations ability to provide service but the likely attack would only be a nuisance, then more effort should be put into preventing the unlikely attack. [1]

Organizational and People Problems

Losses can still occur even with security protection in place. Losses are expected to be less than they would have been without any security measures. One problem is that the extra security can add complexity to operations so this may result in a loss of productivity. It is important to consider then if the reduced losses plus the loss in productivity is less than the loss that would have occurred without the security in the first place.

[1] Matt Bishop, Introduction to Computer Security, Addison-Wesley, 2005

[2] R.Shirley, Security Architecture for Internet Protocols: A Guide for Protocol Designs and Standards, Internet Draft: draft-irtf-psrg-secarch-sec1-00.txt (Nov. 1994)

Avatar of admin

by admin

Internetworking and the Internet Protocol

September 28, 2007 in Higher Layer Network Protocols

Network Layer [1]

  • Provides the upper layers with independence from data transmission and physical networking technologies
  • Responsible for sending data from source to destination (this includes the nodes in between and is therefore not end-to-end)
  • Responsible for requesting network facilities such as priority, bit-rate, etc…
  • Responsible for routing

Routing [1]

  • Autonomous System (AS) – set of networks and routers operated by a single organization
  • Interior Router Protocol (IRP) – passing routing information within an autonomous system
  • Exterior Router Protocol (ERP) – passing routing information between different autonomous systems

Routing Approaches [1]

  • Distance Vector Routing – each node exchanges information with its neighboring nodes (ex: Routing Information Protocol, RIP)
  • Link-state Routing – sends link costs of each of its network interfaces to all routers (not just neighboring). Typically used with a Dijkstra-based algorithm (ex: Open Shortest Path First, OSPF)
  • Path-vector Routing – router provides information about which networks can be reached by a given router and the autonomous systems that must be crossed (ex: Border Gateway Protocol, BGP)

TCP/IP Protocol Suite vs OSI[1]

Internet Architecture

In a TCP/IP internet, IP Routers provide interconnection among physical networks.[1]

Internet Protocol (IP)

  • The most-widely used internetworking protocol

Internetworking Requirements [1] – accommodate the differences among the networks which form the intenetwork.

  1. different addressing schemes
  2. different maximum packet size
  3. different network access mechanism
  4. different timeouts
  5. different transmission modes (connection oriented, connectionless)
  6. error control
  7. flow control

IP Header[1]

1. Different Addressing Scheme [1]

  • Introduce IP Address as a global address
  • All hosts on the internet must have a unique IP address
    • NOTE: Techniques such as IP-forwarding allow private IP addresses that might be duplicated somewhere else.

IP Address Classes[1]

IP address range[1]

Subnet and Subnet Masks [1]

  • Allow arbitrary complexity of internetworked LANs within an organization
  • Insulate overall internet from growth of network numbers and routing complexity
  • To rest of internet, site looks like single network
  • Each LAN is assigned a subnet number
  • Host portion of address is partitioned further into subnet number and host number
  • Local routers route within subnetted network
  • Subnet mask indicates which bits are subnet number and which are host number by doing a bitwise AND

2. Different Maximum Size [1]

Different networks have different Maximum Transmission Unit (MTU) sizes. What if a packet reaches a network and it exceeds the networks MTU? This can be solved with the following solution:

  • Use fragmentation to split large packets into smaller ones
  • Use reassembly at the destination only to put the fragments together and build the original packet

Fragmentation and Reassembly [1]

When to re-assemble

  • At destination – results in packets getting smaller as data traverses internet
  • Intermediate re-assembly
    • Need large buffers at routers
    • Buffers may fill with fragments
    • All fragments must go through same router
      • Inhibits dynamic routing

IP Fragmentation [1]

  • IP re-assembles at destination only
  • Uses fields in header
    • Data Unit Identifier (ID)
      • Identifies end system originated diagram
        • Source and destination address
        • Protocol layer generating data (ex: TCP)
        • Identification supplied by that layer
    • Data Length
      • Length of user data in octets
    • Offset
      • Position of fragment of user data in original datagram
      • In multiples of 64 bits (8 octets)
    • More flag
      • Indicates that this is not the last fragment

Dealing with Failure [1]

  • Re-assembly may fail if some fragments get lost
  • Re-assembly time out
    • Assigned to first fragment to arrive
    • If timeout expires before all fragments arrive, discard partial data

3. Different Network Access [1]

  • Solved by abstracting networking functions in the networking layer, and relying on Data Link Layer for networking access
  • Routers handle the difference in network access mechanism.

Address Mapping [1]

  • Sometimes, in order to reach a destination, there is no need to go through an IP router.
  • In such a case, the physical address can be used directly

ARP – Address Resolution Protocol

Reverse ARP

4. Different Timeout [1]

  • Problem: different networks use different timeout mechanisms.
  • Solution: Introduce the concept of Datagram Lifetime.
  • Datagrams could loop indefinitely
    • Consumes resources
    • Transport protocol may need upper bound on datagram life
  • Datagram marked with lifetime
    • Time to Live (TTL) field in IP
    • Once lifetime expires, datagram discarded (not forwarded)
    • Hop count
      • Decrement time to live on passing through each router

5. Different Transmission Modes [1]

  • Use a connectionless architecture
  • Advantage:
    • Flexibility
    • Robust
    • No unnecessary overhead
  • Disadvantages
    • Not guaranteed delivery
    • Not guaranteed order of delivery
    • Reliability is responsibility of upper layers (ex: TCP)

6. Error Control [1]

  • Minimal error control, done only for the header
  • Router should attempt to inform source if packet discarded (using ICMP)
  • Not guaranteed delivery
  • May inform higher layer protocol

7. Flow Control [1]

  •  Allows routers and/or stations to limit rate of incoming data
  • Limited in connectionless systems
  • Send flow control packets
    • Requesting reduced flow
  • ex: ICMP

[1] Prof. Shervin Shirmohammadi, University of Ottawa CEG4183 Course Notes, Lecture 2

Avatar of admin

by admin

Computer Networks and Protocols

September 23, 2007 in Higher Layer Network Protocols

Computer networks are any set of computers or devices connected together in order to share information or resources. A network can be very small (ex: a home network connecting 2 or more computers) or very large (ex: the internet). The actual physical medium of communication and the software controlling the communication are the two factors which limit the size and scalability of a network.

The set or rules which must be implemented in order to control communication is referred to as the protocols. The protocol defines the syntax, the semantics and the synchronization of communication. The protocols govern all aspects of the communication in such a way that two different computers can understand each other.

The protocols which enable communication between computers are human-made. There are several organizations responsible for creating standards such as:

When creating protocols for network communication, there are many issues which must be considered.

Generic Protocol Issues [1]

Error control – making a channel more reliable and handling lost or out of sequence messages

Flow control – avoid flooding a slower peer entity

Resource allocation – mediating contention for physical (ex: buffers) or logical (ex: data structures) resources

Fragmentation – dividing chunks of data into smaller pieces and subsequent re-assembly

Multiplexing – combining several higher layer sessions

Connection setup – initiating logical communication with peer entity

Addressing / naming – managing identifiers

Compression – reducing data rate

Encryption – provide data security

Timer management – bookkeeping and error recovery

“Virtually all networks in use today are based in some fashion on the Open Systems Interconnection (OSI) standard. OSI was developed in 1984 by the International Organization for Standardization (ISO), a global federation of national standards organizations representing approximately 130 countries. The core of this standard is the OSI Reference Model, a set of seven layers that define the different stages that data must go through to travel from one device to another over a network.” [2]

OSI Model

Functions of the OSI Layers [1]

Physical

  • The bits that are transmitted over the communication media
  • Deals with network hardware, bit encoding
  • Ex: copper, fiber, radio, satellite

Data Link

  • Activates, maintains, and deactivates the physical link between two adjacent nodes (node-to-node delivery)
  • Deals with framing, windowing, flow control, error detection and recovery

Network

  • Determines how best to route packets of data from source to destination via intermediate network nodes
  • Deals with addressing, routing, fragmentation, and congestion

Transport

  • Provides end-to-end message delivery and error recovery
  • Deals with end-to-end integrity and quality of service

Session

  • To establish, manage and terminate sessions
  • Controls the dialogue between two host applications
  • Reports exceptions to upper layers

Presentation

  • Resolves data representation differences
  • To translate, encrypt and compress data

Application

  • Perform functions to implement network applications
  • Ex: email, teleconferencing

The OSI model also has different Protocol Data Units (PDUs) associated with the different layers. The OSI diagram shown above defines these as follows:

  • Layer 1 – bit streams
  • Layer 2 – frames
  • Layer 3 – packets
  • Layer 4 – segments
  • Layer 5,6,7 – data

The ideas introduced above are essential in order to properly understand basic network principles such as line configuration, topology, transmission mode, categories of networks and internetworks.

Line Configuration

Point to Point Configuration[1]

 

Multipoint Configuration[1]

 

Topology

Mesh and Star Topology[1]

 

Tree and Bus Topology[1]

 

Ring and Hybrid Topology[1]

Transmission Mode

 

 

Simplex, Half Duplex and Full Duplex Transmission Modes[1]

Network Categories

Local Area Networks[1]

Metropolitain Area Network[1]

Wide Area Network[1]

An internetwork, the most famous of which is the Internet, is a connection of all of these different types networks together! Of course, knowing the different types of networks is only part of understanding how they communicate together. At the physical layer we have all of the physical components of these different networks, such as the hardware and communication media. At the next layer, we have the data link layer which responds to service requests from the network layer above it and and issues service requests to the physical layer below it.

The data link layer provides the functional and procedural means to transfer data between network entities and might provide the means to detect and possibly correct errors that may occur in the Physical layer. Examples of data link protocols are Ethernet for local area networks and PPP, HDLC and ADCCP for point-to-point connections. [3]

The three main services provided by the data link layer are:

  • line discipline – who should send now?
  • flow control – how much data should be sent?
  • error control – how can erros be corrected?

Line Discipline 0[1]

Line Discipline[1]

Line Discipline 2[1]

Line Discipline 3[1]

Line Discipline 4[1]

Flow Control 1[1]

Flow Control 2[1]

Error Control 1[1]

Error Control 2[1]

Error Control 3[1]

Error Control 4[1]

Error Control 5[1]

Error Control 6[1]

Error Control 7[1]

 

 

Connection Devices

Networking Devices

  • Repeaters
  • Bridges

Internetworking Devices

  • Routers
  • Gateways

Connecting Devices[1]

Routers [4]

Routers are specialized computers that send the messages of every Internet user speeding to their destinations along thousands of pathways. Much of the work to get a message from one computer to another is done by routers, because they’re the crucial devices that let messages flow between networks, rather than within networks.

One of the tools a router uses to decide where a packet should go is a configuration table. A configuration table is a collection of information, including:

  • Information on which connections lead to particular groups of addresses
  • Priorities for connections to be used
  • Rules for handling both routine and special cases of traffic

A configuration table can be as simple as a half-dozen lines in the smallest routers, but can grow to massive size and complexity in the very large routers that handle the bulk of Internet messages. A router, then, has two separate but related jobs:

  • The router ensures that information doesn’t go where it’s not needed. This is crucial for keeping large volumes of data from clogging the connections of “innocent bystanders.”
  • The router makes sure that information does make it to the intended destination.

Gateway [5]

In a communications network, a network node equipped for interfacing with another network that uses different protocols.

  • A gateway may contain devices such as protocol translators, impedance matching devices, rate converters, fault isolators, or signal translators as necessary to provide system interoperability. It also requires the establishment of mutually acceptable administrative procedures between the two networks.
  • A protocol translation/mapping gateway interconnects networks with different network protocol technologies by performing the required protocol conversions.

Repeater [6]

A repeater is an electronic device that receives a signal and retransmits it at a higher level or higher power, or onto the other side of an obstruction, so that the signal can cover longer distances without degradation.

Because repeaters work with the actual physical signal, and do not attempt to interpret the data being transmitted, they operate on the Physical layer, the first layer of the OSI model.

Bridge [7]

A network bridge connects multiple network segments at the data link layer (layer 2) of the OSI model. Bridges are similar to repeaters or network hubs, devices that connect network segments at the physical layer, however a bridge works by using bridging where traffic from one network is managed rather than simply rebroadcast to adjacent network segments.

[1] Prof. Shervin Shirmohammadi, University of Ottawa CEG4183 Course Notes, Lecture 1
[2] HowStuffWorks.com – How OSI Works
[3] Wikipedia – Data Link Layer
[4] HowStuffWorks.com – How Routers Work
[5] Wikipedia – Gateway (telecommunications)
[6] Wikipedia – Repeater
[7] Wikipedia – Network Bridge

Avatar of admin

by admin

Introduction to Software Project Management

September 18, 2007 in Software Project Management

Project Management is the discipline of organizing and managing resources (e.g. people) in such a way that the project is completed within defined scope, quality, time and cost constraints. A project is a temporary and one-time endeavor undertaken to create a unique product or service, which brings about beneficial change or added value. [3]

The goal of software project management is to understand, plan, measure and control the project such that it is delivered on time and on budget. This involves gathering requirements, managing risk, monitoring and controlling progress, and following a software development process.

Software project management requires trained and experienced Software Engineers in order to increase the likelihood of project success because software development for large projects is extremely complex and following strict engineering principles will help reduce the risks associated with the project.

Software project management is extremely important for the following reasons:

  • Software development is highly unpredictable: [as of 2007?] only about 10% of projects are delivered within initial budget and on schedule. [1]
  • Management has a greater effect on the success or failure of a project than technology advances. [1]
  • Too often there is too much scrap and rework. The entire process is very immature, not enough reuse. [1]

According to the 10th edition of the annual CHAOS report from The Standish Group, only 34% of projects are completed successfully. While this actually represents a huge improvement, there is obviously still room for more! Why have things started to get better?

Standish Chairman Jim Johnson says, “The primary reason is the projects have gotten a lot smaller. Doing projects with iterative processing as opposed to the waterfall method, which called for all project requirements to be defined up front, is a major step forward. [4]

Project failure in itself is not the only reason why software management is so important. When a project fails, not only is a product not delivered, but all the money invested in the product is also lost. Without proper software management, even completed projects will be delivered late and over budget. Take a look at some of these examples of expensive software failures.

The 2004 CHAOS report, entitled “CHAOS Chronicles,” found total U.S. project waste to be $55 billion, made up of $38 billion in lost dollar value and $17 billion in cost overruns. Total project spending was found to be $255 billion in the 2004 report.

In 1994, The Standish Group estimated U.S. IT projects wasted $140 billion—$80 billion of that from failed projects—out of a total of $250 billion in project spending. [4]

If the risk of failure and loss of money is not enough to convince you of the importance of proper software management, consider that some software will also put the lives of people at risk. Go read Software Horror Stories or History’s Worst Software Bugs to see some examples…

failures are universally unprejudiced: they happen in every country; to large companies and small; in commercial, nonprofit, and governmental organizations; and without regard to status or reputation. [5]

So why does software fail anyways? Here is the list from the IEEE Spectrum [5]:

  • Unrealistic or unarticulated project goals
  • Inaccurate estimates of needed resources
  • Badly defined system requirements
  • Poor reporting of the project’s status
  • Unmanaged risks
  • Poor communication among customers, developers, and users
  • Use of immature technology
  • Inability to handle the project’s complexity
  • Sloppy development practices
  • Poor project management
  • Stakeholder politics
  • Commercial pressures

Software project failures have a lot in common with airplane crashes. Just as pilots never intend to crash, software developers don’t aim to fail. When a commercial plane crashes, investigators look at many factors, such as the weather, maintenance records, the pilot’s disposition and training, and cultural factors within the airline. Similarly, we need to look at the business environment, technical management, project management, and organizational culture to get to the roots of software failures.

THE PILOT’S ACTIONS JUST BEFORE a plane crashes are always of great interest to investigators. That’s because the pilot is the ultimate decision-maker, responsible for the safe operation of the craft. Similarly, project managers play a crucial role in software projects and can be a major source of errors that lead to failure.

Bad decisions by project managers are probably the single greatest cause of software failures today. Poor technical management, by contrast, can lead to technical errors, but those can generally be isolated and fixed. However, a bad project management decision—such as hiring too few programmers or picking the wrong type of contract—can wreak havoc.

Project management decisions are often tricky precisely because they involve tradeoffs based on fuzzy or incomplete knowledge. Estimating how much an IT project will cost and how long it will take is as much art as science. The larger or more novel the project, the less accurate the estimates. It’s a running joke in the industry that IT project estimates are at best within 25 percent of their true value 75 percent of the time.

Poor project management takes many other forms, including bad communication, which creates an inhospitable atmosphere that increases turnover; not investing in staff training; and not reviewing the project’s progress at regular intervals. Any of these can help derail a software project. [5]

Another problem which distinguishes software engineering from other engineering fields is the fact that software is not concrete. There is a common misconception that software can be easily changed to do anything no matter which stage the project is currently at. If construction on a building or bridge is nearly complete, people understand that it is too late to make significant changes to the architecture or design. However with software, clients tend to have the impression that making changes are always easy even though the end result could be the equivalent to tearing down a nearly completed building!

A common misconception is that developing software means writing code, which is definitely not the case. Code writing itself only counts for about 40% of software development. There are many other important steps such as requirements, configuration, deployment and maintenance. [1]

The main goal of software project management is to try and reduce the risks involved with a project such that the project can then finish on budget and on time with all of the features desired by the clients..

Project management helps us achieve the following [1]:

  • Estimate the budget needed to complete the project before it starts and to monitor the progress so that at any given time we know how much a project has cost and how much more it will cost.
  • Estimate the time needed to complete at project before it starts and to monitor the progress so that at any given time we know how much time is left before completion.
  • Estimate which features can be developed in the given time and cost frame.
  • Monitors the project progress and so we know which features have been completed and which ones will be completed before the end of the project.
  • Software delivered must provide all the features specified in the requirements (feature complete). Project management therefore helps project managers re-negotiate features and requirements.

Software users are among the worst treated customer in engineering. It is taken for granted without much complaint that software has bugs, crashes from time to time, doesn’t work occasionally and is too complicated to install and use. Quality must be a given part of the scope; the completed features must be of high quality. [1]

Since project management is so important, we need to be able to rank organizations in terms of their software capability and maturity. We use the Capability and Maturity Model (CMM) to achieve this.

CMM ranks the software development process of a firm by using 5 levels of maturity

Level 1 – Initial

At maturity level 1, processes are usually ad hoc, and the organization usually does not provide a stable environment. Success in these organizations depends on the competence and heroics of the people in the organization, and not on the use of proven processes. In spite of this ad hoc, chaotic environment, maturity level 1 organizations often produce products and services that work; however, they frequently exceed the budget and schedule of their projects

Maturity level 1 organizations are characterized by a tendency to over commit, abandon processes in the time of crisis, and not be able to repeat their past successes again.Level 1 software project success depends on having high quality people.

Level 2 – Repeatable [Managed]

At maturity level 2, software development successes are repeatable. The processes may not repeat for all the projects in the organization. The organization may use some basic project management to track cost and schedule.

Process discipline helps ensure that existing practices are retained during times of stress. When these practices are in place, projects are performed and managed according to their documented plans.

Project status and the delivery of services are visible to management at defined points (for example, at major milestones and at the completion of major tasks).

Basic project management processes are established to track cost, schedule, and functionality. The minimum process discipline is in place to repeat earlier successes on projects with similar applications and scope. There is still a significant risk of exceeding cost and time estimates.

Level 3 – Defined

The organization’s set of standard processes, which are the basis for level 3, are established and improved over time. These standard processes are used to establish consistency across the organization. Projects establish their defined processes by the organization’s set of standard processes according to tailoring guidelines.

The organization’s management establishes process objectives based on the organization’s set of standard processes and ensures that these objectives are appropriately addressed.

A critical distinction between level 2 and level 3 is the scope of standards, process descriptions, and procedures. At level 2, the standards, process descriptions, and procedures may be quite different in each specific instance of the process (for example, on a particular project). At level 3, the standards, process descriptions, and procedures for a project are tailored from the organization’s set of standard processes to suit a particular project or organizational unit.

Effective project management system is implemented with the help of good project management software.

Level 4 – Quantitatively Managed

Using precise measurements, management can effectively control the software development effort. In particular, management can identify ways to adjust and adapt the process to particular projects without measurable losses of quality or deviations from specifications. Organizations at this level set quantitative quality goals for both software process and software maintenance. Subprocesses are selected that significantly contribute to overall process performance. These selected subprocesses are controlled using statistical and other quantitative techniques. A critical distinction between maturity level 3 and maturity level 4 is the predictability of process performance. At maturity level 4, the performance of processes is controlled using statistical and other quantitative techniques, and is quantitatively predictable. At maturity level 3, processes are only qualitatively predictable.

Level 5 – Optimizing

Maturity level 5 focuses on continually improving process performance through both incremental and innovative technological improvements. Quantitative process-improvement objectives for the organization are established, continually revised to reflect changing business objectives, and used as criteria in managing process improvement. The effects of deployed process improvements are measured and evaluated against the quantitative process-improvement objectives. Both the defined processes and the organization’s set of standard processes are targets of measurable improvement activities.

Process improvements to address common causes of process variation and measurably improve the organization’s processes are identified, evaluated, and deployed.

Optimizing processes that are nimble, adaptable and innovative depends on the participation of an empowered workforce aligned with the business values and objectives of the organization. The organization’s ability to rapidly respond to changes and opportunities is enhanced by finding ways to accelerate and share learning.

A critical distinction between maturity level 4 and maturity level 5 is the type of process variation addressed. At maturity level 4, processes are concerned with addressing special causes of process variation and providing statistical predictability of the results. Though processes may produce predictable results, the results may be insufficient to achieve the established objectives. At maturity level 5, processes are concerned with addressing common causes of process variation and changing the process (that is, shifting the mean of the process performance) to improve process performance (while maintaining statistical probability) to achieve the established quantitative process-improvement objectives.[2]

Project Performance Expectation

Project Performance Expectation[1]

Capability Maturity Model Key Process Areas

Initial

  • Ad hoc

Repeatable

  • Software Configuration Management
  • Software Quality Assurance
  • Software Subcontract Management
  • Software Project Tracking and Oversight
  • Software Project Planning
  • Requirements Management

Defined

  • Peer Reviews
  • Intergroup Coordination
  • Software Product Engineering
  • Integrated Software Management
  • Training Program
  • Organization Process Definition
  • Organization Process Focus

Managed

  • Software Quality Management
  • Quantitative Process Management

Optimizing

  • Process Change Management
  • Technology Change Management
  • Defect Prevention

Key Process Areas Across Categories

Key Process Areas [1]

[1] Prof. Shervin Shirmohammadi, University of Ottawa SEG4100 Course Notes, Lecture 1
[2] Wikipedia, Capability Maturtiy Model
[3] Wikipedia, Project Management
[4] Softwaremag.com, Standish: Project Success Rates Improved Over 10 Years
[5] Robert N. Charette, IEEE Spectrum, Why Software Fails

Avatar of admin

by admin

Microsoft vs General Motors

September 16, 2007 in Software Engineer Humor

At a recent computer expo (COMDEX), Bill Gates reportedly compared the computer industry with the auto industry and stated that :- “If GM had kept up with technology like the computer industry has, we would all be driving twenty-five dollar cars that got 1000 miles to the gallon.”

In response to Gates’ comments, General Motors issued a press release stating:

If GM had developed technology like Microsoft, we would all be driving cars with the following characteristics:

1. For no reason whatsoever your car would crash twice a day.

2. Every time they repainted the lines on the road you would have to buy a new car.

3. Occasionally your car would die on the freeway for no reason, and you would just accept this, restart and drive on.

4. Occasionally, executing a maneuver such as a left turn, would cause your car to shut down and refuse to restart, in which case you would have to reinstall the engine.

5. Only one person at a time could use the car, unless you bought “Car95″ or “CarNT”. But then you would have to buy more seats.

6. Macintosh would make a car that was powered by the sun, reliable, five times as fast, and twice as easy to drive, but would only work on five percent of the roads.

7. The oil, water temperature and alternator warning lights would be replaced by a single “general car default” warning light.

8. New seats would force everyone to have the same size butt.

9. The airbag system would say “Are you sure?” before going off.

10. Occasionally for no reason whatsoever, your car would lock you out and refuse to let you in until you simultaneously lifted the door handle, turned the key, and grab hold of the radio antenna.

11. GM would require all car buyers to also purchase a deluxe set of Rand McNally road maps (now a GM subsidiary), even though they neither need them nor want them. Attempting to delete this option would immediately cause the car’s performance to diminish by 50% or more. Moreover, GM would become a target for investigation by the Justice Department.

12. Every time GM introduced a new model car buyers would have to learn to drive all over again because none of the controls would operate in the same manner as the old car.

13. You’d press the “start” button to shut off the engine.

Thank you lifeisajoke for this one!