conveylive.com

Research Work on the Software Engineering Techniques used in a Local Software Firm

Research Completion date: 19th March 2008

Syeda Tasneem Rumy
Syeda Tasneem Rumy
Sep 12, 2009
0 Comments | 2375 Views | 0 Hits


Introduction

 
Software Engineering is an engineering discipline that is concerned with all aspects of software production from early stages of system specification to maintaining the system after it has gone into use. Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methodology and theories to support software production.
 
Virtually all countries now depend on complex computer –based systems. National Infrastructure and utilities rely on computer-based systems and most electrical products include a computer controlling software. Industrial manufacturing and distribution is completely computerized, as is the financial system. Therefore producing and maintaining software cost-effectively is essential for the functioning of national and international economics.
 
Software is abstract and intangible. It is not constrained by materials, or governed by physical laws or by manufacturing processes. In some ways this simplifies software engineering as there are no physical limitations on the potential of software. However, this lack of natural constraints means that software can easily become extremely complex and hence very difficult to understand. When computer software succeeds, it meets the needs of the people who use it, when it performs flawlessly over a long period of time and when it is easier to modify and even easier to use. But when software fails, its users are dissatisfied especially when it is error prone, difficult to change and even harder to use. Therefore to succeed in designing good software, an engineering approach is needed.  
 
Early experiences in building software showed that informal software development is not good enough. Major projects were sometimes years late. The software costs were much more than predicted. It was unreliable and difficult to maintain and performed poorly. As a result the software development was in crisis
 
Today although managers and practitioners alike recognize the need for a more disciplined approach to software, they continue to debate the manner in which discipline is to be applied. Many individuals and companies still develop software haphazardly, even as they build systems to service the most advanced technologies of the day. Many professionals and students are unaware of the modern methods. As a result the quality of the software suffers. In addition debate and controversy about the true nature of the software engineering approach continues. Though attitudes have changed, progress has been made, but much remains to be done before the discipline reaches full maturity.
Research Objectives
 
 
  1. To understand the methodology or processes used by a software firm who actively develops quality software products for their customers.
  2. To understand how a software firm estimates the cost of developing software and calculates efforts during the planning phase.
  3. To gather knowledge that to what extent is the software components reused from previous projects and what mythology are involved.  
  4. To understand whether software are developed with well documentation and if so then how is documentation done in practice.
 
 
Description of the Research Work
 
In order to fulfill our research objectives we at first submitted a proposal letter to TigerIT which has been forwared by our department’s Chaiman Dr Zahidur Rahman on behalf of us. Our written request was approved and we were allowed to conduct an interview of the Vice President, Mr. Jamil Ahmed of a leading software company TigerIT. Our interview was based on the factual information about the methodology used by Tiger IT in software development. We gathered information on how TigerIT estimates the cost of developing software and calculates the effort. We also learned about the extent to which software components are reused from previous projects and whether documentation is practiced at the end of software development cycle.
 
 
 
Overview of the Software Firm
 
 
Tiger IT is one of the leaders in both prepackaged and customized software solutions that provides complete innovative solutions for Government agencies, Corporate Enterprises, Healthcare agencies, Service Providers and universities to register, check aliases, authenticate, manage and maintain identities with ease. Their vision of "Digital identities for everyone" means that when people need access to their PC's and networks, need to securely share information, need to transact, they can do so without barriers and with confidence.
 
TigerIT is a OEM partner of BIO-key and Cognitec - two of the world leaders in biometric algorithms. Using their development platforms, TigerIT has created People Identity Management System, a full-featured solution for people registration and authentication for a wide range of government applications.
 
TigerIT have made substantial investments in computing network, Internet, network security and recovery management. Their developers enjoy a congenial atmosphere wherein they can avail a completely networked work environment with broadband connectivity to the Internet facilities backed by strong security procedures, round-the-clock. Well-equipped software development houses with Mac, PCs and handhelds.
 
 
Software Engineering Processes/ Methodology
 
A software process is a set of activities that leads to the production of a software product. Software processes are complex and like all other intellectual and creative processes, rely on people making decisions and judgments.
 
Although there are many software processes, some fundamental activities are common to al software processes:
 
  1. Software specification
  2. Software design and implementation
  3. Software validation
  4. Software evolution
 
Although there is no ‘ideal’ software process, there is a scope for improving the software process in many organizations. Each process model represents a process from a particular point of view and thus provides only partial information about that process. Among several process models, the following are only a few general process models which are rather abstractions of the process that can be used to explain different approaches to software development.
 
         Waterfall model
        Strictly separated phases for specification and development
         Evolutionary development
        Interleaved specification and development
         Formal systems development
        A mathematical system model is formally transformed to an implementation
         Reuse-based development
        System assembled from existing components
 
