Tuesday, February 08, 2005

What deliverables from the SDLC?

The project manager should see all of the documentation.
  • Project Scope and Objectives
  • Systems investigation Report
  • The current business systems functions
  • Technical Aspects of the system
  • Their interpretation of want I want the system to do
  • Feasibility Study Report
  • Economical Consideration
  • Technical
  • Organizational
  • System Analysis
  • Logical Model of existing Systems
  • Data Flow Diagrams
  • Data Modeling Diagram
  • Data mold of Business entities
The project manager should review all these and signed off before we have proceeded to the Systems Design phase. In the Systems Design Phase I would want to see:
The user interface (screens)
  • Reports
  • The interface to other systems.
  • The data and how it will be stored.
  • How the systems process will work
In the detailed design phase I would want to see the main design document.
  • Set of program specifications
  • Pseudo-code
  • Data flow diagrams
  • Physical components of the system such as PC’s, phone lines, electrical wiring etc.

What do you need to see before you commit more money to the project?
One of the very first questions that I would ask is:
  • Have you ever developed a system like this before?
  • If so, do you have examples of your work or references?
I would commit more money:
  • If all the documentation is in order.
  • It is clear and concise.
  • I understand the end game of each phase.
  • I personally feel confidant in the development team and the management.
  • There are no sales guys present.
  • I have had personally one on one casual conversations with key players and developers.
  • If the budget was reasonable and customary.
  • If I believe in their proposal.
  • If my past experience with the development team was positive.
  • Other customers are positive about the development team.
  • The development teams personal commitment, attitude and observations of work ethics.
These are just a few factors that give me a warn and fuzzy about moving forward and making more commitments. Since I am a systems developer and a systems engineer by trade, I am much more aware of certain things that some customers would not be aware of in the attention to detail of the project and developers.

For example a simple walk through the office I can tell by what type of computer, OS and software tools as to where management is given the development teams the appropriate and industry standard and currently used tools. If the development team are all Linux developers, creating a Windows application that will immediate throw up a red flag. Why? Linux users/developers are much less likely to follow the development guidelines publish by Microsoft for developing Windows applications. Another red flag would be if all the developers are running on Windows 98. That tells me management is not supporting the development team with the latest tools and it is very likely the development team has little experience and exposure to developing for Windows XP or the platform I require.


What will cause you to pull the plug on the project?

With all the things stated above:
  • If some or most of the above that are negative.
  • Unclear and confusing documentation.
  • Smoke and Mirror documentation.
  • Lack of planning.
  • Lack of documentation.
  • The project is completely off base from my vision.
  • Too expensive.
  • The development team is not experience enough in the are that I need development for.
  • I feel uncomfortable with the people I am working with because of the attitude and their motivation.
  • I feel unsure of the teams abilities.
  • They have greatly exceeded the last proposal budget.
  • They are severely late with the deliverable.
  • I have found someone else that is better, that is cheaper, faster and better.
  • I have been told by management that I must discontinue the project for reasons that my company might give such as being bought out by another company, or (the customer and I work for the same company) and we are bought out.
  • The business situation changes, such as the lead developer quits, dies or leaves the project.
  • There is a major break down in communications and personalities.
  • Lack of cooperation from the development team.
There are many reasons, but these are a few that come to mind.

Monday, February 07, 2005

Comparing between High-level vs. Detail Design

High-level Design
The High-level Design is a basic idea or concept of the design. It is the 30,000 foot view and very little detail about individual components and is mainly the major much larger components. An example would be a diagram of out solar systems with each of the planets with their respective moons rotating around the sun. An even higher-level would be the Hubble telescope deep space view. In each a one inch area view of the night sky contained a million new un-before seen galaxies like our own. Wow now that is high level. Something a little more close to home would be like a data flow diagram. This is a high-level design that contains very little detail of each component, but gives the overall view of the entire process.

Detailed Design
A Detailed Design can be an individual process or components in which it can be much more closely examined. It doesn't show all the connections in the over all systems, but rather it show all the connections within it's own component or process. A good example of a detailed design would be the diagram that Bob posted the other day. This could be one component from the above diagram such as the "Material Attribute Data" component above. This type of diagram actually shows the data tables, fields and table relationships with primary and foreign keys.


