Sql Database Design Tips – Database Design Normalization




The aim of relational database designis to generate a set of schemas that allow us to Store information without unnecessary redundancy or overhead and Retrieve information easily with accuracy.

sql database design tips

Bad logical database design results in bad physical database design, and generally results in poor database performance. Both the logical and physical design must be right before you can expect to get good performance out of your database. If the logical design is not correct before you begin the design and development of your application, it might be too late after the application has been implemented to fix it. No amount of fast, expensive hardware can fix the poor performance caused by poor logical database design done by average database designer.

Websites on Sql Database Design Tips – Database Design Normalization

The relational database model was conceived by E. F. Codd in 1969, then a researcher at IBM. The model is based on branches of mathematics called set theory and predicate logic.

  1. Relational Database Design – Relational Database Design
  2. Tips for Designing a Better SQL Database – Tips for Designing a Better SQL Database
  3. SQL Server Database Design Tips – SQL Server Database Design
  4. Microsoft Access and SQL Server Database Normalization Tips – Microsoft Access and SQL Server Database Normalization Tips by FMS
  5. Fundamentals of Relational Database Design – Fundamentals of RDBMS
  6. Tips on Optimizing SQL Server Database Design – Tips on Optimizing SQL Server Database
  7. SQL Tutorial: Relational Database Basics – This website documents Webucator’s Courseware Creation System.
  8. 10 Useful articles about Database design – Handpicked articles

Related Terms to Sql Database Design Tips – Database Design Normalization

The basic idea behind the relational model is that a database consists of many unordered tables also known as relations which can be manipulated using non-procedural operations that return tables. This model was in vast contrast to the more traditional database theories of the time that were much more complicated, less flexible and dependent on the physical storage methods of the data.

  • Oracle Database Design Tips
  • Database Design Normalization
  • Entity Relationship Database Design
  • Relational Database Design
  • Database Modeling Design
  • Database Schema Design
  • Database Design Optimization
  • Sql Create Table Examples
  • Sql Server 2000 Create Schema

Related Posts:

  • No Related Posts

SOA Certification – Service Oriented Architecture Certification

Service Oriented Architecture (SOA) is a design that enables Business and computational resources to be linked together on demand as a means of achieving the results desired for service consumers – which may be end users or other services. Service Oriented Architecture has been defined by the Organization for the Advancement of Structured Information Standards as a paradigmatic approach for the utilizationand organization of distributed capabilities that might be under the control of conflicting ownership domains.




Reference – SOA Definitions and Certification

The following SOA Certifications (Service Oriented Architecture Certifcations) are available

  • Certified Cloud Computing Specialist
  • Certified SOA .NET Developer
  • Certified SOA Analyst
  • Certified SOA Architect
  • Certified SOA Consultant
  • Certified SOA Governance Specialist
  • Certified SOA Java Developer
  • Certified SOA Professional
  • Certified SOA Quality Assurance Specialist
  • Certified SOA Security Specialist

Related Terms to SOA Certification – Service Oriented Architecture Certification

  • IBM SOA Certification
  • Oracle SOA Certification
  • Service Oriented Architecture SOA
  • Thomas Erl SOA
  • SOA ESB Architecture
  • SOA Architect Certification
  • SOA Certification Exam
  • SAP SOA Certification

Visit the following links.

IBM Service Oriented Architecture (SOA) – IBM’s SOA certification site. Information includes the exam levels, an exam roadmap, information on test fees, announcements, WebSphere User Groups (special offers), IBM Academic Initiative (special offers), certification testing at conferences, SOA software group certifications, and the software group platform.

The Service Oriented Architecture (SOA) Blog – There are three SOA certification programs aimed at architects put on by IBM, BEA and ZapThink. While the early exams for the software vendor’s start off somewhat technology agnostic the advanced exams become technology specific. BEA’s exams for some reason cover BEA WebLogic Integration and not the AquaLogic service bus and BPM product from the current description on the web.

The following Syllabus is covered by most of the courses and professional SOA Certification Trainings.

  1. Fundamental SOA Service Oriented Computing
  2. SOA Technology Concepts
  3. SOA Design Architecture
  4. SOA Project Delivery Methodology
  5. SOA Technology Lab
  6. Advanced SOA Analysis Modeling
  7. SOA Analysis Modeling Lab
  8. Advanced SOA Design Architecture
  9. SOA Design Architecture Lab
  10. Advanced Web Based Service Technology
  11. Service Development with Java
  12. Service Development Lab for Java
  13. Service Development with .NET Azure
  14. Service Development Lab for .NET Azure
  15. SOA Governance Fundamentals
  16. Advanced SOA Governance
  17. SOA Governance Lab
  18. Fundamental SOA Security
  19. Advanced SOA Security
  20. SOA Security Lab
  21. Fundamental SOA Quality Assurance
  22. Advanced SOA Quality Assurance
  23. SOA Quality Assurance Lab
  24. Fundamental Cloud Computing SOA
  25. Advanced Cloud Computing SOA
  26. Cloud Computing SOA Lab

