Tuesday, November 3, 2009

Process Models

- Plan of action
- A plan of what steps are going to be taken as the development proceeds.
2 distinct uses of process model:

1. It can use as a basis for the plan for the plan for a project.
2. It is use to analyze what actually happens during a project.
Several mainstream process models:
• Waterfall
• Prototyping
• Formal methods
• Spiral
Components of software development
During the development of a software there are several activities must be carried out:
• Requirements engineering
• Architectural or large-scale design
• Small-scale design
• Coding
• System integration
• Validation
• Verification
• Maintenance
Requirements engineering (specification) – the developers finds out what the user wants the software to do and records the requirements as clearly as possible.
Architectural or large-scale design – software must be constructs from modules or components.
Detailed design – the design of each module, or components, is carried out.
Coding – the detailed design are converted into instructions written in the programming language.
System integration – the individual components of the software are combined together.
Maintenance – sooner or later the software need fixing faults or error, and enhancing.

Validation and verification
- Ways of checking that development has been done properly.
Validation – “are we building the product right?”
Verification – “are we building the right product?”
Two types of Verification
- Unit testing
 Each module of the software is tested in isolation. The inputs to unit testing are:
1. The unit specification
2. The unit code
3. A list of expected test results
- System testing or integration testing – the modules are linked together and the complete system tested. The inputs to system testing are the system specification and the code for the complete system.

The waterfall model
Software development is split up into a number of independent steps that are carried out in sequence one after another. Each stage produces a product, which is the input into the next stage.

The waterfall model makes no stipulations about what methods are used at any of its stages, nor does it stipulate what notations are used for the products at each stage.
Principles of the waterfall model are:
• It is a series of steps (like a production line)
• Each step is well defined
• Each step creates a definite product (this is often a piece of paper)
• Each product forms the basis for the next step
• The correctness of each step can be checked (verification or validation)
The strengths of Waterfall Model:
• It divides a complex task into smaller, more manageable task
• Each task produces a well-defined deliverable.
Feedback in the Waterfall Model
- If a problem is found at a particular stage in development, there is no way of influencing an earlier stage in order to rectify the problem.
- So that a problem uncovered at one stage can cause remedial action to be taken at the previous stage.

Prototyping
- Presents one solution to the problem of ensuring that the customer gets what they want.
The purpose is to aid the analysis and design stages of a project by enabling users to see very early what the system will do – that is to facilitate validation.
Benefits of developing a prototype early in the software process:
 Misunderstanding between software developers and user may be indentified as the system functions are demonstrated
 Missing facilitate may be detected
 Difficult-to-use or confusing facilities may be indentified and refined
 Software developers may find incomplete and/or inconsistent requirements as the prototype is developed
 A working system is available quickly to demonstrate the feasibility and usefulness of the application to management.
 User training – a prototype system can be used for training user before the final system has been delivered.
 To establish that some new technology will provide the facilities needed.
2 types of prototypes
1. Throwaway
The starting point for it is an outline specification for the software. It implements only those requirements that are poorly understood.

