Basic Principles of software development (I)-policies and Factors

Source: Internet
Author: User

Preface

 

I have been writing technology for some time.ArticleNow I want to change my taste and talk about software development from the perspective of software development process and project management. I also know that talking about software development from these two perspectives is a very risky thing for thetalists. It is not like technology. If it is right or wrong, there is an objective criterion, if someone else wants to spray it, you have to study it and wait until you get enough arguments to spray it. However, the development process is different from the project management process, other people just rely on a little bit of so-called management experience or even subjective inference, and you will be able to get your body intact, and you will be able to shake your feet ~ Because there are no so-called fact standards and effective software development processes and project management methods. Conservatively estimated that at least 100 of the 150 people have an idea. This seat is well aware of the dangers. Therefore, we should avoid the most serious risks. We will discuss the relevant issues from a macro perspective from the basic principle, and try to minimize the chance of a bullet. Everyone is welcome to speak freely ^ _*

 

Note: a large number of images and materials in this article are from rapid development (Steve McConnell 1996)

 

1 Overview

 

Time--Cost--Quality (or characteristics)Three key indicators are used to evaluate the success or failure of software projects. These three indicators affect and constrain each other and form a so-called "Project Management Triangle ". Improving quality or adding features means increasing cost and time, or both; to reduce the development cost or cost without changing the time, it means the quality or feature reduction.

 

Figure 1-1 Project Management Triangle

 

The above analysis is only a theoretical "ideal balance. In actual work, the following situations often occur:Either the time exceeds the plan, the cost exceeds the budget, or the quality fails to meet the requirements, or the three indicators fail to meet expectations.

 

Typical Example:

Due to the customer's pressure, we need to reduce the development time as much as possible. Due to the competition and profit pressure between enterprises, we need to save the cost as much as possible. Therefore, we need to work for two people by one person for two months, meanwhile, demands analysis, design, testing, review and project meetings are compressed. It is conceivable that even if the software build phase can be completed on time, the quality of the software is hard to guarantee. Even worse: due to poor quality, many problems will be exposed during the integration test of the system after the build phase ends: there are errors in understanding certain requirements, as a result, this part of the function needs to be re-analyzed, designed, coded, and tested. The lack of overall thinking in Architecture Design leads to different modules of the system to be independent, resulting in a large number of repeated and difficult to maintain.CodeThe code is too hasty, causing a lot of bugsModule Interface incompatibility due to poor communication ...... As a result, the project is brought into an infinite loop of changes. Even if the project is barely released, the changes continue until the end, And no one dares to approach the code.

 

Software development projects have their own rules and principles. Only by complying with the principles and putting them into practice can the projects move forward healthily and stably. This article describes the basic principles of software development. It is universal and applies to almost all software development projects. Different projects can define corresponding project development practices under the guidance of principles based on their own characteristics.

 

2 Policies and Factors

 

2.1 Overall strategy

To avoid chaotic and inefficient development, everyone is required to give up some of their bad habits and achieve rapid development by taking the following four strategies:

1,Avoid typical errors

2,Lay a good foundation for development

3,Manage risks to avoid disasters

4,Adopt progress-oriented practices

Figure 2.1-1 four pillars of rapid development

 

Typical error:It refers to some ineffective development practices that are often used by many people, such as unrealistic expectations, lack of plans, function spread and silver bullet syndrome. This article will be detailed in chapter 3rd.

Development basics:It refers to the activities and activities in terms of management, technology, and quality assurance during project development, such as planning, demand management, and technical review. This article will be detailed in chapter 4th.

Risk management:It refers to the evaluation and control of risks that may affect the project. The risks related to the schedule will be discussed in chapter 5th.

There are three types of progress-oriented practices:

      • Speed-oriented practices:It can increase the development speed and help you deliver software faster.
      • Progress-oriented practices:It can reduce planning risks and help your project smoothly advance.
      • Visualization-oriented practices:It can increase the visualization of processes and help you grasp the project dynamics.

 

Figure 2.1-2 Progress-oriented practices

 

The first three pillars shown in figure 2.1-1 provide the most important support for the possible best progress. Although they may not be the most ideal, they are the most needed. That is to say, even if you do not use the progress-oriented practice method, you may achieve a relatively optimized project progress. However, if you only rely on the progress-oriented practice, you cannot support the possible best progress plan.

 

Figure 2.1-3 dependency on progress-oriented practices is insufficient to support the best schedule

 

2.2 four-dimensional Software Development

Each software project has four important dimensions:

    • Personnel: the task is either fast or slow.
    • Process: optimizes the efficiency of personnel or wastes time.
    • Product: defined in the form of self-improvement, or in the form of hindering personnel to achieve the best effect
    • Technology: promotes or hinders development

Figure 2.2-1 four-dimensional development speed

 

2.2.1 personnel

 

Research data: 

 

Personnel greatly affects production efficiency. Any organization that focuses on improving production efficiency must first have a set of good personnel incentives, Team Cooperation, employee selection and training mechanisms.

 

How to maximize the potential of people and shorten the project cycle:

 

1,Project member selection