Service Oriented Architecture provides a single means of offering, interacting, discovering and using different capabilities to produce the effects that are desired and consistent with measurable expectations and preconditions. Of course, there are a number of different definitions of Service Oriented Architecture. To an extent, it depends on how you wish to employ it and or view it. The more open definitions, however, take into consideration the fact that Service Oriented Architecture very well might be applied to Business domains and technological entities.

Related Posts:

Sql Server Business Intelligence Certification Training

Microsoft Certified Technology Specialists in Microsoft SQL Server 2005/ 2008 Business Intelligence are trained to possess an in-depth knowledge of Microsoft SQL Server 2005 Business Intelligence Development.

These professionals have an understanding in database schemas, debugging, monitoring, and troubleshooting Business Intelligence solutions, and working with the Microsoft .NET Framework. These specialists can create database queries, use SSAS data mining algorithms, and write and deploy SQL Server Reporting Services (SSRS) reports. Also, they write and deploy SQL Server Integration Services (SSIS) packages. Professions include business intelligence developers, database administrators, and database developers.

Related Terms to Sql Server Business Intelligence Certification

  • Sql Server 2005 Bi Certification
  • Sql Server 2005 Business Intelligence
  • Sql Server 2008 Business Intelligence
  • Sql Server Business Intelligence Studio
  • Sql Server Accelerator For Business Intelligence

Websites on Sql Server Business Intelligence Certification Training

  1. MCTS: SQL Server 2005 Business Intelligence – New Horizons Computer Learning Centers – Candidates for the Microsoft Certified Technology Specialist on SQL Server 2005 Business Intelligence (MCTS: SQL Server 2005 Business Intelligence) implement and maintain business intelligence solutions.
  2. SQL Server Business Intelligence MS Certification Training – SQL Server Business Intelligence MS Certification from Last Minute Training in Toronto ON business Training, Certification, Self-Help and Career Training
  3. MCTS SQL Server 2008, Business Intelligence Development and Maintenance Certification Training – Videos, CBT, Boot Camp, Study Guides – Microsoft MCTS SQL Server 2005 Certification Training via online classes, self-study cbt, training videos, and instructor-led MCTS SQL 2005 boot camps.
  4. MCTS: SQL Server 2005 Business Intelligence Certification Training Classes – Hands-on MCTS: SQL Server 2005 Business Intelligence certification training classes.
  5. SQL Server Business Intelligence Certified Professional – In order to improve business intelligence capabilities, organizations must effectively and securely manage data across a myriad of platforms. SQL Server Integration Services allows for the automation of complex migration tasks, SQL Server Reporting Services augments SQL Server and other database management systems to deliver business-critical reports to customers, and SQL Server Analysis Services provides the administrative tools to better manage and maintain data through the creation of On-Line Analytical Processing (OLAP) cubes. Skilled SQL Server developers, administrators and analysts can maximize the business intelligence value gained from incorporating these tools.
  6. Microsoft SQL Server administrator certification – How to become MCDBA, MCTS or MCITP in SQL Server
  7. MCITP: Business Intelligence Developer certification (Exam 70-446) Training course at HiTech Institute, Michigan, Florida, Texas, Detroit, Florida, USA,toronto, Ontario, Canada – Hitech institute, based in Canada, Project Management training, MS project, PMP Training, SAP training imparts Training that includes diplomas, certification and courses in IT, information technology, engineering, Business, Office, Management and English Langauage to local and international students who want to study in Canada and has Industry partnerships with Microsoft, Oracle, Sun, Java, Accpac, Cisco, IBM, Comptia and A+ among others, located in 3 campuses at Toronto Mississauga & Markham

To achieve this certification, you must successfully complete two exams: one Microsoft Certified Technology Specialist (MCTS) prerequisite exam and one Professional Series exam. This certification requires a periodic update to demonstrate that your knowledge of technology and best practices is current. Exam 70-445 Review the preparation guide for Exam 70-445: TS: Microsoft SQL Server 2005 Business Intelligence – Implementation and Maintenance

Related Posts:

  • No Related Posts

Service Oriented Architecture – SOA Tutorial

Service Oriented Architecture (SOA) is a business-centric IT architectural approach that supports integrating your business as linked, repeatable business tasks, or services. With the Smart SOA approach, you can find value at every stage of the SOA continuum, from departmental projects to enterprise-wide initiatives.

