Algorithmic Information Content Psychological Complexity
4.6 Summary and Bibliographical Notes
Horst Zuse, History of Software Measurement, Technische Universität Berlin, Online at: http:irb.cs.tu-berlin.de~zusesme.html [Halstead, 1977] distinguishes software science from computer science. The premise of software science is that any programming task consists of selecting and arranging a finite number of program “tokens,” which are basic syntactic units distinguishable by a compiler: operators and operands. He defined several software metrics based on these tokens. However, software science has been controversial since its introduction and has been criticized from many fronts. Halstead’s work has mainly historical importance for software measurement since it was instrumental in making metrics studies an issue among computer scientists. Working memory Chunking unit Chunking unit Intelligent system Input sequence from the world time-varying Figure 4-3: A model of a limited working memory. Ivan Marsic • Rutgers University 158 S. Kusumoto, F. Matukawa, K. Inoue, S. Hanabusa, and Y. Maegawa, “Estimating effort by use case points: Method, tool and case study,” Proceedings of the IEEE 10th International Symposium on Software Metrics METRICS’04, G. Karner, “Metrics for Objectory,” Diploma thesis, University of Linköping, Sweden. No. LiTH-IDA-Ex-9344:21. December 1993. Coupling and cohesion: [Constantine et al., 1974; Eder et al., 1992; Allen Khoshgoftaar, 1999; Henry Gotterbarn, 1996; Mitchell Power, 2005] See also: http:c2.comcgiwiki?CouplingAndCohesion [Henderson-Sellers, 1996] provides a condensed review of software metrics up to the publication date, so it is somewhat outdated. It is technical and focuses on metrics of structural complexity. B. Henderson-Sellers, L. L. Constantine, and I. M. Graham, “Coupling and cohesion: Towards a valid suite of object-oriented metrics,” Object-Oriented Systems, vol. 3, no. 3, 143-158, 1996. Problems Problem 4.1 Problem 4.2 Problem 4.3 C YCLOMATIC M C C ABE C OMPLEXITY Consider the following quicksort sorting algorithm: Q UICKSORT A, p, r 1 if p r 2 then q ← P ARTITION A, p, r 3 Q UICKSORT A, p, q − 1 4 Q UICKSORT A, q + 1, r where the P ARTITION procedure is as follows: Chapter 4 • Software Measurement and Estimation 159 P ARTITION A, p, r 1 x ← A[r] 2 i ← p − 1 3 for j ← p to r − 1 4 do if A[j] ≤ x 5 then i ← i + 1 6 exchange A[i] ↔ A[j] 7 exchange A[i + 1] ↔ A[r] 8 return i + 1 a Draw the flowchart of the above algorithm. b Draw the corresponding graph and label the nodes as n 1 , n 2 , … and edges as e 1 , e 2 , … c Calculate the cyclomatic complexity of the above algorithm. Problem 4.4Parts
» | Komputasi | Suatu Permulaan
» Why Software Engineering Is Difficult
» Book Organization What is Software Engineering?
» Symbol Language Software Engineering Lifecycle
» Requirements Analysis and System Specification
» Object-Oriented Analysis and the Domain Model
» Object-Oriented Design Software Engineering Lifecycle
» Case Study 1: From Home Access Control to Adaptive Homes
» Case Study 2: Personal Investment Assistant
» Relationships and Communication Object Model
» Design of Objects Object Model
» PROPHASE 2. METAPHASE TELOPHASE 3. ANAPHASE
» Project 2: Restaurant Automation Student Team Projects
» Stock Market Investment Fantasy League
» Web-based Stock Forecasters Student Team Projects
» Summary and Bibliographical Notes
» Agile Development Software Development Methods
» Types of Requirements Requirements Analysis and Use Cases
» Use Cases Requirements Analysis and Use Cases
» Requirements Elicitation through Use Cases
» Modeling System Workflows Requirements Analysis and Use Cases
» Why Software Engineering Is Difficult 1
» Identifying Concepts Analysis: Building the Domain Model
» Concept Associations and Attributes
» Contracts: Preconditions and Postconditions
» Design Principles for Assigning Responsibilities
» Class Diagram Design: Assigning Responsibilities
» Why Software Engineering Is Difficult 2
» Software Architecture | Komputasi | Suatu Permulaan
» Implementation | Komputasi | Suatu Permulaan
» World Phenomena and Their Abstractions
» Events, Signals, and Messages
» Context Diagrams and Domains
» Systems and System Descriptions
» Basic Formalisms for Specifications
» UML Object Constraint Language OCL
» TLA+ Notation Notations for System Specification
» Problem Frame Notation Problem Frames
» Problem Decomposition into Frames
» Composition of Problem Frames
» Specifying Goals Summary and Bibliographical Notes
» Measurement Theory Fundamentals of Measurement Theory
» What to Measure? | Komputasi | Suatu Permulaan
» Cyclomatic Complexity Measuring Complexity
» Internal Cohesion or Syntactic Cohesion
» Semantic Cohesion Measuring Module Cohesion
» Algorithmic Information Content Psychological Complexity
» Applications of Publisher-Subscriber Indirect Communication: Publisher- Subscriber
» Control Flow Indirect Communication: Publisher- Subscriber
» Pub-Sub Pattern Initialization Indirect Communication: Publisher- Subscriber
» Exclusive Resource Access—Exclusion Synchronization
» Cooperation between Threads—Condition
» Concurrent Programming Example Concurrent Programming
» Broker Pattern Broker and Distributed Computing
» Java Remote Method Invocation RMI
» Symmetric and Public-Key Cryptosystems
» Release publicly the public key, which is the pair of numbers n and E, K
» Syntax Structure of XML Documents
» Document Type Definition DTD
» Namespaces Structure of XML Documents
» XML Parsers Structure of XML Documents
» XML Schema Basics XML Schemas
» Models for Structured Content
» XPointer and Xpath Indexing and Linking
» Document Transformation and XSL
» Components, Ports, and Events
» Property Access Event Firing
» Custom Methods JavaBeans: Interaction with Components
» Run-Time Type Identification Computational Reflection
» Automatic Component Binding Computational Reflection
» State Persistence for Transport
» Port Interconnections A Component Framework
» Levels of A Component Framework
» Service Oriented Architecture | Komputasi | Suatu Permulaan
» The SOAP Section 5 Encoding Rules
» SOAP Communication SOAP Communication Protocol
» Binding SOAP to a Transport Protocol
» The WSDL 2.0 Building Blocks
» Defining a Web Service’s Abstract Interface
» Binding a Web Service Implementation
» Using WSDL to Generate SOAP Binding
» Non-functional Descriptions and Beyond WSDL
» UDDI for Service Discovery and Integration
» Server-side Development with Axis
» Client-side Development with Axis
» OMG Reusable Asset Specification Summary and Bibliographical Notes
» Aspect-Oriented Programming | Komputasi | Suatu Permulaan
» OMG MDA | Komputasi | Suatu Permulaan
» Autonomic Computing | Komputasi | Suatu Permulaan
» Software-as-a-Service SaaS End User Software Development
Show more