Posted by: ahmedashfaque | September 28, 2016

What is a project? – Project Objectives (part 2)

In the first part of this series, we learned about this project about medical treatment of my father for brain tumor. This project was needed to first remove the existing tumor from my father’s brain through surgery and then take the course of action to ensure that tumors do not get resurfaced in my father’s brain again. The project charter and project objectives could be as following:

Project title:

Brain tumor treatment of my father

Project charter:

To remove existing brain tumor and ensure no further occurrence of tumors in my father’s brain.

Project objective:

My father was 73 years old when he had suddenly developed speech problem. After diagnosis, it was found that it occurred because of a tumor in my father’s brain. The MRI scan showed a tumor of size 3.6 cm X 3.5 cm X 3.2 cm in the parietal region of my father’s brain. The biopsy report showed that this tumor is Glio Blastoma Multiforme (GBM) stage IV: the deadliest and fast growing tumor which can kill a patient within 3 to 8 months if it is not removed. Even after removal, most brain tumors grow again. So further medical treatment is needed to ensure that tumors do not get resurfaced after brain surgery.

Initial assessment:

Life expectancy for patients with GBM type brain tumors is not more than 2 years. The typical course of medical treatment traditionally is to remove the tumor through brain surgery and then apply chemo and radiation therapy to burn whatever traces of tumor left after surgery. After this, there is no further treatment generally available if the tumor resurfaces in the brain. Alternative medical treatments have some potential but it is not sure if they work 100%. Indian Homeopathic & ayurvedic doctors claim to fully treat GBM patients.

Increasing the life expectancy of GBM patients is a real challenge. Thus this project is a real challenge. If my father becomes cancer free (brain tumors are a type of cancer) after medical treatment then it will be nothing short of a miracle.

Posted by: ahmedashfaque | September 27, 2016

What is a project? Introduction (part 1)

People define a project as a series of activities which are planned and carried out within a certain period of time. Projects also consume resources apart from time. These resources could be time spent by people or machines and material.

A project can be taken to accomplish anything. The guiding principle is that the project has a definite start date when the project commences and there is a definite end date when the project finishes.

Let me give one example from my own personal life. Recently my father was diagnosed with Glio Blastoma Multiforme (GBM) stage 4 brain tumor. It is the deadliest kind of brain tumor and one of the deadliest diseases. The doctor advised for immediate surgery to remove the tumor as this type of tumor grows fast and within 1 month, it would infect many parts of the brain and it would be impossible to remove it then. So we decided to have the brain surgery and my father’s tumor was removed. Generally it is impossible to remove a brain tumor completely through surgery and the remaining traces of the tumor is generally burned though a combination of chemo and radiation therapy. My father’s mental and physical health after brain surgery was weak. Both radiation and chemo therapy have deep adverse side effects on the human body. If a person is physically weak then these therapies are difficult to perform. Finally we decided to go only for radiation therapy for my father.

The allopathic treatment has this much of treatment for brain tumor patients. Generally after brain tumor removal, tumors are bound to grow. Next time when the tumor grows, it is impossible to remove it. So there is a limitation to allopathic treatment. This is especially true for GBM brain tumors as they grow within 8 to 12 months to the same size which was removed and that is why they are so dangerous.

There is no guaranteed treatment for this phenomenon. But in alternative medicine, there is some hope. After much research, I found that Homeopathy medicine has some cancer (brain tumors are a type of cancer) treatment available. Ayurveda has also some promise for cancer treatment though they claim it can help with varying degree of success. There are also some foods which fight cancer like turmeric, Guabano fruit & leaves, cumin seed, Barley/Wheat grass etc. Again how much benefit they provide is still not very clear. How and how much to consume them is also not clear.

After getting all the information from various sources, i decided to take my father’s illness as a project and plan the treatment accordingly. Even though many things were not clear about the treatment at the beginning but still I was able to decide about some major milestones. I was also able to find out about the length of time, the treatment will last.

We will discuss about this project in detail in next posts.

Posted by: ahmedashfaque | September 16, 2016

How much effort involved in building a software product?

When a project starts to design and build a software product, then one obvious question arises as to how many people will be involved for how long in designing and building the software product. It is because, a software project is essentially a labor intensive work where skilled people work on creating various kinds artifacts which are required in designing and building a software product.

The requirement gathering and requirement specification creation itself is a labor intensive work. One or more business analysts will be needed for months in doing this work. Once requirement specifications are created then software designers use these specifications to design user interfaces, databases and business logic routines. Once designs are ready then software developers build user interfaces, business logic and database schemas. By this time, the software product is ready in the form of machine code. This machine code is tested by software testers to ensure that there are no software defects.