Stage of throwaway prototyping:
1. Outline specification – creation of an initial, often partial, specification.
2. Establishment of objectives – creating a objective of a prototype
3. Selection of function – the stage is to decide what to put into and what to leave out of the prototype. This is determined by the objectives of the system.
4. Prototype construction – speed and cost of construction of the prototype is crucial.
5. Evaluation (check with the user) – the users interact with the prototype.
6. Iteration (refinement) – the prototype is rapidly modified, evaluation is carried out and the process repeated until the prototype meets the objectives
7. Completion – the product of the prototyping process is a specification that meets the users’ requirements.
2. Evolutionary prototyping
It is based on the idea of developing an initial implementation, exposing this to user comment and refining this through repeated stages until an adequate system has been developed.
Stage of evolutionary prototyping:
1. Requirements definition (initial specification) – a stage of thorough analysis is used to create an initial specification for the software.
2. Prototype construction – a prototype is built in a quality manner, including design, documentation and thorough verification.
3. Evaluation (check with the user) – during evaluation, problems in the developer’s perception of the customer requirements are covered.
4. Iteration (refine the prototype) – evaluation is carried repeatedly until the prototype meets the objectives.
Advantages
1. It enables developers to cope with lack of clarity in requirements
2. It gives the user the opportunity to change his/her mind before commitment to the final system
3. User requirements are easier to determine
4. System are developed faster
5. Development effort is reduced because the resultant system is the right system
6. Maintenance effort is reduced because the system meets the user needs
7. End-user involvement is facilitated
8. User-developer communication is enhanced
9. User are not frustrated while they wait for the final system, because they can see a working system
10. There is an increased chance that a system will be more user friendly
11. System are easier for end-user to learn and use because users know what to expect
12. It facilitates user training while development is going on
13. There is increase customer satisfaction with the delivered software.
Disadvantages
For the users,
1. Prototyping is carried out in a artificial environment, user may miss some of the shortcomings.
2. Undue user expectation – the ability of the developers to create a prototype so quickly may raise undue expectations that the final system will soon be complete. They see a partial system and may not be finished system.
3. Inconsistency between a prototype and the final system – if the prototype is a throwaway, the end-product may not be exactly like the prototype.
4. User may never be satisfied because they are given to much opportunity to change the development of the system.
For software engineers,
1. Incomplete analysis – because prototypes are produce quickly, developers may be tempted to plunge into prototyping before sufficient requirements analysis has taken place.
2. Iteration is not easily accepted by some designers, because it necessities discarding their own work.
3. Non-functional requirements may be omitted, since prototype focuses only a functionality
Managerial problem,
1. Estimating, planning and managing a prototyping project can be difficult because it can be hard to predict how many iterations of prototyping will take place.
2. Procedures for change and configuration management may be unsuitable for control
3. Many project management structures are set up assuming a process model, like the waterfall model, that generates regular deliverables to assess progress.
The Spiral Model
- Attempts to solve some of the problems of the waterfall model, while incorporating its best features – planning, phases, intermediate products.
- Incorporates prototyping as necessary.
- The recognition that there is often enormous uncertainly at many stages during a software development project.
Software Development must Series of major steps:
1. Feasibility study
2. Requirements analysis
3. Architectural software design
4. Implementation ( including detailed design, coding, unit testing, integration, and acceptance)
Risk of Spiral Model:
1. During a long development, the users’ requirements are neglected.
2. A competitor launches a rival package on the market.
3. Someone leaves the development team
4. One of the component tasks of the development goes beyond its deadline
5. It is discovered that the software performs much too slowly.
6. The software occupies too much main memory
7. A new software development tool becomes available
8. A user requirement was misunderstood
9. The user changes one of the requirements
10. The target hardware configuration changes.

The spiral model makes explicit provision for dealing with areas of uncertainly like these and thereby minimizes the risk to the software project.
Common activities on each major step:
1. Taking stock (identifying objectives, alternatives, and constraints)
2. Dealing with the risk
3. Development activities peculiar to this step – EX. Requirements analysis, design, coding
4. Validation and verification, as appropriate
5. Planning the next stage
6. review

Software – Problems and Prospects

Software Engineering is all about methods, tools and techniques used for developing software.

2 types of Software
1. System software – software that acts as tools to help construct or support applications software.
2. Application software – helps perform some directly useful or enjoyable task.

Problems in software development and the goals that software development seeks to achieve:
• Meeting users’ needs
• Low cost of production
• High performance
• Portability
• Low cost of maintenance
• High reliability
• Delivery on time

Meeting user’s needs
- The first step in developing some software is to find out what the client, customer or user needs. This is called requirement analysis or requirement engineering.
The cost of software production
- Cost that spend in developing a software
• Programmer productivity

 The cost of software is determined largely by the salaries paid to the programmers and by the productivity of the programmers.