What are the differences and/or similarities?

The major differences is the level of detail for each component. The High-Level is a general overview of the entire process using simple concepts, shapes and design. The Detailed Design is very detailed about it individual components or processes. The similarities are the structure, flow and the fact they show the pathways of how components and processes are related and connected.

When do they occur in the SDLC?
  • Stage 1 Determine Scope - High-level Design (old detailed designs used as reference)
  • Stage 2 System Investigate and Feasibility Study - High-level Design (old detailed designs used as reference)
  • Stage 3 System Analysis - High-level Design, but maybe the beginning creation of the Detailed Design Ideas
  • Stage 4 System Design - Creation of the Detailed Design, High-level Design used as reference
  • Stage 5 Detailed Design - Refinement of the Detailed Design, High-level Design used as reference
  • Stage 6 implementation - High-level Design & Detailed Design used as reference
  • Stage 7 Changeover - High-level Design & Detailed Design used as reference
  • Stage 8 Eval & Maintenance - High-level Design & Detailed Design used as reference

What is the purpose of each?

The High-Level design is to give the customer, management, and a developers and over all idea of what the project and process are about.

The Developers then take the High-level designs and develop them into individual components and processes designs.

Sunday, February 06, 2005

CASE Tools

A good way to manage the timeline is to use a CASE Tool like Microsoft Project. It can be used individually or on a team on a sever to manage the different phases of the SDLC and the timelines. Makes the project file available to all members on the team ensure that everyone is on the same page and knows what is coming next. It also aids in having to make adjustments to the project timeline less laborious. Managing a project on paper can be very time consuming, and not everyone will know what needs to be next or the status of certain phases of the project.

http://office.microsoft.com/en-us/FX010857951033.aspx

Another good CASE tool to use is Microsoft Visio. It has many features to make the creation of these logical models less laborious. It can import data and automatically build models. It can import database design information allows for the reverse engineering of a database to include relationships. It can do organization charts, network designs and many more. You can build and link the designs and even layer a design. This is one of my favorite features. It comes with a huge library of symbols and automatic snapping and connecting lines. Once you create a design you can use it in Microsoft Biztalk server and with Visual Studio.Net to create real-time living diagrams of processes and network monitoring.

Visio
http://office.microsoft.com/en-us/FX010857981033.aspx

Biztalk
http://www.microsoft.com/biztalk/

Visual Studio.Net
http://msdn.microsoft.com/vstudio/

This is not meant to be a commercial for Microsoft. These just happen to be tools that I use.

How to Troubleshoot a USB Port

If you have an optical mouse, plug that into the USB ports. If the optical light does not come on the ports are dead. You will have to call the vendor that made your computer like Dell. More than likely they will have to replace the motherboard. Hopeful it is still under warranty. If not then just go buy a USB 2.0 card for about $30 and that will bypass the issue.

If the optical mouse light come on and it works, the USB port maybe an older 1.1 versions and the USB adapter may not be compatible with the ports. In that case just go buy a USB 2.0 card for about $30 and that will bypass the issue.

Also check with the computer vendor and check to see if the have any firmware updates for the BIOS or driver updates for the USB ports. Then check to ensure that you have all the Windows Updates.

Once you have done this and it is still not working, but you do get a light on the optical mouse then uninstall/reinstall the USB drivers.

To do this:
  • Right Click on My Computer on the Desktop
  • Select Manage
  • Expand the Device Manager
  • Uninstall everything under the Universal Serial Bus Controller
  • Then reboot.

If this fails then USB ports must be damaged in some way. Then just go buy a USB 2.0 card for about $30 and that will bypass the issue.

Computer-Aided Software Engineering (CASE) Tools

CASE tools are used to facilitate and expedite the documentation and design of the process. CASE is also known as Computer-Aided Systems Engineering. Both are accepted to be one in the same in the industry.

CASE tools include planning tools, diagramming tools, and prototyping tools, such as computer display, projectors and report tools. Analyst can diagram and prototype ideas that can be display, refined and updated on the spot. By using CASE Tools one can compare the old designs with the new designs to determine what improvements can be made where in a visual form and fashion.