There could be many versions of the same software product to cater to the needs of different customers. Which version of the software product needs to be released so that particular type of customers can use them is done by software release experts.

Once a software product is in use then this software product may need to be modified to suit needs of the users better. Sometimes the software product may contain defects which were discovered during usage. In other cases, the product features of the software product may need to be enhanced. For all of these tasks, a software maintenance project can be instituted. A project team may be formed consisting of business analysts, software designers, software developers, software testers etc.

Effort estimation for any software project thus depends on quantity of work which need to be done in creating various artifacts. For example, if a business analyst is needed for one month to gather software requirements and create requirement specifications then it is known as one man month of effort required. Now if 2 software designers are needed in creating all software designs for one month then it will be 2 man months of effort required. You keep figuring out effort required for each project task and then add them to find out the total effort required for the project.

There are many tools and techniques which are used in estimating effort required for various project tasks. Some of them included COCOMO, function point analysis etc.

Posted by: ahmedashfaque | September 15, 2016

What is an evolutionary prototype (a kind of feasibility study)?

Prototypes are extremely important in building software products. The throwaway prototype was discussed in the last post. Now let us discuss evolutionary prototype in this post.

On some projects, it is required to show only rudimentary functionality to users (navigation, user interfaces, basic business logic etc.). In such cases, a throwaway prototype is good fit. However, on projects where a lot of business logic needs to be tested by the users then the project team has no option but to write business logic in the prototype so that users can check if the business logic works as per their requirements.

This kind of prototype is known as evolutionary prototype.

Writing business logic requires a lot of effort by the project team. So when a project team creates an elaborate prototype during feasibility study for a software product then they ensure that the business logic written for the prototype can be reused during actual software development. this is why, this type of prototype is known as evolutionary prototype.



Posted by: ahmedashfaque | September 12, 2016

What is a throwaway prototype (a type of feasibility study)?

When a software is required to be built; it should stick to the requirements of the users. Sadly, most often the built software does not match the requirements of the user. It happens because understanding between the project team and the users often is not good enough. This results in wrong software product made and delivered.

The best way to mitigate this risk is to develop a software product prototype first and show it to the users. Users see and interact with this prototype. Then they give their feedback as to what changes they need in the prototype. The prototype is then modified based on this feedback and shown to users again. This process continues until users are fully satisfied. Based on this prototype, the software product is built.

Creating a prototype is thus a way to minimize risks involved in software development. Building prototypes are actually a kind of feasibility study. If during prototype building if the project team finds that it is technically or economically not feasible to build a software product then the project can be shelved.

There are 2 types of prototypes: throwaway prototype & evolutionary prototype. When a project team creates a prototype which does not involve extensive source code writing and thus this prototype can be thrown away and not used in actual software development is known as throwaway prototype. Generally this type of prototype suits well for waterfall based software projects.

Posted by: ahmedashfaque | September 3, 2016

software engineering simply explained

Most people think of only software programming when they think about software engineering. But software programming is only a part of software engineering. Software engineering includes every activity which is done so that a software product can be built. All software engineering activities start when a requirement for a software product arises. A project team is formed to design and build the software product. This project team consists of business analysts, software designers, software developers, software testers, database creators, project managers etc.

Project activities start when user software requirements are gathered by business analysts. From user software requirements, software requirement specifications are created in form of use cases. Use cases are then taken by the software designers to create software designs. Software designs consist of user interface designs, business logic design, database design etc. Once software designs are created then software developers start writing source code in a chosen programming language. The source code is compiled to create the machine code which is the software product. This product is tested to ensure that it has no defects. Finally this product is released so that users can use the software product.

You can see that a lot of activities take place right from software requirement gathering to software design creation to software development to software testing to software release. All these activities come under software engineering. All the software engineering activities are managed through software project management.

This can easily be seen that software engineering is a vast field.

Posted by: ahmedashfaque | August 27, 2016

Brain tumors and their deadly consequences

My father was recently diagnosed with a brain tumor. After diagnosis, it was found that it was one of the most deadly type of brain tumor commonly known as Glio Blastoma Multiforme (GBM). This type of tumor grows very fast and within 4-5 months it can grow to a size of 4 cm or more and may cause extensive damage in the brain. The first thing to do when this type of tumor is found is to remove it through a brain surgery. Later chemo and radio therapy must be done so that growth of recurring tumor can be checked.

But even after surgery followed by chemo and radio therapy, this kind of tumor is bound to grow fast and kill the patient. Average life expectancy of patients is only 3 to 4 months if surgery is not performed to remove the tumor. Average life expectancy of patients is 1 to 2 years if surgery followed by chemo and radio therapy is performed. There is no other treatment is currently available for these patients.