Websites on Service Oriented Architecture Tutorial – SOA Tutorial

  1. Tutorial on Service Oriented Architecture – Tutorial on Service Oriented Architecture
  2. Service-oriented architecture (SOA) tutorial – This SOA tutorial explains what service-oriented architecture is and offers SOA best practices.
  3. Service oriented architecture tutorial – Service orientation is an approach to organizing distributed IT resources into an integrated solution that breaks down information silos and maximizes business agility.
  4. IBM Service Oriented Architecture (SOA) – A service-oriented architecture (SOA) provides an application framework that turns business applications into individual business functions and processes, called services. IBM has proven experience, software, and services to help implement an SOA solution that enables business process flexibility.
  5. SOA (service-oriented architecture) – SOA (service-oriented architecture)
  6. Service Oriented Architecture – At Java(TM) Boutique
  7. From SOA to REST – Designing and Implementing RESTful Services (WWW2009 Tutorial)
  8. SOA and Web Services – Service-Oriented Architecture (SOA) provides a cost-effective solution to evolving and enhancing legacy enterprise information systems (EIS).
  9. SOA tutorial – Also some tutorials on – JAVA – J2EE – Tutorial – Java/J2EE Brain
  10. Smart SOA Tutorial – Learn how organizations need the agility to adapt rapidly and the adoption of SOA can help provide this agility and enable change.
  11. Getting Started With Oracle SOA Suite 11g R1 A Hands-On Tutorial – Fast track your SOA adoption. Build a service-oriented composite application in just hours!
  12. Tutorial for Building a Sample Application with Oracle SOA Suite – Sample Application with Oracle SOA Suite
  13. What is service-oriented architecture? – JavaWorld – As the latest evolution of software, service-oriented architecture (SOA) has been a hot topic for sometime now. This article introduces SOA, discusses why enterprises need SOA, what a service-oriented architecture is, and what comprises SOA infrastructure at the core, platform, and quality-of-services level.
  14. IBM developerWorks : SOA and Web services – The SOA and Web services section on the developerWorks Web site is your resource for tools, demos, articles, tips, and standards for creating Web services and Service-Oriented Architecture (SOA).
  15. Service Oriented Architecture Tutorial for Managers Online PHP Programming Language – The Tutorial introduces the reader to Service Oriented Architecture and using SOA with web services. The Tutorial covers the concept of SOA, benefits and how to use SOA Java Web Services Tutorial Enterprise Architecture Tutorial Service Oriented Architecture Tutorial.

Service-Oriented Architecture (SOA) and Web Services(WS) technologies have matured into highly attractive architecture and implementation alternatives for building distributed systems. SOA concepts and Web services standards-based implementation stacks are a powerful combination that is well-suited for crafting heterogeneous B2B and EAI solutions.

Related Posts:

Best Computer Networking Books

  1. Networking For Dummies – by Doug Lowe ISBN : 0470056207 List Price : $24.99

  2. Networking All-in-One Desk Reference For Dummies (For Dummies (Computer/Tech)) – by Doug Lowe ISBN : 0470179155 List Price : $39.99

  3. Computer Networking: A Top-Down Approach (5th Edition) – by James F. Kurose,Keith W. Ross ISBN : 0136079679 List Price : $103.00

  4. Head First Networking – by Al Anderson,Ryan Benedetti ISBN : 0596521553 List Price : $54.99

  5. Networking: A Beginner’s Guide, Fourth Edition – by Bruce Hallberg ISBN : 0072262125 List Price : $41.99

  6. The Networking Survival Guide: Get the Success You Want By Tapping Into the People You Know – by Diane Darling ISBN : 0071409998 List Price : $16.95

  7. Wireless Home Networking For Dummies – by Danny Briere,Pat Hurley,Edward Ferris ISBN : 0470258896 List Price : $24.99

  8. Home Networking All-in-One Desk Reference For Dummies (For Dummies (Computer/Tech)) – by Eric Geier ISBN : 0470275197 List Price : $29.99

  9. Computer Networking First-Step – by Wendell Odom ISBN : 1587201011 List Price : $29.95

  10. Cisco Networking Simplified (2nd Edition) (Networking Technology) – by Neil Anderson,Paul L. Della Maggiora,Jim Doherty ISBN : 1587201992 List Price : $44.99

  11. Guide to Networking Essentials – by Greg Tomsho ISBN : 1418837180 List Price : $110.95

  12. Networking with the Affluent and Their Advisors – by Thomas J. Stanley ISBN : 1556238916 List Price : $38.95

  13. Smart Networking: Attract a Following In Person and Online – by Liz Lynch ISBN : 0071602941 List Price : $16.95

  14. Networking (2nd Edition) (Networking Technology) – by Jeffrey S. Beasley ISBN : 0131358383 List Price : $95.00

Related Posts:

  • No Related Posts

