background preloader

Learning

Facebook Twitter

6_01SCS11_chap04. TN3-Hierarchical-System.

Software engineering

SOFTWARE REFACTORING APPLIED TOC P. Shared Resource Design Patterns. By Jim Rogers Summary Many applications are constructed of groups of cooperating threads of execution.

Shared Resource Design Patterns

Historically this has frequently been accomplished by creating a group of cooperating processes. Those processes would cooperate by sharing data. At first, only files were used to share data. Various operating systems also introduced other mechanisms allowing processes to share data. Experience shows that, while the variety of possible designs for shared data is quite large, there are a few very common design patterns that frequently emerge.

Monitors There are several theoretical approaches to creating and controlling shared memory. Procedures are used to change the state or values contained by the monitor. Software metric. A software metric is a measure of some property of a piece of software or its specifications.

Software metric

Since quantitative measurements are essential in all sciences, there is a continuous effort by computer science practitioners and theoreticians to bring similar approaches to software development. The goal is obtaining objective, reproducible and quantifiable measurements, which may have numerous valuable applications in schedule and budget planning, cost estimation, quality assurance testing, software debugging, software performance optimization, and optimal personnel task assignments. Common software measurements[edit] Common software measurements include: Limitations[edit] As software development is a complex process, with high variance on both methodologies and objectives, it is difficult to define or measure software qualities and quantities and to determine a valid and concurrent measurement metric, especially when making such a prediction prior to the detail design.

Cyclomatic complexity. Cyclomatic complexity (or conditional complexity) is a software metric (measurement). It was developed by Thomas J. McCabe, Sr. in 1976 and is used to indicate the complexity of a program. It is a quantitative measure of logical strength of the program. It directly measures the number of linearly independent paths through a program's source code. The concept, although not the method, is somewhat similar to that of general text complexity measured by the Flesch-Kincaid Readability Test. One testing strategy, called Basis path testing by McCabe who first proposed it, is to test each linearly independent path through the program; in this case, the number of test cases will equal the cyclomatic complexity of the program.[1]

Stack machine. The common alternative to stack machines are register machines, in which each instruction explicitly names the specific registers to use for operand and result values.

Stack machine

Practical expression-stack machines[edit] For a typical instruction like Add, both operands implicitly come from the topmost (most recent) values of the stack, and those two values get replaced by the result of the Add. The instruction's operands are 'popped' off the stack, and its result(s) are then 'pushed' back onto the stack, ready for the next instruction.

Most stack instructions are encoded as just an opcode, with no additional fields to specify a register number or memory address or literal constant. This encoding is easily extended to richer operations with more than two inputs or more than one result. Some machines have a stack of very limited size, implemented as a register file and a dynamic register renumbering scheme. Advantages of stack machine instruction sets[edit] Very compact object code[edit]

UML

Www.stateworks.com. Test. Exploratory testing. GitHub · Social Coding. Byte stream. A bitstream or bit stream is a time series or sequence of bits.

Byte stream

Bitstreams and bytestreams are used extensively in telecommunications and computing: for example, the SDH communications technology transports synchronous bitstreams, and the TCP communications protocol transports a byte stream without synchronous timing. Definition[edit] Formally, a byte stream is a certain abstraction, a communication channel down which one entity can send a sequence of bytes to the entity on the other end. Such channel is often bidirectional, but sometimes unidirectional. In almost all instances, the channel has the property that it is reliable; i.e. exactly the same bytes emerge, in exactly the same order, at the other end. Examples[edit] The term bitstream is frequently used to describe the configuration data to be loaded into a field programmable gate array (FPGA). The Internet media type for an arbitrary byte stream is application/octet-stream. See also[edit]

Network

公开课. Embedded system. OS. Programming.