Case Study:
 
The software process model used by TigerIT is just a combination of several standard process models in use nowadays. The following process models are the major process models followed by TigerIT since 2002.
 
  1. Agile software development
  2. Extreme programming
  3. Scrum
  4. SDLC
 
Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project.
 
There are many agile development methods; most minimize risk by developing software in short amounts of time. Software developed during one unit of time is referred to as an iteration, which may last from one to four weeks. Each iteration is an entire software project: including planning, requirements analysis, design, coding, testing, and documentation. An iteration may not add enough functionality to warrant releasing the product to market but the goal is to have an available release (without bugs) at the end of each iteration. At the end of each iteration, the team re-evaluates project priorities.
 
Agile methods emphasize face-to-face communication over written documents. Most agile teams are located in a single open office sometimes referred to as a bullpen. At a minimum, this includes programmers and their "customers" (customers define the product; they may be product managers, business analysts, or the clients). The office may include testers, interaction designers, technical writers, and managers.
 
Agile methods also emphasize working software as the primary measure of progress. Combined with the preference for face-to-face communication, agile methods produce very little written documentation relative to other methods. This has resulted in criticism of agile methods as being undisciplined.
 
Some of the principles behind the Agile Manifesto are:
  • Customer satisfaction by rapid, continuous delivery of useful software
  • Working software is delivered frequently (weeks rather than months)
  • Working software is the principal measure of progress
  • Even late changes in requirements are welcomed
  • Close, daily cooperation between business people and developers
  • Face-to-face conversation is the best form of communication (Co-location)
  • Projects are built around motivated individuals, who should be trusted
  • Continuous attention to technical excellence and good design
  • Simplicity
  • Self-organizing teams
  • Regular adaptation to changing circumstances
Extreme Programming (or XP) is a software engineering methodology (and a form of agile software development)[1][2][3] prescribing a set of daily stakeholder practices that embody and encourage particular XP values (below). Proponents believe that exercising these practices—traditional software engineering practices taken to so-called "extreme" levels—leads to a development process that is more responsive to customer needs ("agile") than traditional methods, while creating software of better quality.
 
Proponents of XP and agile methodologies in general regard ongoing changes to requirements as a natural, inescapable and desirable aspect of software development projects; they believe that adaptability to changing requirements at any point during the project life is a more realistic and better approach than attempting to define all requirements at the beginning of a project and then expending effort to control changes to the requirements.
 
However, XP has been noted for several potential drawbacks as compared to more document-based methodologies, including problems with unstable requirements, no documented compromises of user conflicts, and lack of an overall design spec or document
Scrum is an iterative, incremental process for developing any product or managing any work. It produces a potentially shippable set of functionality at the end of every iteration. It's attributes are:
  • Scrum is an agile process to manage and control development work.
  • It is a wrapper for existing engineering practices.
  • It is a team-based approach to iteratively, incrementally develop systems and products when requirements are rapidly changing
  • It is a process that controls the chaos of conflicting interests and needs.
  • It is a way to improve communications and maximize co-operation.
  • It is a way to detect and cause the removal of anything that gets in the way of developing and delivering products.
  • It is a way to maximize productivity.
  • It is scalable from single projects to entire organizations. Scrum has controlled and organized development and implementation for multiple interrelated products and projects with over a thousand developers and implementers.
  • It is a way for everyone to feel good about their job, their contributions, and that they have done the very best they possibly could.
 
Scrum naturally focuses an entire organization on building successful products. Without major changes -often within thirty days - teams are building useful, demonstrable product functionality. Scrum can be implemented at the beginning of a project or in the middle of a project or product development effort that is in trouble.
 
Scrum is a set of interrelated practices and rules that optimize the development environment, reduce organizational overhead, and closely synchronize market requirements with iterative prototyes. Based in modern process control theory, Scrum causes the best possible software to be constructed given the available resources, acceptable quality, and required release dates. Useful product functionality is delivered every thirty days as requirements, architecture, and design emerge, even when using unstable technologies.

 

The TigerIT uses the above mentioned software development process in small loops of Analysis, Coding and Testing in an iterative approach. 
 
TigerIT has 24/7 development cycle. Programmers work on a project night and day. Each and every project development is being perused using feed forward communication approach with the clients for any assigned task; project managers play here a vital role in making the programmers apprehend the tasks. The programmers place great value on creating long-term relationships, and achieve this through open communication and the highest level of customer care. Because of this generally they can deliver complex solutions within the shortest possible time frame.
 
 
Software Project Estimation in Project Planning
 
Software managers are responsible for planning and scheduling project development. They supervise the work to ensure that it is carried out to the required standards and monitor progress to check that the development is on time and within budget. Software project management is needed because professional software engineering is always subject to organizational budget and schedule constraints. The project manager’s job is to ensure that the software project meets these constraints and delivers software that contributes to the goal of the company developing the software.
 
