Why Software Engineering Is Difficult 2
2.6 Implementation
This section shows how the above system might be implemented. The reader may wish to review the Java programming refresher in Appendix A below before proceeding. One thing that programmers often neglect is that the code must be elegant and readable. This is not for the sake of the computer which will run the code, but for the sake of humans who will read, maintain, and improve on the original code. I believe that writing good comments is at least as difficult as writing good code. It may be even more important, since comments describe the developer’s intention, while the code expresses only what the developer did. The code that lacks aesthetics and features poor writing style in comments is likely to be a poor quality code. 11 Assume we have an embedded processor with a keypad, wired to other hardware components of the system, as shown in Figure 2-16. The embedded processor accepts “commands” from the computer via a RS-232 serial port and simply passes them on the corresponding device. The many intricacies of serial communication are omitted and the interested reader is directed to the bibliography review at the end of this chapter. The embedded processor may in an advanced design become a full-featured computer, communicating with the main computer via a local area network LAN. 11 On a related note, writing user messages is as important. The reader may find that the following funny story is applicable to software products way beyond Microsoft’s: “There was once a young man who wanted to become a great writer and to write stuff that millions of people would read and react to on an emotional level, cry, howl in pain and anger, so now he works for Microsoft, writing error messages.” [ Source: A Prairie Home Companion, February 3, 2007. Online at: http:prairiehome.publicradio.orgprograms20070203scriptsshowjokes.shtml ] Computer RS-232 Interface cable Keypad and Embedded processor Light bulb Switch Alarm bell Photosensor Figure 2-16: Hardware components for the system implementation.Parts
» | 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