Best Perl Programming Books

  1. Learning Perl, 5th Edition – by Randal Schwartz,Tom Phoenix,brian d foy ISBN : 0596520107 List Price : $39.99

  2. Intermediate Perl – by Randal L. Schwartz,Tom Phoenix,brian d foy ISBN : 0596102062 List Price : $39.99

  3. Beginning Perl for Bioinformatics – by James Tisdall ISBN : 0596000804 List Price : $39.95

  4. Programming Perl (3rd Edition) – by Larry Wall,Tom Christiansen,Jon Orwant ISBN : 0596000278 List Price : $49.95

  5. Perl Cookbook, Second Edition – by Tom Christiansen,Nathan Torkington ISBN : 0596003137 List Price : $49.95

  6. Perl Best Practices – by Damian Conway ISBN : 0596001738 List Price : $39.95

  7. Mastering Perl – by brian d foy ISBN : 0596527241 List Price : $39.99

  8. Beginning Perl, Second Edition – by James Lee ISBN : 159059391X List Price : $39.99

  9. Perl by Example (4th Edition) – by Ellie Quigley ISBN : 0132381826 List Price : $49.99

  10. Perl Hacks: Tips & Tools for Programming, Debugging, and Surviving – by chromatic,Damian Conway,Curtis “Ovid” Poe ISBN : 0596526741 List Price : $29.99

  11. Perl Pocket Reference, 4th Edition – by Johan Vromans ISBN : 0596003749 List Price : $9.95

  12. Sams Teach Yourself Perl in 21 Days (2nd Edition) – by Laura Lemay,Richard Colburn ISBN : 0672320355 List Price : $49.99

  13. Perl for Dummies (Fourth Edition) – by Paul Hoffman ISBN : 0764537504 List Price : $24.99

  14. Higher-Order Perl: Transforming Programs with Programs – by Mark Jason Dominus ISBN : 1558607013 List Price : $72.95

  15. Perl in A Nutshell: A Desktop Quick Reference (2nd Edition) – by Ellen Siever,Stephen Spainhour,Nathan Patwardhan ISBN : 0596002416 List Price : $39.95

  16. The Definitive Guide to Catalyst: Writing Extensible, Scalable and Maintainable Perl–Based Web Applications – by Kieren Diment,Matt Trout ISBN : 1430223650 List Price : $49.99

  17. Automating System Administration with Perl: Tools to Make You More Efficient – by David Blank-Edelman ISBN : 059600639X List Price : $39.99

  18. Perl & LWP – by Sean M. Burke ISBN : 0596001789 List Price : $39.99

  19. Perl Programming for the Absolute Beginner – by Jr., Jerry Lee Ford ISBN : 1598632221 List Price : $29.99

Related Posts:

  • No Related Posts

Programmer Analyst Responsibilities Salary and Resume

Programmer analyst is assigned to multiple business units of small to medium size or one business unit of medium to large size, and/or the project assignments are small to medium scale and moderately complex.

Programmer analyst is responsible for working as part of a team of technical and functional analysts to support rim’s sap system. We currently have opportunities for sap abap developers in atlanta, georgia or waterloo, ontario with exceptional abap skills to be involved in new project development and maintenance in a high growth, high intensity, fast paced environment working with cutting and bleeding edge technology. Reporting to team lead of abap development and working on a team of 25, you will be primarily responsible for writing new and modifying existing abap reports, user exits, badi’s, and dialogue programs. You will define and code conversions and interfaces using bapi, idoc, bdc, and transaction updates. You will also be responsible for troubleshooting, performance tuning, writing technical specifications and functional design specifications. This key opportunity to be a part of a legendary success stories will also provide opportunities for you to work in the abap workbench within sap r/3, including sd, mm, pp, fi/co, qm, wm, sm, hr, and cfm, and also interfacing to various external software packages and systems. You will also work with crm, bw / bi, portals, and solution manager.