• Predicting software cost
• Hardware versus software cost
• The impact of personal computers
• Software packages
• Application development tools
• The IT revolution
• Software re-use

Meeting deadlines
- Meet the deadline of the project depend of the need of client.
Software performance
- Called efficiency
Portability
- Always been to transfer software from one type of computer to another with the minimum expenditure of effort.

Maintenance
- Term for any effort that is put into a piece of software after it has been written and put into operation.

2 types of maintenance:
1. Remedial maintenance – is time spent correcting faults in the software (fixing bugs)
2. Adaptive maintenance – is altering software either because the users needs have changed or because operating system or programming language has chanced.
Reliability
- A piece of software is said to be reliable if it works and continues to work, without crashing and without doing something undesirable.

Useful to define bugs in software:
Error – a wrong decision made during software development
Fault – a problem that may cause software to depart from its intended behavior
Failure – an event when software departs from intended behavior
Software crisis
Various perceive problems with software:
• It fails to do what users want it to do
• It is expensive
• It isn’t always fast enough
• It cannot be transferred to another machine easily
• Maintenance is expensive
• It is unreliable
• It is often late
• It is not always easy to use.

Monday, March 23, 2009

Virtual Conpany

Advantages Virtual Company


Cost



The Virtual Company was a low cost for the manager even employees who worked in information technology. They don't need to travel to went in the company he worked. He do the project or checked the improvements of the projects in any place he wants.


Time and Focus


A Virtual company was a less time consuming because you can manage the company any time you wants.


Effectiveness


It is effective when he have a computer, and broadband/internet connection. The employee and the manager was easily communicate through the use of chatting and eamil

Thursday, January 15, 2009

Email Etiquette

Email Etiquette
In this day and age, some companies have still not realized how important their email communications. Many companies send email replies late or not at all, or send replies that do not actually answer the questions you asked. If your company is able to deal professionally with email, this will provide your company with that all important competitive edge. Moreover by educating employees as to what can and cannot be said in an email, you can protect your company from awkward liability issues.
- www.emailreplies.com
One problem with less formal email is missed signals - the written message doesn't come with facial expressions or gestures that you would get in a face-to-face meeting, and there's no tone of voice to interpret as you could over the telephone. A great deal of human communication comes from these non-verbal signals and traditionally they help to make the message clear.
For example, irony and humor can be difficult to express in a mail message - many people get round this by using smiley’s such as :) to indicate humor - but not everyone knows what these mean, so they are not foolproof.


Good Email Etiquette


