- RESEARCH & DESIGN
Various tools are commonly used to aid designers, and several additional theories offer more analytically rigorous support to engineering designers. Concurrent engineering may be the most practical method to improve the design process, and other common tools are used to obtain input from stakeholders in the design process (the Pugh Method, Quality Function Deployment, Decision Matrix techniques, and the Analytical Hierarchy Process). These tools incorporate relatively high levels of subjective judgment. An additional set of tools address variability, quality, and uncertainty in the design process (Projected Latent Structure, the Taguchi method, and Six Sigma). These tools are more analytical and are typically coupled to the processes used to produce products. Still other tools are used to generate alternatives for designers (artificial intelligence and TRIZ). Design theories also exist (Dym’s, Suh’s Axiomatic, Yoshikawa’s, and a Mathematical Framework) that are less widely used but offer more rigorous analytical bases. Finally, certain other tools are used primarily in the fields of management science and economics, and are being explored in current research for applicability to decision making in engineering design.
This review is illustrative rather than exhaustive given the voluminous existing literature about each tool and theory. Series of individuals and groups are devoted to research and application for each separate tool or theory mentioned here. Subjective comments on the applicability or limitations of the tools and theories are of course based only on the committee’s knowledge of the tools and of the relevant literature.
CONCURRENT ENGINEERING
Concurrent engineering is defined as “a systematic approach to the integrated, simultaneous design of products and their related processes, including manufacture and support. This approach is intended to cause the developers, from the outset, to consider all elements of the product life cycle from conception through disposal, including quality, cost, schedule, and user requirements” (Winner et al, 1988). According to Dean and Unal (1992) concurrent engineering consists of getting the right people together at the right time to identify and resolve design problems. Concurrent engineering includes designing for assembly, availability, cost, customer satisfaction, maintainability, manageability, manufacturability, operability, performance, quality, risk, safety, schedule, social acceptability, and all other attributes of the product highlights the contrast between concurrent engineering and conventional engineering design.
The concurrent engineering environment has the following characteristics:
- Reduced cycle time
- Overlapping of functional activities
- Collaboration in functional decisions
- Concurrent evolution of system and Component decisions
- Critical sequencing
Concurrent engineering strives to meet the need for continually shorter product development cycles and the need to represent the inputs of all stakeholders. Decision-making tools and processes continue to evolve to support making the best decisions in this environment. In the concurrent environment functional activities such as engineering and manufacturing are done simultaneously. This is contrasted with a traditional serial process in which the design team finishes its work before the drafting department prepares and releases the drawings, at which time manufacturing starts. Because of the overlapping of functional activities, cycle times may be greatly reduced and decisions become highly interdependent. This environment causes many decisions to be made without complete information, which has led to the development of methods to share product requirements, to assess risks effectively, and to develop abatement plans. System and component trades must be made concurrently, which requires effective methods for flow-down and tracking of requirements, as well as flow up and tracking of status. The tight schedules resulting from reduced cycle times require disciplined scheduling and monitoring of key decisions as well as management of the required sequencing and the downstream impact of design decisions. Cross-functional decision making requires integrated, highly reliable, and readily accessible databases.
- Embedded System Design Development
we will begin by presenting a general approach to modular design. In specific, we will discuss how to organize software blocks in an effective manner. The ultimate success of an embedded system project depends both on its software and hardware. Computer scientists pride themselves in their ability to develop quality software. Similarly electrical engineers are well-trained in the processes to design both digital and analog electronics. Manufacturers, in an attempt to get designers to use their products, provide application notes for their hardware devices. The main objective of this class is to combine effective design processes together with practical software techniques in order to develop quality embedded systems. As the size and especially the complexity of the software increase, the software development changes from simple "coding" to "software engineering", and the required skills also vary along this spectrum. These software skills include modular design, layered architecture, abstraction, and verification. Real-time embedded systems are usually on the small end of the size scale, but never the less these systems can be quite complex. Therefore, both hardware and software skills are essential for developing embedded systems. Writing good software is an art that must be developed, and cannot be added on at the end of a project. Just like any other discipline (e.g., music, art, science, religion), expertise comes from a combination of study and practice. The watchful eye of a good mentor can be invaluable, so take the risk and show your software to others inviting praise and criticism. Good software combined with average hardware will always outperform average software on good hardware. In this chapter we will introduce some techniques for developing quality software.
Learning Objectives:
- Understand system development process as a life cycle
- Take Requirements and formulate a problem statement.
- Learn that an algorithm is a formal way to describe a solution
- Define an algorithm with pseudo code or visually as a flowchart
- Translate flowchart to code
- Translate flowchart to code
- Test in simulator (Test → Write code → Test → Write code … cycle)
- Run on real board
- During the analysis phase, we discover the requirements and constraints for our proposed system. We can hire consultants and interview potential customers in order to gather this critical information. A requirement is a specific parameter that the system must satisfy. We begin by rewriting the system requirements, which are usually written in general form, into a list of detailed specifications. In general, specifications are detailed parameters describing how the system should work. For example, a requirement may state that the system should fit into a pocket, whereas a specification would give the exact size and weight of the device. For example, suppose we wish to build a motor controller. During the analysis phase, we would determine obvious specifications such as range, stability, accuracy, and response time. There may be less obvious requirements to satisfy, such as weight, size, battery life, product life, ease of operation, display readability, and reliability. Often, improving the performance on one parameter can be achieved only by decreasing the performance of another. This art of compromise defines the tradeoffs an engineer must make when designing a product. A constraint is a limitation, within which the system must operate. The system may be constrained to such factors as cost, safety, compatibility with other products, use of specific electronic and mechanical parts as other devices, interfaces with other instruments and test equipment, and development schedule. The following measures are often considered during the analysis phase of a project:
- Safety: The risk to humans or the environment
- Accuracy: The difference between the expected truth and the actual parameter
- Precision: The number of distinguishable measurements
- Resolution: The smallest change that can be reliably detected
- Response time: The time between a triggering event and the resulting action
- Bandwidth: The amount of information processed per time
- Maintainability: The flexibility with which the device can be modified
- Testability: The ease with which proper operation of the device can be verified
- Compatibility: The conformance of the device to existing standards
- Mean time between failure: The reliability of the device, the life of a product
- Mean time between failure: The reliability of the device, the life of a product
- Size and weight: The physical space required by the system
- Power: The amount of energy it takes to operate the system
- Nonrecurring engineering cost (NRE cost): The one-time cost to design and test
- Unit cost: The cost required to manufacture one additional product
- Time-to-prototype: The time required to design, build, and test an example system
- Time-to-market: The time required to deliver the product to the customer
- Human factors: The degree to which our customers like/appreciate the product
- Application Development
There exists no generally accepted theory in software engineering, and at the same time a scientific discipline needs theories. Some laws, hypotheses and conjectures exist, but yet no generally accepted theory. Several researchers and initiatives emphasize the need for theory in the discipline. The objective of this paper is to formulate a theory of software engineering. The theory is generated from empirical observations of industry practice, including several case studies and many years of experience in working closely between academia and industry. The theory captures the balancing of three different intellectual capitals: human, social and organizational capitals, respectively. The theory is formulated using a method for building theories in software engineering. It results in a theory where the relationships between the three different intellectual capitals are explored and explained. The theory is illustrated based on an industrial case study, where it is shown how decisions made in industry practice are explainable with the formulated theory, and the consequences of the decisions are made explicit. Based on the positive results, it is concluded that the theory may have a good explanatory power, although more evaluations are needed.
Application development is the process of creating a computer program or a set of programs to perform the different tasks that a business requires. From calculating monthly expenses to scheduling sales reports, applications help businesses automate processes and increase efficiency. Application development is the set of processes and procedures involved in writing software for small, wireless computing devices. Every app-building process follows the same steps: gathering requirements, designing prototypes, testing, implementation, and integration, App is developed for mobile devices, such as personal digital assistants, enterprise digital assistants.
Technology is moving faster than ever, and keeping up with business demands for application development requires programmers with experience in everything from Java and HTML5 to Swift and Android. With Top coder application development solutions, you can quickly develop clickable prototypes and ready-to-deploy software applications for any platform. A dedicated project manager guides your project to success, and you pay only for outcomes, not hours.
Custom Application Development
When off-the-shelf software doesn't meet specific business requirements, the best option is to go custom. Hire developers to build apps for you, or build on your own with do-it-yourself tools.
Rapid Application Development
The RAD (Rapid Application Development) model follows an incremental approach. You can simultaneously develop the individual modules of the application to enable faster delivery of the final product.
Low-Code Application Development
Low-code platforms include intuitive visual interfaces that make it easy to build and launch apps, even for non-programmers. You can drag and drop snippets of code and modify them, based on business logic, to design automated workflows.
Mobile Application Development
Mobile application development is the process of creating apps that run on any mobile platform: Android and IOS. With everything you need right at your fingertips, you can track inventory or make instant updates from your phone.
Database Application Development
Database applications are designed to collect, organize, and manage information efficiently. They're used to sort data by criteria, perform calculations, create reports, and share information with team members.
Enterprise Application Development
Enterprise applications are a type of software developed to cater to large-scale organizations. They support enterprise-grade features, like massive data storage and automation of complex business processes.
- Field Services
- The service account is Geo Coded and is used to decided where the work order should be performed.
- Optionally a work order can have a billing account. (The billing account is the service account if not defined.)
- Each work order will have one or many resource booking records.
- The resource bookings contain details of when & who should complete the work order.
- Each resource booking will have a resource. This could be a person, crew or piece of equipment
Each work order can be assigned an incident type. The incident entity is used to “bundle together all the products, services, service tasks and resource characterictics (skills) needed to complete that incident. Using incidents to bundle these items like this makes the process of creating work orders much easier. Meaning the use of incidents isn’t mandatory with Field Service but they are highly recommended.