We have followed the standard prescribed treatment procedure to treat my father. We also tried to found out alternative treatments for this tumor as the standard treatment is not satisfactory and life expectancy can not be increased much.

We came to know that Ayurveda has a treatment for brain tumors. Similarly the Guyabano fruit and leaves have good effect on tumor patients. There is also a treatment available in Homeopathy. All of these treatments can be performed in parallel with the standard treatment.

So we are giving treatment to my father which is a combination of allopathy (standard treatment), homeopathy, ayurveda, guyabano fruit and leaves.

We are not sure as to how much benefit alternative medicines will provide in treatming my father but at least we are trying to maximize life expectancy of my father.

Posted by: ahmedashfaque | August 16, 2016

if software engineering is only for students?

On software projects, people with specialized skills work. Some people have experience in gathering software requirements and creating software requirement specifications. So they work in software requirement engineering parts of the software project. Some other people have experience in creating software designs like object diagrams, statechart diagrams etc. So they work with tasks associated with software designs. Similarly people with skills and experience in other tasks related to developing software products work in their respective domains on software projects.

All of these activities of software requirement engineering, software design, software construction, software testing, software release, software project management etc. come under software engineering. Students who learn software engineering, learn about all these disciplines which are part of software engineering. But what about software professionals? If they have to learn all of software engineering and its constituent parts?

Generally a software professional acquires skills and experience in any one discipline of software engineering and gets a job. The software professional keeps working on the same discipline for his/her entire career. But not all software professionals keep working in the same discipline during their entire career. Many software professionals move from one discipline to another at some time in their career. Many more software professionals acquire expertise in more than one discipline.

One other consideration to understand other disciplines of software engineering is that it helps in understanding your own tasks. If a software requirement engineer understands how software designs are built then he/she will be able to create better software requirement specifications. It is because, a software design requires good software requirement specifications. Likewise software construction requires good software designs. Understanding other disciplines of software engineering definitely helps project team members to do their own jobs better.

Posted by: ahmedashfaque | August 12, 2016

The great industry academia disconnect – the solution Part 3

In part 2 of this series, we have seen how software engineering methodology plays an instrumental role in software development life cycle. In this post, we will see how software requirement engineering is done on software projects and how practical considerations are involved during software requirement engineering.

Imagine a software engineer who has no practical knowledge of software requirement engineering has been assigned to gather customer requirements. First of all, the software engineer will not be able to understand what are the crucial requirements of the customer. The software engineer will also be not capable of understanding the relationship among the customer requirements. Thus the software requirements gathered by the software engineer will not be considered good. If a software design is built using this set of requirements then the software product will have lots of problems and software defects.

An experienced software engineer on the other hand knows the ins and outs of gathering software requirements from customers. An experienced software engineer also knows how to manage software requirements. An experienced software engineer also will convert software requirements into good software requirements specifications. He/she will create good use cases using UML (Unified Modeling Language). This will ensure that there will be no defect in the software requirement specifications and these specifications will lead to creating good software designs.

So how budding software engineers can get good experience in software requirement engineering, even when they are studying at the university? The answer lies in how they are being taught software engineering. If they are being taught only theory of software engineering then they will have no practical experience. On the other hand, if they are being subjected to build software products as a part of their curriculum then they will have some good exposure to practical considerations involved in software engineering.

This is the most important factor which plays an important role in effectiveness of teaching software engineering.


Posted by: ahmedashfaque | August 7, 2016

The great industry academia disconnect – the solution Part 2

In the first part of this series, we learned that expectations of the software industry is not fulfilled as new graduates lack solid and practical software engineering skills. Let us analyze this situation further.

Software engineering methodology plays a central role in any software development project. But most new graduates fail to understand this aspect. For example if the software project is following any agile software engineering methodology then all aspects about the software project will be different as compared to when a waterfall methodology is chosen for the project.

The software feasibility study can be conducted using evolutionary prototype here. The software requirement engineering can be done for only a bunch of software requirements at a time (for each iteration). The software design and construction can be done only for this bunch of software requirements at a time during an iteration. Software testing can be done again only for the bunch of software features which were designed and constructed during the iteration. The software product built so far (using incremental method which is possible using any iterative (agile) software engineering methodology) can be released in the market.

The software project management also get impacted depending on which software engineering methodology is being used for developing a software product. Agile project management is very different from waterfall project management. Project management for Waterfall methodology based software projects depend heavily on a solid project plan. On the contrary, agile methodology based software projects do not use extensive project planning at all. Whatever planning is done mostly at iteration level. At project level, planning is only at rough level.

Thus we can see, software engineering methodologies play central role in any software project.

We will learn about each software engineering component in subsequent posts.

Older Posts »