Programmer analyst is part of a team working with different stakeholders in it to develop, test and implement solutions that meet business objectives. The senior programmer analyst’s core service is to have proven experience in the jda / manugistics demand and fulfillment modules (forecasting and replenishment functionality), undertake detail design, develop program code, test and implement systems based on the business requirements and high level design. The senior programmer analyst may also work in partnership with the business super users, business project team members, end users and software vendors for packaged applications on all phases of the project life cycle. Experience in the jda / manugistics demand and fulfillment modules (forecasting and replenishment functionality. Provide subject matter expertise (sme) for supply chain applications. Senior programmer analyst with ability to develop technical solutions according to high level specifications, and document detail design solutions. Understand and follow the system development life cycle (sdlc) process.

Programmer analyst is responsible for implementing technical specifications and technical designs; writing source code, preparing test data, tests and debugs programs, revising and refining programs as directed; documenting source code and creating technical procedures used throughout the system; working with functional and client teams to ensure the development of integrated solutions.

Programmer analyst is accountable for the analysis, design, development, implementation, and maintenance of the computer applications necessary to provide the reporting support to our business partners. Work closely with business partners to analyze reporting needs, define the business requirements, test and implement reporting solutions. Design, construct, test, document, and implement new or existing applications. Provide direct support to business partners for problem resolution, process improvements, and adhoc reporting needs. Provide consultative advice and act as the knowledge expert for reporting applications. Provide ongoing support of production applications systems including problem analysis, resolution, escalation, and reporting as necessary. Support it protocols for the ay system including on-call and disaster recovery.

Programmer analyst is responsible for contributing to meeting client commitments according to plan. The senior programmer analyst shares responsibility with the project team for the implementation of ingenium at client sites. Analyzes and designs enhancements to the system based on business requirements. Writes technical specifications from functional specifications that define business requirements. Creates test scenarios and performs unit testing of own programming changes and performs integrated block release testing at the unit test level.

Programmer analyst is responsible for all stages of software development for new and existing milwaukee public schools (mps) systems, including project management, requirements gathering, detailed analysis, design, development, documentation, and implementation.

Programmer analyst is challenged to develop and maintain credibility and effective working relations with both customer management and it personnel in a way that demonstrates an understanding of business problems, as well as it strategies, issues, and priorities. Also work at high technical levels of application system analysis and programming activities with established experience in application development methodology & project management lifecycle methodology. •design, develop, test, document, implement, and maintain computer systems that support the vendor managed data (vmd) application. participate in the design, coding, analysis, testing, and rewriting of programs and prepare documents for the system document life cycle process, without assistance. •design database tables, stored procedures, triggers and cursors.

  • Programmer analyst is responsible for consulting with user departments to determine banner-related programming needs, objectives, functions, and input and output requirements and following the software development life cycle methodology in developing appropriate solutions.
  • Consults with user departments to gather information regarding banner programming needs, objectives, functions, features, and input and output requirements.
  • Analyzes, defines, and documents requirements for data, workflow, logical processes, hardware and operating system environment, interfaces with other systems, internal and external checks and controls, and outputs.
  • Writes and maintains technical specifications based on end-user requirements.
  • Develops and maintains plans outlining steps and time tables for developing programs.
  • Writes and maintains documentation to describe program development, logic, coding, testing, changes, and corrections.
  • Writes documentation or reviews documentation written by others that describes installation and operating procedures.
  • Develops programs, applications, enhancements based on agreed upon specficiations.
  • Consults with user departments to prototype, refine, test, debug programs to meet needs, and educate in self-service on day-to-day use of the new program.
  • Tests banner and related system upgrades in a test or development environment.
  • Addresses all uncovered issues and makes upgrades available for end-user testing.
  • Provides technical assistance by responding to inquiries from others regarding errors, problems, or questions about programs.

Programmer analyst is responsible for performing the analysis, design, modification testing, installation and maintenance of integrated systems and application programs. The development process, a programmer analyst is required to understand the user’s needs, meet their expectations and communicate to solve problems. Usually working within a company management team, a programmer analyst is required to learn a company’s business objectives and adapt their systems accordingly. The analyst programmer analyzes and develops software relevant to a business’ information technology (it) requirements. This may involve installing it, designing, modifying, testing and writing programs, supporting work teams and solving problems with software.

Programmer analyst is expected to analyze moderately complex user requests and accurately size the effort with minimal supervision. The senior programmer analyst will consult to resolve systems incidents (including after hours support as needed). 3 – 5 years of full sdlc & project experience with increasing levels of leadership responsibility. Relational database experience (db2, udb, oracle, sql). Knowledge of programming languages (peoplesoft (sqr, peoplecode, appengine),cobol, c, java and html) a plus. Collaborate with it customer/end-user, human resources/corporate administration solution, engineering, operations, process and security groups to gather requirements, analyze, formulate solution alternatives, design, code & test business solutions. A minimum of a bachelor’s degree or comparable job-related experience is required.

Programmer analyst is a member of the data warehouse development team. This team supports the business needs of international banking division mis through a focus on the maintenance and delivery of the divisional data warehouse (idr), thereby enabling effective end user computing. – provide support for warehouse production process (idr). – support the etl process of miscellaneous data marts and operational data stores. – development of etl/mis projects of intermediate level of complexity. – develop and/or maintain new/existing sas code to support etl processes for idr.

Programmer analyst is responsible for the development of embedded applications pertaining to telematics devices for the crane star product. The lead programmer analyst may also be tasked with eliciting requirements or performing application design. This position must work with application development group to stringently adhere to application architecture, security, quality, and scalability requirements of the enterprise. This position will demonstrate creative thinking and decision making characteristics throughout their daily interaction with others. This individual will help guide continuous improvement as well as information technology infrastructure library (itil) alignment in all aspects of application development. Work with is management to shape the crane star application strategy and architecture. Determine yearly objectives and conduct yearly performance reviews of team members.

Programmer analyst is responsible for providing proprietary systems support, working closely with internal and external customers. Incumbent would be instrumental in the every day application of the various systems and play a major role in the functional specifications, database design, system flows, program specifications and end-user workflow. Essential duties and responsibilities: strategically align proprietary systems with the business processes, ensuring consistent daily functionality for internal and external customers. Lead and develop processes and procedures to debug and troubleshoot applications for end users. Proactively support senior management team in identifying strategic enhancements to the proprietary applications to improve customer interface and functionality of the system as a whole. Ensure the adequacy and soundness of all business applications. Seek to build new computing and systems environments that will improve processes and support critical business strategies in a resourceful, cost effective and strategic manner. In information systems or related field science or equivalent experience. 3 plus years of previous knowledge with visual basic programming, systems development, or client server programming. Experience with databases utilizing oracle or similar relational database and stored database procedures.

Related Posts:

  • No Related Posts

Get The 1000ft View Of Software Architecture

As an architect we want to know how good the software is that we are developing. Its quality has an obvious external aspect, the software should be of value to its users, but there is also a more elusive internal aspect to quality, to do with the clarity of the design, the ease with which we can understand, maintain, and extend the software. When pressed for a definition, this is where we usually end up saying “I know it when I see it.” But how can we see quality?

In an architecture diagram little boxes represent entire systems and lines between them can mean anything: a dependency, the flow of data, or a shared resource such as a bus. These diagrams are a 30.000ft view, like a landscape seen from a plane. Typically the only other view available is the source code, which is comparable to a ground level view. Both views fail to convey much information about the quality of the software, one is too high level and the other provides so much information that we cannot see structure. Clearly, what is missing is a view in between, a 1000ft view.

This 1000ft view would provide information at the right level. It aggregates large amounts of data and multiple metrics, such as method count, class fan out, or cyclomatic complexity. The actual view very much depends on a specific aspect of quality. It can be a visual representation of a dependency graph, a bar chart that shows metrics at a class level, or a sophisticated polymetric view that correlates multiple input values.

Manually creating such views and keeping them in sync with the software is a hopeless endeavor. We need tools that create these views from the only true source, the source code. For some views, a design structure matrix for example, commercial tools exists but it is also surprisingly easy to create specialized views by combining small tools that extract data and metrics with generic visualization packages. A simple example would be to load the output from checkstyle, which is essentially a set of metrics on the class and method level, into a spreadsheet to render charts. The same metrics could also be shown as a tree-map using the InfoViz toolkit. A great tool to render complex dependency graphs is GraphViz.

Once a suitable view is available software quality becomes a little less subjective. It is possible to compare the software under development with a handful of similar systems. Comparing different revisions of the same system will give an indication of trends while comparing views of different subsystems can highlight outliers. Even with just a single diagram we can rely on our ability to spot patterns and perceive aesthetics. A well-balanced tree probably represents a successful class hierarchy, a harmonious set of boxes might show code that is organized into appropriately sized classes. Most of the time a very simple relationship holds: If it looks good it probably is good.

By Erik Doernenburg

Related Posts:

  • No Related Posts

Writing C Functions in MATLAB MEX-Files

Summary: This is a basic guide to writing mex files for MATLAB in C. This guide gives a simple background of some the MATLAB mex features so that learning to write mex files can be quick and easy.

Introduction

The MATLAB M-File is very good for putting together functions or scripts that run many of MATLAB’s fast Built-In functions. One nice thing about these files is that they are never compiled and will run on any system that is already running MATLAB. MATLAB achieves this by interpreting each line of the M-File every time it is run. This method of running the code can make processing time very slow for large and complicated functions, especially those with many loops because every line within the loop will be interpreted as a new line, each time through the loop. Good MATLAB code avoids these things by using as many Built-In features and array operations as possible (because these are fast and efficient). Sometimes this is not enough…

MATLAB has the capability of running functions written in C. The files which hold the source for these functions are called MEX-Files. The mexFunctions are not intended to be a substitue for MATLAB’s Built-In operations however if you need to code many loops and other things that MATLAB is not very good at, this is a good option. This feature also allows system-specific APIs to be called to extend MATLAB’s abilities (see the Serial Port Tutorial for an example of this).

This document is arranged in the following manner:

  • The MEX-Function: Interface to MATLAB
  • Getting and Creating Data
  • Calling Built-In Functions from a MEX-File
  • Compiling
  • Useful Functions not Mentioned Here

These are some of the basic topics that will allow you to create a MEX-file in a short time. There are many other features and abilities that MATLAB has which can be explored in the MATLAB documentation.

The MEX-Function: Interface to MATLAB

When writing programs in C, it is always assumed that the program will start execution from the main(). MEX -Files are similar in that they always start execution from a special function called the mexFunction. This function has return type void and is the “gateway” between the MATLAB function call, and your C code.

Example 1

 

//You can include any C libraries that you normally use

#include “math.h”

#include “mex.h” //–This one is required

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

{

//All code and internal function calls go in here!

return;

}

       

In order to make a mex-function, you must include the “mex.h” library. This library contains all of the APIs that MATLAB provides. There are four input parameters to the mexFunction which correspond to the way a function is called in MATLAB – (ex: [z0,z1] = jasonsFunction(x,y,z);)

  • nlhs (Type = int): This paramter represents the number of “left hand side” arguments. So in my example function call, nlhs = 2 (the outputs are z0 and z1).
  • plhs (Type = array of pointers to mxArrays): This parameter is the actual output arguments. As we will see later, an mxArray is MATLAB’s structure for holding data and each element in plhs holds an mxArray of data.
  • nrhs (Type = int): Similar to nlhs, this paramter holds the number of “right hand side” arguments.
  • prhs (Type = const array of pointers to mxArrays): This array hold all of the pointers to the mxArrays of input data for instance, prhs[0] holds the mxArray containing x, prhs[1] holds the mxArray containing y, etc).

