Monday, August 17, 2009

Project Management

1.)Risk is a concept that denotes the precise probability of specific eventualities. Technically, the notion of risk is independent from the notion of value and, as such, eventualities may have both beneficial and adverse consequences. However, in general usage the convention is to focus only on potential negative impact to some characteristic of value that may arise from a future event.
Risk can be defined as “the threat or probability that an action or event will adversely or beneficially affect an organisation's ability to achieve its objectives”[1]. In simple terms risk is ‘Uncertainty of Outcome’, either from pursuing a future positive opportunity, or an existing negative threat in trying to achieve a current objective.

2.)Risk Management Strategies include the following

Risk Avoidance
Risk Abatement
Risk Retention
Risk Transfer
Risk Allocation

Risk Avoidance is just that, avoiding the risk associated with a specific task, activity or project. Often, following the review of a contract, it is determined that a project is just too risky. The client may decide not to bid the work at all, or remove that element of the work from their bid, sometimes using an alternate deduct to delineate the exclusion.
Risk avoidance is strictly a business decision, and sometimes a very good strategy if construction documents are unclear, ambiguous or incomplete.
Risk Abatement is the process of combining loss prevention or loss control to minimize a risk. This risk management strategy serves to reduce the loss potential and decrease the frequency or severity of the loss. Risk abatement is preferably used in conjunction with other risk management strategies, since using this risk management method alone will not totally eliminate the risk.
Risk Retention is a good strategy only when it is impossible to transfer the risk. Or, based on an evaluation of the economic loss exposure, it is determined that the diminutive value placed on the risk can be safely absorbed. Another consideration in retaining a risk is when the probability of loss is so high that to transfer the risk, it would cost almost as much as the cost of the worst loss that could ever occur, i.e., if there is a high probability of loss, it may be best to retain the risk in lieu of transferring it.
Risk Transfer is the shifting of the risk burden from one party to another. This can be done several ways, but is usually done through conventional insurance as a risk transfer mechanism, and through the use of contract indemnification provisions.Risk Allocation is the sharing of the risk burden with other parties. This is usually based on a business decision when a client realizes that the cost of doing a project is too large and needs to spread the economic risk with another firm. Also, when a client lacks a specific competency that is a requirement of the contract, e.g., design capability for a design-build project. A typical example of using a risk allocation strategy is in the formation of a joint venture.
3.)Software Risk
Staff Turnover- Experienced staff will leave the project before it is finished.
Management Change- There will be a change of organisational management with different priorities.
Hardware Unavailability- Hardware that essential for the project will not be delivered on scheduled.
Requirement Change- There will be a large number of change on the requirements than anticipated
Specifition Delays- Specification essential interfaces are not available on schedule.
Size underestimate- The size of the system has been underestimated
CASE tool underperformance- CASE tools which support the project do not perform as anticipated.
Technology Change- The under lying on which the system is built is supersaled by the technology.
Product Competition- A cmpetitive product is market before the system is completed.
4.) As a member of the team, I would ask first my teamates whether they want to work overtime eventhough being not paid. If I was going to ask if I would accept it, my answer would be YES but considering the factors I would really think it twice and I will check the time management of each one of us.
5.Eventhough it was not field of specification, I would accept the offer, because despite the fact that I dont have that skill in managing but I can contribute also in technical. And also I want to try y managing skill if I can. There is no problem if I accept the offer. In fact, its an advantage to my part because I was offered that kind of oppurtunity.
Ian Sommerville,SOFTWARE ENGINEERING,7th edition, Chapter 5

Sunday, August 9, 2009

CASE(Computer Aided Software Engineering)


Nowadays everything has to go faster. Because of the increasing speed of changing market-demands new products replace old ones much earlier than before, so the development of new products has to go faster. Thus the production lines have to be developped faster, too. A very important role in this development is software engineering because many production processes are 'computer aided', so software has te be designed for this production system. It seems very important to do the software engineering right and fast. In the past, software systems were build using traditional development techniques, which relied on hand-coding applications. Software engineers had to design software without help of computers, by programming each step at one time. This way is much too costly and time-consuming. In order to speed up the process the bottlenecks in building software systems are to be found . This is hard to do because of the increasing role of computers in our society. Technology is developped further every day, so faster and bigger computers enter the scene. The software running on these computers can be more extensive because they can handle more information in the same time, so there is an increasing amount of data to go with it. Finding the right data out of this increasing amount of information is getting harder and harder, so finding the bottleneck is harder to do.

To speed up the software system building process, a new concept of designing software is introduced in the '70s, called Computer Aided Software Engineering (CASE). This term is used for a new generation of tools that applies rigorous engineering principles to the development and analysis of software specifications. Simply, computers develop software for other computers in a fast way by using specific tools. When implanted in a Concurrent Engineering environment, this process is taking place while some parts of the developed software is running already. It's a sort of on-line software engineering. There are a lot of problems with these kinds of systems because they are very complex, not easily maintainable and fragile. Some of the tools which were very progressive back then, are obsolete right now, so they have to be updated, which can be a problem because the software engineering process is fit around these tools.

The tools developped right now are evolutional products out of earlier tools. The first tools, developped in the mid '70s, were mainly introduced to automate the production and to maintenance structured diagrams.When this automation covers the complete life-cycle process, we speak of Integrated Computer Aided Software Engineering (I-CASE). When only one specific part of the life-cycle process is covered we speak of -just- Computer Aided Software Engineering (CASE).

Later on, integrated CASE (I-CASE) products were introduced. This was an important step because I-CASE products are capable of being used to generate entire applications from design specifications.