Five Principles:

    • Use fewer and better people
    • Match tasks with personnel skills and motivations
    • Help people implement themselves, rather than forcibly pushing them to the positions he has the most experience or needs the most.
    • Personnel Selection should emphasize the complementarity and coordination between personnel
    • Exclude or replace incompetent personnel as soon as possible

 

2,Team Structure

The personnel organization method has a great impact on the personnel's work efficiency. The project team should be adjusted to match the project scale, product characteristics, and progress objectives. Specific software projects can also benefit from appropriate specialized organizations.

 

3,Personnel Incentive

Personnel motivation can motivate people and make extra effort; it applies to different organizations, different projects, and different people. Personnel motivation is the most promising way to achieve rapid development.

 

2.2.2 Process

 

Research data:

Hughes Aircraft, Lockheed, Motorola, NASA, RaytheonAnd XeroxBy improving the development process, the organization has reduced the product time to market by half, reducing costs and reducing errors by 1/3 ~ 1/10.

 

A process is a set of workflows and activities defined in the software development lifecycle. It can be summarized into the following three types:

    • Basic Process: including acquisition process, supply process, development process, operation process, maintenance process and management process
    • Supporting process: including document process, configuration management process, quality assurance process, verification process, validation process, joint review process, audit process and problem solving process
    • Organizational Process: including infrastructure process, improvement process, and training process

 

Ignoring the process may cause low work efficiency, overlapping work objectives, and difficult to guarantee product quality. On the other hand, if the process is too strict or too bureaucratic, it will also dampen the enthusiasm of personnel, or the actual work efficiency is affected due to the high cost of the execution process.

 

Organizations can crop and adjust existing processes to work out processes suitable for specific projects, or define processes from the beginning for the project. Whether it is a cropping or defining process, we should focus on the following aspects:

 

1,Avoid Rework

One of the most direct ways to save time for a software project is to determine the process and avoid repetitive work. If the requirements change at the final stage of the project, you may have to re-design, code, and test. If the design problem is not found until the system test stage, you may have to discard the detailed design and code.

 

2,Quality assurance

Quality assurance has two objectives:

    • Ensure that the delivered products reach an acceptable quality level
    • Identify errors at minimal time and cost in each phase

 

As early as possible when an error occurs, the longer the error stays in the product, the more time the error takes and the more cost. Quality assurance is an essential part of any development process.

 

3,Development Basics

A series of software engineering practices form the Development Foundation, such as analysis, design, construction, integration and testing. Pay attention to the Development basics during the process, and define good work standards and task sets to prevent the project from getting out of control.

 

4,Risk Management

Schedule-related risk management is a necessary part of the development process. Although risk management cannot directly increase the development speed, it is an effective practice to avoid project disasters.

 

5,Resource target 

Resources include human resources, environmental resources, software and hardware resources, etc. Optimizing resource allocation helps increase productivity.

 

6,Lifecycle plan

A Life Cycle plan is a basic management plan that helps you determine the set of activities and resource allocation for a software project. Each cycle model has its applicability and disadvantages. selecting an appropriate life cycle model for a project can effectively improve work efficiency or reduce project risks.

Figure 2.2.2-1 pure Waterfall Model

 

Figure 2.2.2-2 another form of Waterfall Model-Salmon life cycle model

Figure 2.2.2-3 encoding correction model (an nonstandard Model)

 

Figure 2.2.2-4 Spiral Model

 

Figure 2.2.2-5 sashboard Model

 

Figure 2.2.2-6 Waterfall Model with subitem

Figure 2.2.2-7 waterfall model that can reduce risks (spiral model is used for demand analysis and Architecture Design)

Figure 2.2.2-8 progressive prototype

 

 

Figure 2.2.2-9 Delivery Model

 

Figure 2.2.2-10 Progress-oriented model

Figure 2.2.2-11 progressive delivery model

 

Figure 2.2.2-12 design model for development tools

 

 

7,Customer-oriented development

Who is the customer?

The understanding of the customer depends on the situation, which may be the project principal, end user, marketing personnel or boss.

 

Modern software development is very concerned with the customer's needs and expectations. Only half of the work is completed to develop software with the product specification, and the other half is to help the customer configure the features that the product can achieve, the implementation of these features usually takes much more time than determining the product specifications on paper.

Considering the problem from the customer's perspective is the best way to avoid heavy rework. At the same time, an effective customer communication channel should be established to properly control the customer's expectations.

 

2.2.3 Product

 

The most practical dimension of software development is the product dimension. The focus on the product scale and features represents a huge opportunity to shorten the schedule. Product development cycle can be shortened when product functions are reduced.

 

1,Product Scale

Product scale is one of the most influential factors on the development progress. The workload required for building software is growing much faster than the product scale, and the growth is not proportional, so the scale of the product will greatly increase the development speed. Half of medium-scale software can usually reduce the workload by 2/3.

 

2,Product Features

Some non-functional requirements or additional concerns of the product will affect the design complexity and build workload, products that require high performance, stability, maintainability, and scalability require a longer development cycle than those that do not.

 

2.2.4 Technology

 

Switching from inefficient tools to efficient tools is a quick way to improve development speed. Selecting effective tools and managing the risks also increases the development speed.

 

Coming soon: Basic Principles of software development (II)-Typical errors

Codeproject

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.