Getting and Creating Data

The main MATLAB structure used for holding data in MEX-Files is the mxArray. This structure can hold real data, complex data, arrays, matrices, sparse-arrays, strings, and a whole host of other MATLAB data-structures. Using data from some of the basic structures is shown here, but refer to the MATLAB help for using other data structures.

Get that Data

Lets use my example from above (if you forgot: [z0,z1] = jasonsFunction(x,y,z);). Assume that x is a 2-D matrix, y is a string, and z is an integer. Here we wills ee how to extract and use these different types of data.

We have access to the input paramter x by a pointer held in the array prhs. In C, when referencing an array by index, the variable is automatically dereferenced (ie: you dont need to use a star). For clarity, I will copy the variable x over to an mxArray pointer named xData (This does not need to be done for the code to work).

Example 2

 

//—Inside mexFunction—

 

//Declarations

mxArray *xData;

double *xValues;

int i,j;

int rowLen, colLen;

double avg;

 

//Copy input pointer x

xData = prhs[0];

 

//Get matrix x

xValues = mxGetPr(xData);

rowLen = mxGetN(xData);

colLen = mxGetM(xData);

 

//Print the integer avg of each col to matlab console

for(i=0;i<rowLen;i++)

{

    avg=0;

    for(j=0;j<colLen;j++)

    {

        avg += xValues[(i*colLen)+j];

        //Another Method:

        //

        //avg += *xValues++;

    }

    avg = avg/colLen;

    printf(“The average of row %d, is %d”,i,(int)avg);

}

               