Recently, CASE tools have entered a third phase: the introduction of new methodologies based on capabilities of I-CASE tools. These new methodologies utilize Rapid Prototyping techniques to develop applications faster, at lower cost and higher quality. By using Rapid Prototyping a prototype can be made fast, so the developped system can be tested more often in between the development-phases because it doesn't cost much time to create a prototype. Mistakes can be detected and corrected earlier this way. The earlier this can be done, the better because correcting these mistakes gets harder and more expensive when the system is developped further. So a lot of time and money can be saved using Rapid Prototyping.

As said above, a new set of tools is necessary. These tools should automate each phase of the life-cycle process and tie the application development more closely to the strategic operations of the business. A lot of different tools have been developped over the years and are being developped right now. There are so many tools, that we could easily get confused. To survey all these CASE tools we divide them in the following categories:

  1. Information engineering-supporting products. These are life-cycle processes, derived from the strategic plans of the enterprise and which provide a repository to create and maintain enterprise models, data models and process models.
  2. Structured diagramming-supporting products. These are derived from several development methodologies like Gane-Sarson or Jackson. These products at least support data flow, control flow and entity flow, which are the three basic structured software engineering diagramming types.
  3. Structured development aids-providing products. These products are providing aids for a structured development of the process. These products are very suitable to be used by the system analysts, because they are helped very much by a structured process, because those can be analysed faster and more accurately.
  4. Application-code-generating products. These are products that generate application-code for a specific goal, set by the designer. Most of the products in this area are using a COBOL-generator, which is a tool that generates programming code in a specific language out of specifications set by the system-designer.

The heart of a well-designed I-CASE sytem is a repository, which is used as a knowledge base to store information about the organization, its structure, enterprise model, functions, procedures, data models etc. The meaning represented by diagrams and their detail windows is stored in the repository. The repository steadily accumulates information relating to the planning, analysis, design, construction and maintenance of systems. In other words: The repository is the heart of a CASE system.

Two types of mechanisms have been used in CASE software to store design information:

  1. A dictionary, which contains names and descriptions of data items, processes, etc.
  2. A repository, which contains this dictionairy information and a complete coded representation of plans, models and designs, with tools for cross-checking, correlation analysis and validation.

Before implanting CASE and designing tools, a serie of steps should be followed:

  1. Conduct a technology-impact study to determine how the basic business of the organization should change to maximize the opportunities presented by rapid technological change
  2. Evaluate how the organization should be re-engineered to take advantage of new technology
  3. Establish a program for replacing the old systems with the most effective new technology
  4. Commit to an overall integrated architecture
  5. Select a development methodology
  6. Select a CASE-tool
  7. Establish a culture of reusability
  8. Strive for an environment of open interconnectivity and software portability across the entire enterprise
  9. Establish intercorporate network links to most trading partners
  10. Determine how to provide all knowledge to workers with a high level of computerized knowledge and processing power
  11. Determine the changes in management-structure required to take full advantage of innovative systems, architectures, methodologies and tools

When an enterprise takes these actions ahead of its competition, it wil gain a major competitive advantage. An enterprise should also be up-to-date because the rapid advances in computer technology allows the competition to get ahead of you. Some significant trends in the development of new system environments include:

  1. Low-cost MIPS, the price of fast processors is decreasing and even faster everyday
  2. Distributed computing environment, end-users are moving towards a multilayered distributed computer architecture
  3. CASE and I-CASE tools, higly integrated, repository-driven, computer-aided systems engineering tools are making it possible to generate application code directly from graphical specifications
  4. Forward/reverse engineering tools, re-engineering tools enable analysts to convert low-level data definition and unstructured process code into standardized data elements and structured code.
  5. New development methodologies, more efficient development life-cycle processes are making it possible to develop applications more rapidly and in closer coordination with end users.
  6. Growth of standards, standards are emerging that will govern the future evolution of hardware and software.

We now have some insight in what CASE is, how it should be implanted and used and which tools are available. For more information I refer to the literature because the theory is too extensive to completely discuss it at this point.


reference:

www.npd-solutions.com/case.html


Saturday, August 8, 2009

Software Engineering

Software engineering is application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.[1]

The term software engineering first appeared in the 1968 NATO Software Engineering Conference and was meant to provoke thought regarding the current "software crisis" at the time.[2] [3] Since then, it has continued as a profession and field of study dedicated to creating software that is of higher quality, more affordable, maintainable, and quicker to build. Since the field is still relatively young compared to its sister fields of engineering, there is still much debate around what software engineering actually is, and if it conforms to the classical definition of engineering. It has grown organically out of the limitations of viewing software as just programming. "Software development" is a much used term in industry which is more generic and does not necessarily subsume the engineering paradigm. Although it is questionable what impact it has had on actual software development over the last more than 40 years,[4][5] the field's future looks bright according to Money Magazine and Salary.com who rated "software engineering" as the best job in America in 2006.[6]


Programming vs. Software Engineering
is an approach to developing software that attempts to treat it as a formal process more like traditional engineering than the craft that many programmers believe it is. We talk of crafting an application, refining and polishing it, as if it were a wooden sculpture, not a series of logic instructions. The problem here is that you cannot engineer art. Programming falls somewhere between an art and a science.

reference:
http://cplus.about.com/od/thebusinessofsoftware/a/softwareeng.htm
http://en.wikipedia.org/wiki/Software_engineering

Wednesday, August 5, 2009

Who I Am

I am Junrey Emiliano.

I am 18 years of age.

I am a BSIT student.

They usually calls me "ITCHU" because I am a member

of the ITCHURAANS group and it stands for:


I-nformation

T-echnology's

C-lever

H-umorous

U-rbane

R-eligious

A-vantgard

A-dventurous

N-ebbish

S-tudent



I am also called as pigLetoh by others.