• Do check to see what your organization’s email policy is. Many organizations have rules about the types of message that can be sent and also if your email is monitored or screened.
• Do try to think about the message content before you send it out.
• Do make sure that the content is relevant to the recipients. Nobody likes to receive junk email.
• Do be polite. Terseness can be misinterpreted.
• Do trim any quoted message down as much as possible.
• Do try to use humor and irony sparingly. You can use smileys such as :) or :( to indicate facial expressions, but make sure that the recipient understands what they mean.
• Do ensure that you have a relevant "Subject" line.
• Do try to quote from the original message where relevant. You can break the quoted message down into paragraphs and comment on them individually to make it clearer.
• Do be patient, especially with inexperienced email users. Give people the benefit of the doubt - just because you are familiar with email etiquette, it doesn't mean that they are.
• Do include a brief signature on your email messages to help the recipient understand who it is from, especially if you are dealing with someone you do not know very well.
• Do be careful when replying to mailing list messages, or to messages sent to many recipients. Are you sure you want to reply to the whole list?
• Do remember to delete anything that isn't needed or is trivial.
• Do remember to tell people the format of any attachments you send if they're anything other than basic Microsoft Office file types.
• Do tell your correspondent if you forward a message to somebody else to deal with, so they know who to expect a reply from.
• Do use emphasis where its useful to do so. If your email system doesn't allow bold or italics then a common convention is to use a *star* either side of the word you want to stress.
• Do understand that languages such as English differ in spelling between different countries. "Organization" and "humor" are the correct spelling in British English, but in American English it would be "organization" and "humor". Non-native speakers of English may use a variety of national spellings.

Bad Email Etiquette

• Don't reply to an email message when angry, as you may regret it later. Once the message has been sent, you will not be able to recover it.
• Don't keep mail on your server longer than necessary, especially large attachments.
• Don't copy out an entire, long message just to add a line or two of text such as "I agree".
• Don't type in CAPITALS as this is considered to be SHOUTING. This is one of the rudest things you can do.
• Don't over-use punctuation such as exclamation marks ("!") as these are meant to be for emphasis. In particular avoid more than one exclamation mark ("!!"), especially if your email is quite formal. Also, over-use of the full-stop (e.g. "....") can make a message difficult to read.
• Don't send irrelevant messages, especially to mailing lists or newsgroups.
• Don't send large attachments without checking with the recipient first.
• Don't send excessive multiple postings to people who have no interest. This is known as "spamming" and is considered to be ignorant, and may lead to serious trouble with your Internet Service Provider (ISP) or IT department.
• Don't send chain letters or "make money fast" messages. There are several hoaxes about to do with viruses - never pass these on without checking with your IT department first.
• Don't criticize people's spelling, it is considered petty. Many people have no way of running a spell check on their messages and will make typos. Not all nationalities spell words in the same way.
• Don't conduct arguments in public, for example on a mailing list.
• Don't "flame" people by sending them abusive email messages.
• Don't make personal remarks about third parties. Email messages can come back to haunt you.
• Don't send unsuitable email or attachments, especially anything of a sexual nature as they may well be found by a third party later.
• Don't use an over-elaborate signature on your email message. Never, ever, use scanned images in a signature as these tend to be very large.
• Don't mark things as urgent if they aren't, because then when you really do have an urgent message it may not be treated in the way it deserves.
• Don't post your email address on web sites and other public parts of the Internet unless you want to be deluged with spam.
www.dynamoo.com/technical/etiquette.htm
Many people use email for business communications, which stresses the importance of knowing proper email etiquette. While a lot of people understand the importance of following certain rules when writing a business letter, they often forget these rules when composing an email message. Here's a refresher.
• Mind Your Manners: Think of the basic rules you learned growing up, like saying please and thank you. Address people you don't know as Mr., Mrs., or Dr. only address someone by first name if they imply it's okay to do so.
• Watch Your Tone: Merriam-Webster defines tone as an "accent or inflection expressive of a mood or emotion." It is very difficult to express tone in writing. You want to come across as respectful, friendly, and approachable. You don't want to sound curt or demanding.
• Be Concise: Get to the point of your email as quickly as possible, but don't leave out important details that will help your recipient answer your query.
• Be Professional: This means, stay away from abbreviations and don't use emoticons (those little smiley faces). Don't use a cute or suggestive email address for business communications.
• Use Correct Spelling and Proper Grammar: Use a dictionary or a spell checker — whichever works better for you. While you can write in a conversational tone (contractions are okay), pay attention to basic rules of grammar.
• Ask Before You Send an Attachment: Because of computer viruses, many people won't open attachments unless they know the sender. Even that can be a mistake because many viruses come disguised in email messages from someone you know. Before sending an attachment, ask the recipient if you may do so.
• Wait to Fill in the "TO" Email Address: Career Planning Site visitor Larry Bachelor says, "I never fill in the 'TO' email address until I am completely through proofing my email and I am sure that it is exactly the way that I want it. This will keep you from accidentally sending an email prematurely. In the past, I have accidentally clicked on the send icon, when I really meant to click on the attachment icon."

Chat etiquette

When chatting online, use the same etiquette you would use when chatting in person. Don't shout (using all caps) and don't ask for personal information. You wouldn't do it in person so don't do it when chatting online.