The function mxGetPr is used to get a pointer to the real data xData. This function takes a pointer to an mxArray as the intput paramter, and returns a pointer array of doubles. A similar function mxGetPi can be used for complex data. mxGetN and mxGetM return integers of the lengths of the row and column in the matrix. If this were an array of data, one of these return values would be zero. MATLAB gives the matrix as rows first, then columns (if you were to traverse the matrix linearly) so to jump by position, (x,y) maps to x*colLen+y. MATLAB organizes its arrays this way to reduce cache misses when the row traversal is on the outside loop. It is good to code it this way if you are working for efficiency. printf() will print out to the MATLAB command prompt.

Getting a string is very similar, but has its own method. The example below shows the procedure for getting a string. Again, I will copy the input to a pointer called yData.

Example 3

 

//—Inside mexFunction—

 

//Declarations

mxArray *yData;

int yLength;

char *TheString;

 

//Copy input pointer y

yData = prhs[1];

 

//Make “TheString” point to the string

yLength = mxGetN(yData)+1;

TheString = mxCalloc(yLength, sizeof(char)); //mxCalloc is similar to malloc in C

mxGetString(yData,TheString,yLength);

           

This last example shows how to get a simple integer. This is the method that has always worked for me, but it seems kind of strange so I imagine there is another way to do this.

Example 4

 

//—Inside mexFunction—

 

//Declarations

mxArray *zData;

int Num;

 

//Copy input pointer z

zData = prhs[2];

 

//Get the Integer

Num = (int)(mxGetScalar(zData));

 

//print it out on the screen

printf(“Your favorite integer is: %d”,Num);

           

Three data types have been shown here. There are several others and the MATLAB help as well as the MATLAB example code shows how to use them. Now to export the data….

Returning Data to MATLAB

Assigning return values and data to the left hand side parameters is very similar to getting the data from the last section. The difference here is that memory must be allocated for the data strucure being used on the output. Here is an example of how to return a 2-D matrix. This code will take the input x and return a copy of the matrix to z0 with every point in x multiplied by 2. Note that I am not copying the name of the output mxArray pointer into another variable.

Example 5

 

//—Inside mexFunction—

 

//Declarations

mxArray *xData;

double *xValues, *outArray;

int i,j;

int rowLen, colLen;

 

//Copy input pointer x

xData = prhs[0];

 

//Get matrix x

xValues = mxGetPr(xData);

rowLen = mxGetN(xData);

colLen = mxGetM(xData);

 

//Allocate memory and assign output pointer

plhs[0] = mxCreateDoubleMatrix(colLen, rowLen, mxREAL); //mxReal is our data-type

 

//Get a pointer to the data space in our newly allocated memory

outArray = mxGetPr(plhs[0]);

 

//Copy matrix while multiplying each point by 2

for(i=0;i<rowLen;i++)

{

    for(j=0;j<colLen;j++)

    {

        outArray[(i*colLen)+j] = 2*xValues[(i*colLen)+j];

    }

}

           

Calling Built-In Functions from a MEX-File

While it may be nice to write functions in C, there are so many useful and fast pre-written functions in MATLAB that it would be a crime if we could not use them. Luckily, The Mathworks (creators of MATLAB) has provided this capability. Built-In functions have a parameter list similar to the mexFunction itself. This example uses the built-in function z = conv(x,y);

Example 6

 

//—Inside mexFunction—

 

//Declarations

mxArray *result;

mxArray *arguments[2];

 

//Fill in the input parameters with some trash

arguments[0] = mxCreateDoubleMatrix(1, 20, mxREAL);

arguments[1] = mxCreateDoubleMatrix(1, 10, mxREAL);

 

//In the real world I imagine you would want to actually put

//some useful data into the arrays above, but for this example

//it doesnt seem neccesary.

 

//Call the Function

