System development process and project management
development model
Divide the development process into stages.
Waterfall Model: SDLC. The disadvantage is that the requirements must be clear at the beginning, but it is difficult for the development cycle not to change.
So improve:
Prototype: a demo.
Rapid Prototyping Model: Abandon the model. Once the user needs are obtained, the prototype can be discarded.
Evolutionary model: Based on the prototype, it is improved according to user needs. But the problem is that if the user interferes too much and the user dominates the project, it is difficult to control the project time.
Therefore, combining the prototype and the waterfall model, the spiral model and the incremental model were born.
Spiral model: suitable for projects with large projects and high risks. Starting from the demo, it may be possible to have an operational product in the end.
Incremental model: Each release is an operational product.
V-Model: Added some validation and testing. The software requires high quality, and the disadvantage is that testing can only be carried out after coding.
Fountain Model: Object Oriented.
Image credit: What is a Fountain Model? _Wisdom Chengdu Blog-CSDN Blog
RAD: Rapid model based on component model and waterfall model, which is commonly used now.
Component assembly model:
The component library greatly improves the efficiency of development such as transplantation.
Agile Methodology Model: Conforming to the Agile Manifesto is an agile method.
The general principle is that small versions are delivered quickly.
Typical agile method:
- extreme programming.
It is not necessary to apply all of them, and it should be analyzed according to specific projects.
-
Crystal method series: crystal, you can still succeed with less discipline.
-
Open source openUp: developers are widely distributed geographically, and troubleshooting is highly parallel. Anyone sends a patch to the maintainer, and the maintainer merges the patch into the source code repository.
-
scrum scrum method: keep iterating. An iteration for a period of time, such as 30 days, is called a sprint, and multiple iterations are performed according to priority to achieve requirements.
-
FDD function-driven development method, short-term iteration stage, programming is generally divided into chief programmer (project coordination) and class programmer (source code writing).
-
asd Adaptive software development method, divided into three stages of guessing, cooperation, and learning.
-
dsdm dynamic system development method, business-centric framework development method, with business as the core.
project management
Expert Judgment: Experts use empirical judgment.
Three-Point Estimation: How many people are needed in the best case? Worst case scenario? What about the general situation? Calculated based on weight.
Function point estimation: Estimate based on several function points of the project.
time management
PERT chart
Dashed lines are activities that do not require time.
Earliest start time is pushed forward from the beginning. Such as E activity. It starts at the 3rd node at the earliest, that is, it starts on the fourth day (the maximum value of AB), and ends on the seventh day at the earliest.
25 was completed the earliest.
The latest working time is reversed from this node.
A: The total time difference is 0
B:2
C:2
……
Critical path: a path with total time difference = 0. 1-2-3-4-6-7-9, events on this critical path cannot be delayed, delays will affect the overall project process.
The PERT diagram relationship is very clear.
Gantt chart
Gantt chart time flow, easy resource planning. But the representation of the relationship is not good.
example:
The minimum time is 18 days for the longest path ABCEFJ.
BC and BD are developed by the same person, either BC first and then BD, and BD is 3 days later; or BD first and then BC, BC is 2 days later, and the total duration is +2.
Originally, 02578 was the longest, 55 days.
After the change, it is equivalent to 0268 is 8+23+25=56 days.
Minimum time: ABDIJL 20 days.
Path through GH: 17 days, so GH relaxation time 20-17.
Software Configuration Management
After the development library is tested, it can enter the controlled library and can be modified. After modification, it can be tested and put back.
Checkpoint: Check the project at the specified time interval to see the difference between the actual and the plan and modify it.
Milestone: A sign of staged work.
Baseline: after formal review, important milestones. It cannot be easily changed.
- Functional Baseline: System Design Specification.
- Allocation Baseline srs: Requirements Specification.
- Product Baseline: A specification (comprehensive) of all configuration items of a software product.
After submitting the review and passing the review, apply for the change, pull down the code and check it out to the working state to start the change.
Risk classification
CMM certification
A type of certification, through which programs may be preferred. Practice in software development and software testing.
18 key domains:
The exam will ask which judge is at which level.
Requirements engineering
Requirements analysis is very important, sometimes the whole project will collapse if it is not done well.
Requirements development: requirements acquisition, requirements analysis, requirements definition (srs specifications), requirements verification.
Requirements management: After the above part is determined, the actual requirements can be modified through the requirements baseline application. Including change control, version control, requirements tracking, requirements status tracking.
Requirements are divided into: software requirements, user expectations of the system in terms of function, control, behavior, performance, design constraints, etc. (what is the problem that the system needs to solve).
- User needs: user perspective.
- Business requirements: the overall picture.
- System Requirements: Computerized. Including functional requirements (functions to be realized), non-functional requirements (performance, etc.), design constraints (such as database, users require mysql, or os, users require linux).
From top to bottom from the abstract global to the specific details.
Three is the most abstract, and two is the most functionally concrete.
A。
structured analysis
Data dictionary: A description of data that is easy for users or developers to understand. For example, the dbname item in the database stores the name of the database, and the encoding stores its encoding method... Or standardize user input on the ticketing platform, and the destination can only be selected such as Beijing, Hebei, Guangzhou...
Data flow diagram:
The top level represents the relationship of the system to external entities. The figure below is the specific of the top-level figure.
The circle is data processing, the arrow is data with flow direction, the two lines are data storage, and the external entity is a square entity, which is the source of external data.
State Behavior Diagram:
Start point, end point (circled), boxes are states, lines are events.
Compared with the data flow graph, it is a dynamic behavior, and the data flow graph is static.
ER diagram, old acquaintance of mysql:
Entities and properties are connected by wires.
The concept of strong entity and weak entity:
Training company database design
business requirements are as follows:Each student can only take one course per term.
By implication, the company has many courses. We only analyzed the requirement that "each student can only take one course per session", and found that two entities are involved: student and course. So we may take it for granted to design the database like this:
A course can be chosen by multiple students, and a student can only choose one course. Found a problem? The business requirement does not mean that a student can only take one course, but that a student can only take one course in one semester! Designing the database in this way is cutting off people's money. Therefore, we must consider the concept of "per session":
It seems that there is no problem, but it is impossible for the database design to be so easy. We regard each course as a record, so for course information, such as course name, price, and introduction, a row of records must be stored in the database every time a course is opened, so our database will have a lot of redundancy (also That is to say, it does not satisfy the second normal form of the database). Therefore, we should design the database like this:
see it? The "Record" here is a weak entity, and its primary key is "semester primary key + student primary key", which represents the behavior of students participating in the course, and the abstraction becomes a weak entity. Why use the primary key of the semester table and the primary key of the student table? Because one student, one semester, can only take one course, so according to the principle that the primary key uniquely identifies each row of records, it should be selected in this way. The primary key of the curriculum table becomes the foreign key of the Record table, and there is a one-to-many relationship between the curriculum table and the Record table.
In this example, students and courses are obvious entities in the description of business requirements, and "period" can also be considered as a more obvious entity, but the verb "participate" becomes "attendance record" in our database, that is Record entity.
————————————————
Copyright statement: This article is an original article of CSDN blogger "Qiao Qing", following the CC 4.0 BY-SA copyright agreement, please attach the original source link and this article for reprinting statement.
Original link: https://blog.csdn.net/qq_41112170/article/details/103328927
Object-oriented needs analysis: less test.
Aggregation: For example, if a car tire is broken, the car is fine.
UML diagram:
structured design
based on structured analysis.
Information hiding: encapsulation.
Module independence: each module does only one thing as much as possible.
Call depth: nesting level.
Fan-in and fan-out: Other modules call this module more often, and this module calls other modules less.
Modular structure design
Divide the system into modules that have interfaces with each other.
A module is the basic unit of the system, including: IO, processing functions, internal data, and program codes.