Software Engineering Review 4.7

software crisis

Definition of software crisis

A series of problems encountered in the process of software development and maintenance

Manifestations of a software crisis

  • high cost
  • Software quality is not guaranteed
  • uncontrollable progress
  • very difficult to maintain

The software crisis contains two problems

  • How to develop software to meet growing and increasingly complex requirements
  • How to maintain a growing number of software products

Causes of the software crisis

  • high complexity
  • large scale
  • The factors affecting software productivity and quality are complex
  • Lack of guidance and assistance from effective system principles, principles, methods and tools

The Technical Solution to the Software Crisis

  • In 1968, the concept and thought of software engineering were proposed
  • Structured software development methods in the 1970s
  • Object-Oriented Software Development Methods of the 1980s

Definition of Software Engineering

Software engineering is an engineering discipline that studies software development and software management

Fundamentals of Software Engineering

  • Manage in strict accordance with the plans for each stage of the software life cycle
  • Adhere to stage review
  • Implement strict product controls
  • Using modern programming techniques
  • The members of the development team should be fewer but better
  • Results should be clearly scrutinizable
  • Recognize the need for continuous improvement of software engineering practices

software life cycle

Propose the meaning of software life cycle

  • Reduce the difficulty of the entire software development project
  • Facilitate the division of labor and cooperation between different personnel
  • Facilitate the adoption of advanced development methodologies and technologies at all stages
  • Facilitate the organization and management of the whole process of software development

Definition of software process

The software process is the framework for the tasks that need to be completed to build high-quality software, that is, a series of steps to form a software product, including intermediate products, resource roles, methods, tools, etc.

Software Capability Maturity Model (CMM)

(1) Initial level
Work is out of order, and the original plan
is often abandoned during the project process (2) Repeatable level
Management is institutionalized, basic management systems and procedures have been established, and management work has rules to follow
(3) Defined level has
established Perfect training system and expert review system, all technical activities and management activities can be controlled
(4) Managed level
Products and processes have established quantitative quality objectives, process databases have been established, and project product and process control has been achieved
(5) ) Optimization level
Can concentrate on improving the process, adopting new technologies and methods

waterfall model

features

  • Sequence and Dependency
  • deferred realization perspective
  • Document-driven, each stage must complete the prescribed documents
  • Complete document review before the end of each phase to correct errors early

shortcoming

  • Lack of flexibility, requirements phase requires all requirements
  • The running version of the program can only be obtained in the late stage of project development
  • Using a linear model to organize project development often leads to staff congestion in the development team

Applicable scene

  • Product requirements are determined and technical solutions are mature
  • The technical strength of the development team is weak and inexperienced
  • Quality requirements are higher than cost requirements and schedule requirements

rapid prototyping model

Prototype
In the software development process, an early working version of the software that reflects some important characteristics of the final system

Classification of prototype models

  • Disposable prototype
  • evolutionary prototype

advantage

  • learn by doing
  • improve customer relationship
  • Ensure the correctness of the main requirements
  • Overcome the shortcomings of the waterfall model and reduce the development risk caused by uncertain requirements
  • Reduce process documentation

shortcoming

  • Easy to degenerate into making changes while doing
  • Constructing a prototype costs 10% extra
  • The iteration cycle of the prototype is difficult to control

Applicable scene

  • The requirements of the project are not clear at the beginning of the project
  • Develop new products and verify technical feasibility

incremental model

Complete the development of a system subset first, and then increase the system subset according to the same development steps, and so on until all system requirements are met

Increment
Satisfies a subset of user needs, is a small but usable software that can complete a certain function

insert image description here

Each increment is an essential component of a waterfall model

advantage

  • Customers do not need to wait until the entire system is implemented
  • Early increments can be used as prototypes to gain experience with later increments
  • The overall risk of project failure is relatively low
  • System architectures receive the most testing

shortcoming

  • It is required that the software system to be developed can be modularized

Applicable scene

  • Most requirements are specified in the project, but requirements may change
  • Inaccurate grasp of the market and users, hoping to enter the market as soon as possible

spiral model

The spiral model combines the advantages of the traditional waterfall model and rapid prototyping model, while adding risk analysis
waterfall model + rapid prototyping model + risk analysis