mexCallMATLAB(1,&result,2,arguments,”conv”);

 

//Now result points to an mxArray and you can extract the data as you please!

       

Compiling

Compiling the MEX-Files is similar to compiling with gcc or any other command line compiler. In the MATLAB command prompt, change your current directory to the location of the MEX source file. Type: mex filename.c into the MATLAB command window. MATLAB may ask you to choose a compiler. Choose the compiler with MATLAB in its directory path. Your function will be called with the same name as your file. (ex: mex jasonsFunction.c produces a function that can be called from MATLAB as [z0,z1] = jasonsFunction(x,y,z);)

After compiling MATLAB produces the actual MEX binary that can be called as a normal MATLAB function. To call this function, you must be in the same directory with the binary. The binary goes by different names depending what system you compiled the source on (ex: Windows=.dll MacOSX=.mexmac Solaris=.mexsol Linux=.mexlx). Your MEX-function will have to be compiled on each type of system that you want to run it on because the binaries are operating system specific.

Other Useful Functions

Here is a nice list of useful functions in the mex library that make life a lot easier. Most of these work in similar fashion to those functions described above. The full list can be found in the MATLAB help documentation with many examples. There are also some example files in the MATLAB extern directory (MATLAB/extern/examples/mx or mex).

  • mxDuplicateArray
  • mexErrMsgTxt
  • mxMalloc
  • mxRealloc
  • mxCreateString
  • mxDestroyArray
  • mxFree
  • mxGetCell
  • mxGetData
  • and many more…

Author:

 Laska, Jason. Writing C Functions in MATLAB (MEX-Files). Connexions. 1 Aug. 2004 <http://cnx.org/content/m12348/1.2/>.

Related Posts:

  • No Related Posts

XML – Visual QuickStart Guide (2nd Edition) Review – Author Kevin Howard Goldberg

What is XML? XML, or eXtensible Markup Language, is a specification for storing information. It is also a specification for describing the structure of that information. And while XML is a markup language (just like HTML), XML has no tags of its own. It allows the person writing the XML to create whatever tags they need. The only condition is that these newly created tags adhere to the rules of the XML specification.

xml visual quickstart guide

In the seven years since the first edition of “XML: Visual QuickStart Guide” was published, XML has taken its place next to HTML as a foundational language on the Internet. XML has become a very popular method for storing data and the most popular method for transmitting data between all sorts of systems and applications. The reason being, where HTML was designed to display information, XML was designed to manage it.

This book begins by showing you the basics of the XML language. Then, by building on that knowledge, additional and supporting languages and systems will be discussed. To get the most out of this book, you should be somewhat familiar with HTML, although you don’t need to be an expert coder by any stretch. No other previous knowledge is required.

XML Visual QuickStart Guide 2nd Edition is divided into seven parts. Each part contains one or more chapters with step-by-step instructions that explain how to perform XML-related tasks. Wherever possible, examples of the concepts being discussed are displayed, and the parts of the examples on which to focus are highlighted.

Contents of Book XML – Visual QuickStart Guide


Part 1:  Introduction
Chapter 1:  Writing XML 

Part 2:  XSL
Chapter 2:  XSLT
Chapter 3:  XPath Patterns and Expressions
Chapter 4:  XPath Functions
Chapter 5:  XSL-FO 

Part 3:  DTD
Chapter 6:  Creating a DTD
Chapter 7:  Entities and Notations in DTDs
Chapter 8:  Validation and Using DTDs 

Part 4:  XML Schema
Chapter 9:  XML Schema Basics
Chapter 10:  Defining Simple Types
Chapter 11:  Defining Complex Types 

Part 5:  Namespaces
Chapter 12:  XML Namespaces
Chapter 13:  Using XML Namespaces 

Part 6:  Recent W3C Recommendations
Chapter 14:  XSLT 2.0
Chapter 15:  XPath 2.0
Chapter 16:  XQuery 1.0 

Part 7:  XML in Practice
Chapter 17:  Ajax, RSS, SOAP and More

XML (eXtensible Markup Language) has become the medium to move data in efficient and predictable ways.

I highly recommend this book I have had some prior exposure to xml but by no means am an expert. The writing sytle is easy to follow and the book contains plenty of examples, and tips to provide.

Great resource Mr. Goldberg writes clearly and constructively. My XML knowledge before reading this book was fuzzy at best. Now, I’m an authority on the subject. Fantastic reference.

Dont waste your time searching for other XML Books… By far one of the best XML books on the market today!! As professionals, time is money.

Very Good Book on XML I am very impressed with the book so far (need to finish). It holds true to the previous Visual QuickStart Guides that I have read in that it has tons of examples that go along.

Finally! A GOOD Beginners Guide to XML that Delivers Truth be told, I do not work as a Web developer, but on a daily basis my job has me in contact with business clients and Web application developers.

The Best Introduction to XML I’ve Found Quite simply the best introduction to XML and all the related standards which I’ve found so far. Obviously it doesn’t have the breadth and depth of, say the O’Reilly books.

Related Posts:

  • No Related Posts