Most Project plans should include the following sections:
 
         Introduction
         Project organisation
         Risk analysis
         Hardware and software resource requirements
         Work breakdown
         Project schedule
         Monitoring and reporting mechanisms
 
Case Study:
 
 When a project is approved for development by TigerIT, project manager assigns experienced programmers and executives to make requirement analysis systematically by keeping close communication with the representatives of the client side. This may take several weeks. Once requirements are analyzed , hardware and software requirements are realized, the project cost is estimated in terms of man-hour. The entire project is split into several modules and sequentially reports are generated.

 
The team salary is estimated upon some predefined figures assigned as salaries to various levels of employees and also the cost of electricity, office space rent, office equipments etc.
 
Usually the clients of TigerIT assign them the time constraints for software delivery but if during analysis it is found that the project must require more time to go into completion the client is requested to extend the software development time. Usually medium sized software takes about 3 months to 6 months time to be delivered to customer.
If during analysis phase the project requirement is not clearly understood the client representative is contacted to make requirements clear.
After the requirements are realized, project is split into modules of duration about 100 hours and the modules are assigned time limits by maintaining a Gnatt chart the development phase begins.
 
The development cycle is continued iteratively, by close online communication with the client representatives. The bugs are tracked by testers and submitted locally using a bug tracking software. The bugs are fixed and the clients are informed of any recent changes and prototypes are submitted for client opinion. The software modules are uploaded to the client during the nights for review. Senior developers and managers usually communicate closely to discuss the issues of bugs and to add any further changes.
 
 
Reuse of components
 
In component based software engineering the entities from previous projects are reused to enhance project productivity. The entities that are reused range from fine-grain functions to entire application systems. In this method loosely coupled independent components are defined, implemented and integrated into the systems. It has become an important software development approach because software systems are becoming larger and more complex and customers are demanding more dependable software that is developed more quickly.
 
Components must have the following characteristics:
 
  1. Standardized
  2. Independent
  3. Composable
  4. Deployable
  5. Documented
 
Case Study:
 
TigerIT extensively does reuse of components which helps them to develop software faster and hence ensures faster delivery. For example components like Form Validation Techniques, Structure problems etc are reused indefinitely wherever necessary.
 
Software Documentation Techniques
 
In general terms, documentation is any communicable material (such as text, video, audio, etc., or combinations thereof) used to explain some attributes of an object, system or procedure. It is often used to mean engineering or software documentation, which is usually paper books or computer readable files (such as HTML pages) that describe the structure and components, or on the other hand, operation, of a system/product.
 
A professional whose field and work is more or less exclusively to write documentation is called a technical writer. Normally, technical writers are trained or have a background in technical writing, along with some knowledge of the subject(s) they are documenting. Often, though, they collaborate with subject matter experts (SMEs), such as engineers.
 
Common types of computer hardware/software documentation include online help, FAQs, how-tos, and user guides. The term RTFM is often used in regard to such documentation, especially to computer hardware and software user guides.
 
Case Study:
 
In TigerIT documentation technique is basically used to do create technical documents as a helping tool for any developer who is a new comer or when any person is being replaced in absence of another. Therefore technical documentation is highly practices at TigerIT, rather than software documentation. The technical documents consist of pictures and descriptive knowledge, Tables and various functionality. Several tools are used in order to create technical documentation, for example : JavaDoc, PHPDoc, Microsoft Word, Web based i.e. HTML documentation.
 
Since in our country Labour cost is low, it usually is an added burden to assign people to documentation and usually if client does not want any documentation, the developers in TigerIT do not necessarily create any documentation for the software.
 
Conclusion
 
To determine an organization’s current state of process maturity, the software engineering institute (SIE), uses an assessment that results in a five point grading scheme. The SIE approach provides a measure of the global effectiveness of a company’s software engineering practices and establishes five process maturity levels that are defined in the following manner:
 
Level 1: Initial.
Level2: Repeatable.
Level3. Defined.
Level 4: Managed. 
Level 5: Optimizing.
 
By analyzing the level of maturity of TigerIT, it can be said that TigerIT complies to the maturity Level 3 as they use standardized software process and basically they do track cost schedule and functionality to create successful software. The software process for both management and engineering activities is documented, standardized, and integrated into an organization wide software process. All projects use a documented and approved version of the organization’s process for developing and supporting software.
 
 
 
References
 
[1]. Software Engineering –A practitioner’s Approach- Fifth Edition. By Roger S. Pressman, Ph.D.
 
[2]. Software Engineering. Seventh Edition. By Sommerville
 
 
 




Please Signup to comment on this article