CASE tools are visual in a graphic form and allow everyone to see and understand what the designs are going to look like.CASE tools are known as Upper Level or Upper CASE tools to start at a high level concept and drill down on sub levels to more details of individual components within the entire process.

Examples of CASE Tools are Microsoft Power Point for presentations; Microsoft Visio for organizational charts, system design, database designs, data flow diagrams, etc; Microsoft Word for word processing of documentation; Microsoft Excel for number crunching, connection to real-time inventory, budgeting tool, and data analysis; Microsoft Access for prototype design, proof of concept and connecting to real-time data for analysis; Visual Studio.Net for application development, design, code management, and process analysis; Microsoft BizTalk 2004 for combining Visio, Word, Excel, Access, and Visual Studio.NET into a single system that diagrams and demonstrates live functions and operations of a complete process in a single tool. See the references for links to all these tools.

CASE TOOLS Examples
- BIZTALK: http://www.microsoft.com/biztalk/
- BIZTALK DEMO: http://www.microsoft.com/biztalk/evaluation/demo/default.asp
- Access: http://office.microsoft.com/en-us/FX010857911033.aspx
- Excel: http://office.microsoft.com/en-us/FX010858001033.aspx
- Power Point: http://office.microsoft.com/en-us/FX010857971033.aspx
- Visio http://office.microsoft.com/en-us/FX010857981033.aspx
- Word: http://office.microsoft.com/en-us/FX010857991033.aspx

GSS Tools that can be used in JAD with CASE
- ICQ: http://www.icq.com/
- IRC: http://www.irc.org/
- Outlook Express: http://www.microsoft.com/windows/oe/
- Newsgroups: http://groups-beta.google.com/
- MSN IM http://www.imagine-msn.com/messenger/default.aspx?locale=en-US
- YAHOO IM: http://messenger.yahoo.com/
- AOL IM: http://www.aol.com/aim/downloadaim.adp
- Bulletin Boards: http://www.phpbb.com/

Saturday, February 05, 2005

Deliverables in the Analysis Phase of the SDLC

There are three deliverables that the development team must build in the Analysis Phase before the Design Phase begins. What are they and why are they important to the customers of the new system? What are the three deliverables?

Deliverable #1: Design Strategy

It is composed of several alternative designs for the new system. It can include several choices for the system’s functionality, hardware, system software platform, and method for acquisition. These are possible courses of actions proposed by the development team. The customers are asked to choose between three designs that differ in cost and functionality.

Low-end: This the least costly that the other two solutions. This is the basic solution that has no extra amenities or enhancement. One could compare Windows Notepad as a basic barebones word processor and lacks many of the features of Microsoft Word 2003. Because it is basic it is the fastest to develop.

High-end: This is the most expensive solution that would contain many enhancements, features and functionality. Microsoft Word 2003 would be a good example of this as compared to Notepad. The extra features for this application is the main focus not the cost.

Middle: This is a in between solution that is basic but with moderate features within a certain set cost that is much less than the high-end solution, and more than the low end solution. Microsoft WordPad would be a good example. It is a very basic Word with formatting and rich text like Word 2003, but without the additional nice features and cost.


Deliverable #2: Recommended Course of Action

This is the course of action that the development team thinks is the best to build and why. The recommendation helps address customer issues before they commit to the project.

Requirements:
- Will all the customer requirements be incorporated in the new system?
- What functions were added or left out and why?

Software:
- Will the new system run on a mainframe platform, standalone personal computers, or a client/server platform?
- What are the advantages and disadvantages of each?

Hardware:
- Can the new system run on the current hardware or will the company have to spend money to upgrade their computer systems?

Infrastructure:
- Will the company be able to trains and support the users.
- How big of a change will the new system require the company to make to the way it does business?

Implementation:
- How difficult or easy will the system be to implement?

Organization:
- Does the new system work well with the company’s organization?
- Will the users accept it?
- Can the users even understand the new system?
- How will it help the organization?

Deliverable #3: Baseline Project Plan

The plan should show task sequences, dependencies, time requirements and the project critical path. This can be in a Gantt chart like is used in Microsoft Project. It is important to have a plan for both you and the customer. This allows the development team to give the customer a feel for the amount of work involved in the recommended course of action.