advantage

  • Dynamic changes in support requirements
  • Early detection of bugs in software
  • Support risk analysis

shortcoming

  • Risk analysis requires rich knowledge and methods of risk assessment

Applicable scene

  • Large complex software systems with unclear or subject to change requirements
  • Support process-oriented and object-oriented development methods, with broad prospects

Unified Process Model RUP

Captures the best practices of modern software development

problem definition

what is problem definition

  • Establish project scope, identifying the problem domain of the new system to be developed
  • Functional partitioning of projects

Problem Definition Key Questions

  • How to resolve the problem
  • Describe the key issues of the problem clearly in natural language
  • Example problem definition

Problem Definition Report

insert image description here

feasibility study

Feasibility study premise

  • Assuming the problem definition is clear
  • Are there solutions to all problems?

Feasibility Study Objectives

  • Determine whether a problem has a feasible solution in the shortest possible time with the least cost

Feasibility study content

  • economic feasibility
  • technical feasibility
  • operational feasibility
  • social feasibility

Features of Feasibility Study

  • Not to solve the problem, but to determine whether it is solvable
  • 5%-10% of the total cost
  • Feasibility studies are generally undertaken by system analysts

Steps in Feasibility Study

  • Review system size and goals
  • Research systems currently in use
  • Determine the high-level logical model of the new system
  • redefine the problem
  • Recommended course of action
  • Draft software project development plan
  • Write a feasibility study report and submit it for review

System flow chart

System Flow Diagram SFD is used to describe the physical model of the system during the feasibility study phase

Cost-benefit analysis

Cost/benefit analysis analyzes whether it is cost-effective to develop a new system from an economic point of view, thereby helping the person in charge of the client organization make a correct decision whether to invest in software development

Cost Estimate

  • The cost of software is mainly personnel expenses, therefore, the cost estimate mainly estimates the workload
  • Estimate the workload of software development or maintenance, then calculate the proportion of the workload of various types of personnel, and then calculate the total salary of each type of personnel, and then calculate the cost of personnel expenses

demand analysis

demand problem

  • Requirements are the key to the success or failure of a software project
  • The sooner a requirement error is found, the sooner it is corrected, and the less expensive it is
  • Requirements are capabilities that the system must have
  • Characteristics of good requirements: unambiguous, complete, consistent, testable, certain, traceable, correct,

Requirements definition

  • What a user needs to solve a problem or achieve a goal
  • Conditions required for a system or system component to satisfy a contract, standard, specification, or other formally specified document
  • Documentation that reflects both conditions above

Nature of demand

  • necessary
  • Unambiguous
  • measurable
  • traceable

Classification of needs

  • Business needs
  • User needs
  • Software Functional Requirements
  • non-functional requirements

Business needs

  • The strategic starting point for the establishment of the system, expressed as a high-level goal
  • Features that the system should have
  • All parties involved build a common vision
  • Limit the scope of the system

User needs

  • User requirements refer to the description of what tasks users need to complete when using the software and how to complete them.
  • Usually, based on the definition of business requirements, through user interviews and surveys, the scenarios used by users are sorted out, so as to establish the requirements from the perspective of users
  • User requirements are the result of requirements capture

Functional Requirements

  • Software functional requirements can be directly mapped to system behavior, defining the functions that need to be implemented in the system, and describing what developers need to achieve
  • The process of converting user requirements into software functional requirements is a complex process

non-functional requirements

  • speed
  • capacity
  • throughput

object-oriented proposal

  • The first stage: centered on calculation,
    the analysis and design are carried out around the operating efficiency of the program and the pros and cons of the algorithm
  • The second stage: Process-centric
    Analysis and design are carried out around the data flow, and the business process is simulated by the data flow. Process-oriented design is based on program modules to build software structure
    Typical models: ER diagram, data flow diagram, state transition diagram, decision table, decision tree

Advantages of Object Orientation

  • From the perspective of cognition, the object-oriented method conforms to the laws of people's understanding of the objective world.
  • The software system developed by the object-oriented method is easy to maintain, and its architecture is easy to understand, expand and modify
  • The inheritance mechanism in the object-oriented method strongly supports software reuse

Guess you like

Origin blog.csdn.net/weixin_47020721/article/details/130005187