Learning a bit slowly, 15 episodes of video will be nearly watched for 10 days. But it was good to read and the record was acceptable. Otherwise, do not work hard again. All right, cut the crap, look at my summary.
In general, we all think about a term. Most people tend to think about what it is and what it is (meaning). Let's get to know the magic of the world of soft work.
Software engineering (software Engineering, referred to as SE), is a study of engineering methods to build and maintain effective, practical and high-quality software disciplines, is software-related engineering, and software is what, software is the system and hardware interdependent part of the other , including a complete set of programs, data, and their associated documents.
So, here comes the question, the program, the data, the documentation.
program : sequence of instructions according to the functional and performance requirements of the design. Data : The data structure of the normal operation information. Documentation : Application development, maintenance and use of the amount of graphic material
In fact, there is no specific definition of software engineering, different companies have different interpretations:
Boehm: Use of modern scientific and technological knowledge to design and construct computer programs and relevant documentation necessary for the development, operation and maintenance of programs
IEEE: A system approach for software engineers to develop, run, maintain, and repair software
Fritz Bauer: Establish and use a sound engineering principle, a series of methods to obtain reliable software that can operate effectively on the actual machine with more economical means
What characteristics.
1. Logical entities, non-physical entities (abstract)
2. Different production and hardware, no obvious manufacturing process during the development process
3. During operation and use, no mechanical wear and tear of hardware, aging problem
4. Development and operation of hand system limitations, with varying degrees of dependence
5. Still not completely free from manual operation
6. itself complex (actual problem, logical structure)
7. Cost-prohibitive
8. Many design social factors (intellectual property, etc.)
Other areas of understanding:
There are many kinds of classifications . According to the function divides into the system software, the support software, the application software, divides according to the scale, has the miniature, small, medium, large, very large, the large scale, also has according to the work way, the service object, the use frequency, the failure influence and so on distinction.
Fundamentals of software Engineering:
1. Rigorous management with phased life cycle planning
2. Adhere to the stage review
3. Implement strict Product control
4. Using modern programming techniques
5. The results should be able to clearly examine
6. People who make reasonable arrangements for the Software development team (few but good)
7. Recognition of the need for continuous improvement in software engineering practices
The basic objectives of the Software engineering project are:
Pay lower development costs
Meet the required software features
Achieve better software performance
Software developed for easy portability
Requires lower maintenance costs
Be able to complete development work on time and deliver it instantly
Principles of Software Engineering: decomposition, independence, consistency, certainty
life cycle (six phases): (from development to abandonment) problem definition, feasibility study, requirement analysis, design, coding, testing, operation and maintenance ; three phases: software planning, development, and maintenance phases
Software development models, such as waterfall models, B-models, rapid prototyping models (rapidprototyping model), evolutionary models, incremental models, helical models, etc.
Through the above understanding of software engineering, then we may think to do a software has what, do not do it, then we see how to do it.
If you start the software directly, then why also call the program engineering, directly called programming is not finished. In fact, software engineers engineering, need to consider all aspects, not only to create software, but also for the software description, as well as maintenance, so that non-professional people know how to use and maintain software, this is the focus. So for non-professionals to understand, you need to create a variety of documents. Since I have not finished the video, I can only introduce the documents I understand.
The document is a software specification that specifies the function and operating environment of the software, satisfies the specifications and completes the customer's requirements. Features of the SOFTWARE specification: easy to understand, visibility, support, acceptability, reliability, robustness, maintainability, speed.
First, the second chapter introduces the Feasibility study report .
Feasibility Study Steps :
Review system size and objectives
Study the systems that are currently in use
High-level logic models for new systems everywhere
Recommend methods to users
Recommend a course of action and make critical decisions
Draft development plan, write feasibility report
Submit to superior and expert review
Software Plan content
Software function scale, software capability to hardware requirements, interface interface nature and complexity, etc.
Environmental Resources:
Human resources, at different stages of the requirements of different personnel
Hardware, including target machines, and other machines
Software, including post-support software and use software
Develop schedules, including delivery dates, how to organize and distribute power
Software costs, as long as both parties can accept (estimate)
Resource Performance Description: What level of people, what kind of functional performance of hardware and software
Price Assessment
Impact factors: Population, products, engineering, resources
1. Parametric algorithm
C=f (Vi); C is the software price, vi selected independent parameters affecting the price of the software
2. Line of code (LOC) Price estimation technology
For parameters: Source code line, is the SOFTWARE PRODUCT unit of measure, does not include comments, job commands ...
The length of time a person participates in labor.
Software productivity, amount of software completed per unit of work time
Loc calculation method, the functional decomposition of the design system, according to historical data and experience to select the LOC price per software function block
3. Task Decomposition method
Thought: firstly, the software development project is decomposed into several relatively independent tasks, then the cost of each development task is estimated separately, and the total cost is summed up at the end.
4. Automatic Cost Estimation method
To alleviate human labor but to have a lot of empirical data to do the basis, to have the Wolf Howling database system support
Cost/benefit analysis
Cost Estimation method: Top-down valuation, bottom-up valuation
Cost/Benefit Analysis method:
Operating fee: Depending on the operating costs and maintenance costs of the system
The economic benefits of the system: increased revenue from the new system and operating costs saved by the new system; system economic benefits generally exist throughout the life cycle
Project Development Plan
Introduction: Purpose of writing, project background, definition, reference material
Project Description: Work content, conditions and restrictions, products, operating environment, services, acceptance criteria
Implementation plan: Task decomposition, progress, budget, key issues
Personnel organization and division of Labor
Delivery deadlines
Thematic plan Highlights
The third chapter is about software requirements
task : In-depth description of software functionality and performance
Determine the constraints of software design and the interface details of soft armor with other system elements
Define other validity requirements of the software (with the help of the logic model of the current system, the logical model of the target system, and solve the "what" problem of the target system)
Requirements include: functional requirements, performance requirements, environmental requirements, reliability requirements, security requirements, user interface requirements, data usage requirements, cost consumption requirements, development progress requirements, pre-estimate the possible goals of the system
method Commonality:
Mechanisms to support data domain analysis
Method of function representation
Definition of the interface
The mechanism of problem decomposition and the support for abstraction
Logical and physical views
System Abstraction Model
the principle of software requirement analysis
Information domains and functional domains that need to be able to express and understand problems
To be able to decompose and refine the problem in a hierarchical way
principles of software Requirements Specification
Separating functions from reality describes what to "do" rather than "how it is done"
Requires a processing-oriented specification language (or System definition language)
Software Requirements Approach
System Analysis process and its presentation method of information and functional domains of software problems
Mostly information-driven (stream of traffic, not including control)
Structured Analysis method
Data flow oriented
Using Data processing type software
Data flow Diagram (DFD): Expressing software requirements by means
the role of the streaming diagram:
1. System analysts use this tool to analyze system information flow from top to bottom
2. You can draw the parts of the picture that require computer processing
3. According to data storage (Zhu), further data analysis, to the database design transition
4. According to the data flow, set the access mode
5. Corresponding to a processing process, with the corresponding language, Judgment table and other tools to express the processing method
advantages and disadvantages of the streaming diagram:
1. The overall concept is strong, each layer has a clear emphasis on "what", "what Needs", "give what"
2. Can reflect the flow of data and processing process
3. Due to top-down analysis, it is easy to detect the logic errors of various parts of the system early and easy to correct
4. Easy to work with the computer relative photos
5. Not intuitive, generally in the operation process analysis based on the summary, abstraction, correction to get
6. If there is no computer system help, manual drawing is too cumbersome, heavy workload
principles for checking and modifying the streaming diagram
1. All graphical symbols on the streaming diagram are limited to the four basic graphic elements mentioned above
2. The main diagram of the streaming diagram must include the above four basic elements, indispensable
3. At least one input data stream and one output data stream per processing
4. In the streaming diagram, the processing box must be numbered by layer. The number indicates the parent-child relationship between the level of the processing and the upper and lower layers
5. Specify that any data stream sub-diagram must correspond to one of its previous layers, both the input data stream and the output data stream must be consistent
6. Each element on the diagram must have a name
7. Control flow cannot be entrained in the streaming diagram
8. You can omit trivial details to focus on the primary data stream when you first draw
9. No cross-stacking is allowed
Data Dictionary
Coordinate with data flow chart to clearly express the requirements
(main) Entry description--Definition of graphical elements (name, alias or number, classification, description, definition, location, other etc.)
Tools for writing logic descriptions :
structured English , a language between natural and formal languages, is defined by English command verbs, data dictionaries, limited custom words, logical relations if_then_else, case_of, While_do, Repeat_ Until and so on, the text of the language is segmented with the basic control structure, the operation is represented by natural language phrase, and its basic control structure has three kinds: simple statement sentence structure; repeating structure; judging structure
decision Table (lists the various logic through the list)
The first condition is the final optimization of the action, and the optimization begins with the action.
Describe the basic description of the processing, the application of multiple logic, clearly describe the complex combination of conditions and the corresponding action should be done, but can not express the uncertainty of processing, repetitive cycle processing
Decision Tree (representation of logical composition by tree graph)
A tool used to express processing logic, sometimes more intuitive than a judgment table.
Advantages: Simple form, intuitive, the decision table of the number of data sources more than two times, the decision table write not more, the decision tree comparison image
Insufficient: less concise than the judgment table, the closer the leaves to the more places
Other also has the i/p/o diagram , the level block diagram, thePHA diagram and so on, does not do the detailed introduction.
How to choose a tool:
1. from the readability of the machine : structured English, Judgment table better than the decision tree
2. from the perspective of the description: The decision tree is better
3. for logic validation and optimization : The decision table is good (all possibilities are listed)
Prototyping Method
Early development, complete and accurate specifications are not easy to get, users tend to the system only a vague idea, difficult to fully accurately express the overall requirements of the system
Classification of software prototypes:
Exploratory type |
Explore Requirements Analysis |
Experimental type |
Get Data |
Evolutionary type (evolutionary or progressive type) |
To start the target system as the core of continuous improvement |
The most common method of dynamic analysis
A state migration diagram is a graphical representation of how the state of a system is corresponding to an external signal, and the circle "0" represents the system state that can be obtained, and the Arrow "→" represents a migration from one state to another, ". "Represents the event of a transfer that is a system. Advantages: simple, mechanical analysis of many cases, easy machine where analysis tools, such as the transition to a State migration table, processing function strong; The relationship between states is intuitive (cannot have cross-unclear)
Time Series diagrams (Sequence Diagram), also known as sequence diagrams or sequential or sequential plots, are UML interaction diagrams. It shows the dynamic collaboration between multiple objects by describing the chronological order in which messages are sent between objects. It can represent the sequence of behavior of a use case, and when a routine is performed, each message in a sequence diagram corresponds to a class operation or trigger event that causes a transition in the state machine.
Petri nets abbreviated as PNG (Petri net Graph), widely used in the development of hardware and software systems, for the description and analysis of the mutual independent, cooperative operation of the processing system, that is, the concurrent execution of the processing system; tag, or token, is a flag indicating what state the system is currently in
the fourth chapter introduces the software summary design manual and the detailed design manual
The fourth chapter describes the design of software.
process steps for the overview design :
S1: Design System Solutions
S2: Choose a reasonable set of scenarios
S3: Recommended Best Practices
S4: Functional decomposition
S5: Software Architecture Design
S6: Design of database design and file structure
S7: Develop a test plan
S8: Writing a summary design document
S9: Review and reexamination Overview design documentation
the concept and principle of software design
1. The basis for dividing the software into several independent components
2. How to represent functional details and data structures within different components
3. How to measure the technical quality of the software
goals and tasks of software design
Based on the software requirements expressed in the information domain, as well as the functional and performance requirements,
Data design
System Structure Design
Process Design
Note: General first concept design, after detailed design
the process of software design:
Develop specifications
The overall design of software system structure
Processing mode Design
Data structure Design
Reliability Design (Quality design)
Prepare documentation for the summary design phase (summary design specification and database specification, complete user manual)
Summary Design Review
Software design basics:
top-down, progressive refinement
Architecture top-down approach, each level of process detail and data detail-by-layer refinement
Software architecture
Structure of the module structure and data
Decomposition of a problem into sub-problems, and then do not solve sub-problem (sub-problem development workload is less than the original problem development workload "math problem")
The program structure is divided into two types
tree structure (hierarchical structure):
Clear hierarchy, only one node, no secondary nodes, multiple child nodes (there is no connection between the brothers, only related to the parent node); portrait depth, horizontal call fast read, each node input called fan in, output called fan out
Mesh Structure :
Any two nodes can be linked, fuzzy hierarchy, not easy to see the root node
structure diagram (s/c chart)
Reflects hierarchical invocation relationships and linkages between modules in a program
Modular
The ability to divide a large and complex software system into simple, easy-to-understand modular structures
1. Module
Rectangular box, module name, each module name cannot be the same
Module name (function, function abbreviation, defined module, subroutine or procedure), usually named by function, function not single with main function name
2. Call relationships and interfaces for modules
3. Transfer of information between modules
Incoming and outgoing information is necessary to indicate the name and characteristics of the information
To describe the main information when transmitting more information
4. Indicates that module a conditionally calls another module, b
The Diamond box indicates that the marking point must be in the previous module, as far as possible to write the conditions
Arcs represent Circular calls, and the right arrows indicate the direction of the loop call (order)
system structure diagram of the program
Small structure diagram depth of about 5-7 layers, medium more than 10 or 10 layers, complex dozens of-layer, reflecting the complexity of the problem
Width refers to any one layer of the module book, the greater the width, the higher the complexity
Fan out too much to show that by other modules affect large, fan out not too much, generally 2-5, do not exceed 9-10, reduce fan out, it is bound to increase the depth
Fan in indicates the driver module (the previous module) How many, fan in general 1-5, to control the quantity
A good system diagram should show "urn" type
Abstraction of
When the software system is designed for module, it can have different abstraction level, namely decomposition system;
Control decomposition Speed
Process: Layered abstraction, gradual refinement;
Further refinement according to task requirements;
Program process abstraction (programming phase);
Data abstraction, describing the details of a data object at different levels, defining the operations associated with that data object
Information hiding
When dividing the module (define the level), when the data in the module changes, try not to affect other related modules or less impact, that is, do not allow other modules to use this module
the independence of the module
Basic properties of the module:
Function: Describe what function the module implements
Logic: Describe how the module is done inside
Status: The environment and conditions when the module is used
Independence refers to the specific sub-functions of each module in a software system that involve only software requirements.
Two criteria are generally used to measure module independence, namely, module-to-block coupling and module cohesion
coupling between modules
The greater the independence, the lower the coupling
Non-direct coupling (nondirect coupling)
Two no direct relationship between modules
data Coupling (coupling)
If a module module accesses another module, it is a simple data parameter (not a control parameter, a public data structure, or an external variable to exchange input and input information)
tag coupling (Stamp coupling)
If a set of modules passes the record information through the parameter table, it is the tag coupling
control coupling (in-coupling)
If a module through the transmission of switches, signs, names and other control information, obviously control the selection of the function of another module
external coupling (External coupling)
A set of modules accesses the same global simple variable instead of the same global data structure, and does not pass the information of that global variable through the parameter table, strong coupling
Public coupling (Common coupling) If a set of modules accesses the same common data environment, there are two cases of strong coupling: loose public coupling and tight public decoupling
(a) data written by a module (not required by B module) may be imported into the B module
(b) Two modules are capable of modifying data, creating confusion and minimizing
rational use of common coupling reduces the amount of memory used
content Coupling (coupling)
in-module clustering
the higher the cohesion, the stronger the module independence. Cohesion can be converted to one another.
Functional Cohesion (functional Cohesion)
Each part of a module is an integral part of completing a specific function, is an indivisible, ideal module
Information Cohesion (informational Cohesion)
Also known as (in order to gather), the module completes several functions, each function in the unified data structure operation, each function has a unique entry point, strong cohesion
Communication Cohesion (communication Cohesion)
If all functional parts within a module use the same input data, or produce the same output data
in-Process poly (procedural Cohesion)
When using a flowchart as a tool design program, draw a part of the flowchart to form a module
time to gather (classical Cohesion)
Also called instant cohesion
1. The execution of each module is related to time
2. It is generally required that all functions be performed within the same time period;
3. Actions are performed only once, often affecting other modules;
4. The time relationship between the parts within the module reflects some substantive issues
Logic cohesion (Logical Cohesion)
Combine the functions of a centralized function
coincidental cohesion (coincidental Cohesion)
There is no connection between the parts, or even if there is a connection, the connection is loose.
Structured Design Approach
The first research, analysis and review of the flow chart, and then according to the flow chart to determine the type of problem, typical types: transformation and transaction type
modules in the system structure diagram
Incoming Module
Enter physical data stream, outgoing logical data stream, left skew
Outgoing Module
Outgoing logical output data stream (general), right oblique
Transform Module
Obtain data from the superior module and return to the superior module after transformation
Coordination Module
Coordination and management of all subordinate modules
transformation System Structure diagram (a line), the process is broadly divided into three steps: access to data, transform data and give the data
transactional system structure diagram (with branches), accept a transaction, according to the characteristics and nature of transaction processing, choose to assign an appropriate processing unit, and then give the result
Transformation Analysis
Method Four Step Composition:
1. Redraw the streaming chart
2. Distinguishing between valid (logical) inputs, valid (logical) outputs, and central transformation sections
3. First-level decomposition, design of the upper module
4. Perform level two analysis, design the middle and lower modules of the input, output and center transform parts
Center switching is the main module location
1. When selecting the order of the block design, all the direct subordinate modules of a piece of wood must be designed and completed.
2. When designing the lower module, the coupling and cohesion of the module should be considered.
3. Use the "black box" technique: When designing the current module, define all the lower modules of the module as "black box"
4. When the module is divided, the direct subordinate module of a module is usually around 5 (called module)
5. Stop the function decomposition of the module if the following conditions occur:
6. When the block can no longer be subdivided into obvious sub-tasks;