Software design method (reproduced)
In order to solve a problem on the platform, the last basic discovery can be implemented after a long time.
During migration to the project, we found that there was an issue that could not be solved by the platform. The problem has not been solved for a long time, and it is even unclear where the problem exists.
At last, my colleagues analyzed the problem step by step, and the system did not support this method.
In the process of solving this problem, I have been asking a colleague, although he always put out a logic andCode.
But I have to admit that he feels very good in the software development process.
"Efficiency, theory, method, and principle", while he is always trying to implement a function or solve a problem, he must go through theoretical analysis, derivation, simplification, and gradually achieve his goal,
What kind of method leads to what kind of results should be clear, and the problem should be resolved as much as possible, instead of being changed on the basis of the original, making it messy.
However, I always adopt a try attitude: it is not feasible to change it, but it is not feasible to try again ...... It is a kind of "try" attitude, without focusing on the principles of theoretical methods, and often feels chaotic.
Because of its electronic background, I have learned C ++ and data structures in a simple way. More problems should be caused by the lack of ideas.
So I deeply felt that I was too bad in this regard. I felt that I should take a look at the issues related to methods in software development.
So I found the following good article:Article
(Software) Design Method loaded from: http://www.chinaunix.net/jh/28/70767.html
Translated by Larry Brinn
1. Introduction
2. What is (software) design?
3. (software) Design Process
4. (software) Design Basics
5. (software) Design Methodology
6. (software) Design Documents
7. Object-oriented (software) Design
8. Conclusion
1 Introduction
1. How did you start a new project? Do you want to open your favorite rad tool and enter the code before jumping to the computer?
2 have you ever thought aboutProgramWhat will be executed or how the system operates the data?
3. Have you ever thought of writing down something to help remind you or clarify the logical implementation of your developed code? If you answer "no" to the first question and "yes" to other questions, you can skip this document. Otherwise, please read this article carefully.
You should have a plan, a blueprint, and a concise arrangement at hand for your problem solution. You must know where you want to get everything! Let's take a look at what is tricky to develop a program that can implement the features you have designed.
2. What is software design?
E.s. Taylor defines the design:
"... The process of applying various techniques and principles for the purpose of defining a device,
A process or a system in sufficient detail to permit its physical realization ."
"... Apply various technologies and principles and use them to define the physical implementation process of a device, program, or system in sufficient detail. "
For any engineering product or system,The absolute first step in the development phase is to determine the target concept of the manufacturing prototype or entity performance to be constructed in the future..
This step is jointly determined by a variety of intuition and judgment.
These include the experience of building similar models, a set of principles that lead the development of models, a set of standards for initiating quality evaluations, and the process of repeatedly modifying until the final design finalized.
Compared with other engineering disciplines, computer software design is still in its infancy and is constantly changing,
For example, update methods and betterAlgorithmSignificant evolution of analysis and understanding. The methodology of software design has only appeared for more than thirty years,
There is still a lack of depth, adaptability, and quantitative nature. It is usually more associated with classical engineering design disciplines.
Even so, today's software technology already exists, design quality standards can also be used, design symbols can also be applied.
With these opinions, let's take a look at what helps programmers find their software Nirvana ).
3. Design Process
Software DesignYesA process of transforming a requirement into a software statement. This statement gives us a global view of the software.
The system gradually keeps the design statement closeSource code. There are two basic steps;
The first step is the preliminary design of preliminary design, focusing on how to transform requirements into data and software frameworks.
The second step is to design detail design in detail, focusing on gradually refining the framework into specific data structures and algorithm expressions of software.
In-process design behavior, Data, algorithms, and program design all need to be combined by the clear act of Interface Design required by modern programs.
Interface DesignInterface Design establishes the program layout and Human-Computer Interaction Mechanism.
The quality throughout the design process is evaluated by a series of formal technical assessments formal technical reviews or design rehearsals throughs.
Good design specifications must be built on the evaluation of design statements (expressions). The following guidelines are provided:
1. design should be presentedHierarchyMakeControlMore wise.
2. The design shouldModularThat is to say, the software should be logically divided into implementationSpecific FeaturesAndSub-functions.
3. The design should be clear and feasibleSeparated DataAndProcess expression.
4. design should makeModuleDisplayIndependent.
5. The design should enable the interfaceBetween modulesAndAnd external environmentOfConnection complexity.
6. The design should be based on the softwareInformation obtained during Requirement AnalysisUse of the specified method that can be repeated.
YesGood DesignFeatures do not depend on luck, but are designed based on comprehensive application of basic settings.Principle,System methodology,Thorough evaluation reviewIt can be helpful for good design.
Software design methods evolve every day. As tested and refined methods, a good design should have the following four features and be consistent among all these features.
1. Expression in the information fieldConversionThe expression mechanism designed for the software.
2. representation functionComponentsAND ITS INTERFACESymbol.
3.RefinementAndTest of segmentation.
4. Guidelines for quality assessment.
When developing software, No matter what design method you adopt, you must be able to use a setData,AlgorithmAnd ProgrammingBasic Principles.
4. Software Design Basics
The basic principles of software design methodology have evolved over the years. Each concept has different degrees of influence, but they all experience the baptism of time.
Based on these basic principles, designers can adopt more mature design methods. These basic principles help designers answer the following questions:
1. Change the softwareSplit into independent componentsWhat standards will be adopted?
2. How to divide the principle representation of the software into functions or data structures in detail?
3. Have you defined a unified standard for the technical quality of software design?
M.a. Jackson once said: "for a computer programmer, tellProgram runningAnd letThe program is correct.The difference between them is a good start.
"To" make the program correct ", the basic design principle provides a necessary framework. So let's take a brief look at these basic principles.
1Abstract lateral action
At the highest level, the problem to be solved is used.Field term description. A relatively low level of abstraction is more programming languages,
The abstraction at the lowest layer is a description of the method that can be directly implemented by the solution. Every step of software design is an abstraction of corresponding levels of solutions.
2Refinement refinement
It is also called progressive refinement.Program details are continuously refinedTo develop program system strategies.
Step-by-Step decomposition of program abstraction until it becomesProgramming LanguageThe process also creates a program hierarchy. At this point, we need to consider more details, which also shows that refinement is actually a painstaking process.
3. modular modularity
The software can be separated and named separately.Addressable Components(Also called a module), which combines modules to meet the needs of the problem.
"Software modularization is the only property that allows intelligent management of programs. "In other words, it is easier to resolve a complex problem into small ones.
It should be explained that even if a system must be implemented like a single-chip microcomputer, it can adopt modular design.
4Software Architecture
Two important features of the program involved: 1)Hierarchy of modules. 2)Data Structure.
This is due toReal-world problemsImplicit definition andSoftware Solutions.
When each part of the problem is solved by one or more software elements, the evolution of software and data structures is consistent with the definition and solution of the problem.
This process represents the location between the software requirement analysis and design.
5Control level control hierarchy
It is also called the program structure, which describes the organization of the program component and represents the control level.
It does not describe the program aspect of the software, such as the process sequence, the determined event/command, or the work cycle.
The following hierarchical chart shows the communication flows between modules and the modules that are repeated (the blocks become black in the upper right corner ).
This chart describes a readable file, computes the value of each record, and writes a report to display the record information and completed calculations.
6Data Structure
Describes a singleLogical Relationship between data. The data structure specifies the data organization, access method, correlation level, and selection and processing of information.
The organization and complexity of data structures are limited by the flexibility of designers. The only limit is that the number of classic data structures hinders the emergence of more time-tested structures.
7Software Procedure
Focuses on processing details of each module and must provide a precise processing specification, includingEvent Sequence, AccurateJudgment point,Repeated operationAnd evenData Structure.
The program performance of the software is hierarchical, and the processing method should include the reference of all its sub-modules.
8Information Hiding
The rule is determined by the design.Module features should be invisible to other modules.
In other words, modules should be designed and specified to be included in the module and inaccessible to other modules, which is not required for other modules.
Hiding means that effective modularity can be achieved by defining a set of independent modules.Communication between modulesIt only includes the information necessary to implement software functions.
Using information hiding as a design standard brings the greatest benefit when you need to modify the system during testing or future maintenance.
5. Software Design Methodology
Let's traverse the four areas used to facilitate modular design during the design process:Module Modular,Data,ArchitecturalAndProgram proceduralDesign.
Module DesignModular design reduces complexity, facilitates modification, and makes it easier to support parallel development and implementation of different parts of the system.
The operation features provided by the module type are combinedTime History,Activation mechanism, AndControl Mode. Within the program structure, modules can be classified:
1. The sequential module is referenced and executed by the application, but cannot be interrupted from the apparent perspective.
2. the incremental module can be interrupted by the application and then restarted from the breakpoint.
3. Parallel parallel module, which can be executed simultaneously with other modules in a multi-processor environment.
Independent modules are easier to develop because functions can be divided, while interfaces are only used to ensure the independence of functions.
The independence of functions can be measured using two qualitative criteria:CohesionCohesion-MeasurementModule function strengthCorrelation, andCouplingCoupling-MeasurementInter-module dependency.
Data designData design first and some people firmly believe that it is the most important design behavior.
The impact of data structures and Program Complexity lead to a profound impact on software quality. This quality is implemented by the following principles:
1. system analysis principles applicable to function and behavior analysis should also apply to data.
2. All data structures and their respective operations should be determined.
3. Create a data dictionary to describe the data and program design in detail.
4. The underlying data design decision should be delayed to the later stages of the design process.
5. The data structure Statement (specific description) should only be known to those modules that directly use the data contained in this structure.
6. Useful data structures and operation libraries can be used as appropriate.
7. software design and programming languages should support the specification and implementation of abstract data types.
System DesignThe main objective of elastic tural design isModular DevelopmentOfProgram StructureAnd ExpressControl correlations between modules.
In addition, the system design integrates the program structure and data structure, as well as the interface definition that allows data to flow in the program.
This method encourages designersFocus on the overall design of the systemInstead of independent components in the system.
Different methods use different approaches to approach the origin of the system, but all these methods should recognize the importance of having a global concept of software.
Program DesignProcedural Design determines the program design after data, program structure, and Statement details algorithm are presented in a natural language similar to English.
The reason for using natural language is that when the vast majority of developers use natural language to communicate,
A newbie outside the group will be more likely to understand these instructions without learning.
Here is a problem:The program design must be explained in detail without ambiguity.But we all know that unambiguous natural language is not natural.
6. Software Design Documents
Development documents are valuable in any system. There are already many different developed document plans available for you to choose when creating a system.
A pretty good model is calledDesign Specifications(Note: The original hyperlink is invalid, so the original template cannot be obtained.
But there is also a set of document templates called APM by cker, which seems good. We may look at it later ...... ^_^ ).
When you look at the outline of this document, please pay attention to the details at all levels.
The first section shows the overall scope of the design results derived from system instructions and other definition documents.
The second part shows detailed descriptions of the support documentation. The third part is also called the design description, which is completed in the preliminary design stage.
Part 4 and 5 develop the content of the preliminary design stage to the detailed design stage. The sixth part shows the cross reference matrix to ensure the following two principles:
1. Use software design to meet all requirements.
2. Identify specific requirementsKey modules.
Part 7: it is necessary to test the system's functionality and correctness in the first step of developing a test program (STEP.
This section can be deleted if detailed test program specifications have been developed concurrently while the design specifications are being developed.
The eighth part describes in detail the considerations and requirements for the system package to the user site.
Part 9 and 10 of the remaining sections of the document cover algorithm descriptions, selection programs, list data, flowcharts, pseudocode, data flow charts, and all relevant information used in design specification development. it can be placed here.
7. Object-oriented (software) Design
So far, everything we have described in detail is the cornerstone of a widely used design methodology in the IT field.
Object-Oriented Design (OOD)Modular InformationAndProcessing MethodIt is not just a processing method to connect data objects and processing operations.
This process relies on three extremely important design concepts:Abstraction,Information Hiding, AndModular. All design methods strive to present these features;
However, only the Ood mechanism can enable designers to achieve all three features without increasing complexity or compromise.
In Ood, we haveObjects(Object ),Operations(Operation), andMessages(Message ).
Objects (object), also called a class, can be people, machines, commands, files, cars, houses, and so on. Operations (Operations ),
Contains private data structures and processing methods for transforming data structures. Messages (Message) is used to activate call operation control and object program construction.
This means that the shared part of an object is its interface, and the message moves between interfaces and specifies the operation of the object to be used,
But I don't know how the operation is implemented. The object determines how to execute the message after receiving the message.
Now let's take a look at how some tools in the object-oriented system are used:
1.Pseudocode-Commands that are similar to computer programming languages, but use languages that are similar to English, rather than real programming languages, to facilitate viewing program logic.
The following is an example of a record in a processing file:
Start)
Initialize Program (initialization program)
Read a record (read a record)
Process record)
Move record to print area (move record to print area)
Write a line (write a row)
End Job)
Stop run. (stop running)
2.Prototype-Steps for testing a software package's first version or model, or when the computer hardware is ready for production.
You can usually use your favorite rad tool to create.
3. ToeChart-
(Task tasks, object objects, event charts) are used to display tasks or jobs to be completed, objects to be executed, and events or actions to complete the process. See the following toe chart that adds two numbers:
Task object event
Main form onstartup
Enter the first number of edtfirstnumber user types in
Enter the second number edtsecondnumber user types in
Sum edtresult onclick
Program exit btnexit onclick
As you have seen in the previous example, this correctly shows what to execute, who to execute, and when to execute.