Why are they important to the customers of the new system? They are important to the customer because it gives them a understanding of the design, costs and the amount of work involved in the project. It also helps them understand if the project is addressing their needs and goals. By having them sign-off on it means that they claim that they understand the project and agree with the course of action.

In addition to this the deliverables are the bases in which the development team will be their design. The deliverables must be signed-off before proceeding to the design phase. This will provide your CYA and that the customer has committed to paying you for the project.

Monday, January 31, 2005

About Feasibility Studies for the SDLC

Why is it so important?

As the title of the report states, is the project capable of being accomplished or brought about? Is it possible?Is it logical? It answers these questions. It is to establish whether or not at an early stage as possible the project is realistic.
  • The principal work areas for the project will have been identified.
  • Any needs for specialist staff to be involved in the later stages of the project willhave been noted.
  • Possible improvement or potential for savings may have become apparent duringthe investigation.

What is its purpose?
It is to establish the feasibility of introducing a computer system. There three main areas: economic, technical and organizational.

Economics

  • Costs (Systems analysis and design, Purchase of hardware, Software costs, Training costs, Installation costs, Conversion and changeover costs, Redundancy costs)
  • Benefits (Savings in labour costs, Benefits due to faster processing, Better decision making, Better customer service, Error reduction)
  • Cost Benefit Comparison (This weights the difference in the hard costs and the non-measurable benefits.)

Technical
This is the technical possibility and desirability of a computer solution. There are several categories that are desired that can make the project more feasible:

  • Does it follow Rule-governed tasks?
  • Does it eliminate Repetitive task?
  • Does it solve Complex tasks?
  • Does it have a High degree of accuracy?
  • Does it have Speed of response?
  • Can the Data used for many tasks?

Organizational Feasibility
This is also known as "Operational Feasibility". It addresses:

  • Will the organization accept the system or will there be conflict?
  • Will people be able to cope with the new system?
  • Is the organizational structure compatible with the new system?


Who is it written for?
It is for everyone involved in the process the developers, management and the customer.

Why is SIGN-OFF necessary on this deliverable?
Sign off means that all parties agree and it is a must in order to move onto the next stage. It is also there for the CYA factor. The fact that someone signed off means that they understand the project being proposed and are giving the ok to proceed.


Pharming - The New Buzzword

Let me be the first to introduce to you a new security buzzword that I just read about today.

Pharming

Like Phishing it attempts to capture your user name and password by directing you to an evil web site that appears to be legit. Phishing requires the user to click on a link in SPAM. Pharming is handled at the DNS level. The evil doer changes your local host file to direct your request to your banking site to their evil server.

Another methods is to change your default ISP DNS server in your TCP/IP setting to the evil doers evil DNS server. Once that happens you can not tell if you are really at your banks web site or the evil doers web site. Once you enter your user name and password they have your banking account.

We have seen this with spyware putting entries into the local host file and changing the DNS settings over the last six months. Now evil doers are going for your bank account using the same methods.

More on Pharming
http://www.theregister.co.uk/2005/01/31/pharming/

Here is an article about Phishing.
http://security.efsnm.com/index.php/weblog/phishing_scams/

System Audits Tools

There are hundreds of different tools out there. For example: When I do a network audit I use three different companies audit tools. They all claim to do the same thing, but I have found each has it strengths and weakness.

So I run all three to get the information I really need and disregard where they over lap or do not provide any new information. I have not found a single be all do all tool. So you will have to try several for the project that you may be working on.

Once you have identify the system you need to audit, let me know I can point you to a couple that you can try. Most provide a 15 to 30 day free trial. You will know on the first one or two audits if the tool is right for the job at hand.

Here are a couple of network audit tools that I use.

GFI: Network Security Scanner (Affordable)
http://www.gfi.com/lannetscan/

Shavlik: HFNETCHKPro: Security & Patch Management (Free for small businesses)
http://www.shavlik.com/hfn_windows.aspx

Sunbelt Network Security Inspector (Very Expensive, but not only ID's the issues, but provides supporting detailed documentation on how to fix the issues)
http://www.sunbeltsoftware.com/product.cfm?id=987

If systems are automated with self documentation, company policy mandates it, and the SDLC a lots time for it, then it can stay up to date. To get a company to get to that point really takes a lot of time and growth.