Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

Fundamentals of Software Engineering: Designed to provide an insight into the software engineering concepts
Fundamentals of Software Engineering: Designed to provide an insight into the software engineering concepts
Fundamentals of Software Engineering: Designed to provide an insight into the software engineering concepts
Ebook1,000 pages10 hours

Fundamentals of Software Engineering: Designed to provide an insight into the software engineering concepts

Rating: 0 out of 5 stars

()

Read preview

About this ebook

This book teaches the essentials of software engineering to anyone who wants to become an active and independent software engineer expert. It covers all the software engineering fundamentals without forgetting a few vital advanced topics such as software engineering with artificial intelligence, ontology, and data mining in software engineering.
The primary goal of the book is to introduce a limited number of concepts and practices which will achieve the following two objectives:
Teach students the skills needed to execute a smallish commercial project.
Provide students with the necessary conceptual background for undertaking advanced studies in software engineering through courses or on their own.
LanguageEnglish
Release dateJan 14, 2020
ISBN9789388176774
Fundamentals of Software Engineering: Designed to provide an insight into the software engineering concepts

Related to Fundamentals of Software Engineering

Related ebooks

Software Development & Engineering For You

View More

Related articles

Reviews for Fundamentals of Software Engineering

Rating: 0 out of 5 stars
0 ratings

0 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    Fundamentals of Software Engineering - Hitesh Mohapatra

    CHAPTER 1

    Introductory Concepts of Software Engineering

    Objective

    The primary goal of software engineering is to improve the quality of software products, increase the productivity, and job satisfaction of software engineers. Software engineering is a new discipline, distinct from, but based on the foundations of computer science, management science, economics, communication skills, and the engineering approach to problem-solving.

    In this chapter, we are going to discuss:

    Users conceptual model and develop a better specification,

    Design languages and reusable code,

    Participatory design and interactive debugging, and

    The specification of interface and mockup to confirm the specifications.

    Software development process during system development.

    Introduction

    Software Engineering (SE) is a pragmatic discipline that is based on computer science to provide scientific foundations in the same way that traditional engineering disciplines such as electrical engineering and chemical engineering rely on physics and chemistry. Software engineering being a labor-intensive activity requires both technical skill and management control. Management science provides the foundation for software project management. Computing systems must be developed and maintained on time and within cost estimates. Software engineering activities occur within an organizational context, and a high degree of communication is required among the customers, managers, software engineers, hardware engineers, and other technocrats. There are various methodologies for the development of software engineering projects depending on their size. The fundamental principle for managing the complexity is to decompose an extensive system into smaller, more manageable subunits with well-defined interfaces. The approach of divide and conquer is routinely used in the engineering discipline. In software engineering, the units of decomposition are called modules. The modules are not disjointed. The development process begins with a definition of system needs and ends with a product that is supposed to perform specific tasks with a required degree of precision and accuracy within a predefined time length. The success of the system lies with the system development team, the involvement of users from the beginning, commitment and cooperation from both the management groups.

    Definition

    Software engineering is the application of a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software. It encompasses techniques and procedures, often regulated by a software development process, to improve the reliability and maintainability of the software system. The effort is necessitated by the potential complexity of those systems, which may contain millions of lines of code.

    According to Boehm, Software engineering involves the practical application of scientific knowledge to the design and construction of computer programs and associated documentation required to develop, operate, and maintain them. The definition covers biological, financial, manufacturing, medical, legal, governments, and many other systems.

    The term software engineering was popularized by F. L. Bauer, during the NATO Software Engineering Conference in 1968. The discipline of software engineering includes knowledge, tools, and methods for software requirements, software design, software construction, software testing, and software maintenance tasks. Software engineering is related to the disciplines of computer science, computer engineering, management, mathematics, project management, quality management, software ergonomics, and system engineering.

    Evolution and Impact of SE

    During the past few decades, significant advances have occurred in all areas of software engineering. Analysis techniques for determining software requirements have been developed. Methodical approaches to software design have developed and design notations have proliferated. Implementation techniques have been improved and new programming languages have been developed. Software validation techniques have been examined and quality assurance procedures have been instituted. Computer-aided software engineering (CASE) tools are developed and deployed during the development process. Formal techniques for verifying software properties have evolved and software maintenance procedures have been interpreted to mean that the problems of software engineering (SE) have been solved. The level in SE is indicative of the vast number of problems to be solved.

    Software Engineering Process

    The process, Software engineering, is the structure of the development of a software product. There are different models of software process (software lifecycle) used in different organizations and industries.

    Software Engineering

    The field, Software engineering, is concerned with the study of complex systems. The complex system is composed of many components with complex relationships. It is essential to make various modules or components and link them together to represent the complex systems. The term engineering encompasses to use certain principles and build the software methodically. To apply the principles, the software engineer should be equipped with appropriate methods and specific techniques that will help to incorporate the desired properties into process and product. Sometimes, the methods and techniques are packaged to form a methodology. The purpose of the methodology is to promote a certain approach to solve a problem.

    Levels of Software Process

    Three levels of software process are identified for its projects.

    These levels balance the different needs of different types of projects. Scaling the process to the project is vital to its success; too much process can be as problematic as too little; too much process can slow down a purely R&D exploration, too little process can slow down a large development project with hard deliverables. The levels are briefly identified as follows:

    Level 1: R&D

    No software products delivered, pure research

    Minimal software process

    Level 2: Research system

    Larger development team, informal software releases

    Moderate software process

    Level 3: Delivered system

    The large software development team, formal software releases

    More formal software process

    The software process and software engineering practices have become more formalized and more structured as the project proceeded through different levels.

    A set of software engineering best practices is implemented in three software process levels. These include source code control, neatly code builds, writing reusable code, using different team models, commitment to deadlines, design and code reviews, risk management, bug tracking, software metrics, software configuration management, and requirements management.

    Software configuration management (SCM) is a step up in formality and reproducibility from source code control and includes controlling and versioning of software releases.

    Importance of SW Project Construction

    At one time, software development and coding were thought to be the same. But, as distinct activities in the software development life cycle have been identified, some of the best minds in the field have spent their time analyzing and debating methods of project management, requirements, design, and testing. The rush to study these newly identified areas has left code construction as the ignorant cousin of software development.

    Discussions about construction have also been hobbled by the suggestion that treating construction as a distinct software development activity implies that construction must also be treated as a distinct phase. Software activities and phases don’t have to be set up in any relationship to each other, and it’s useful to discuss the activity of construction, regardless, of whether other software activities are performed in phases, in iterations, or in some other way.

    Typically, construction makes up about 80 percent of the effort on small projects and 50 percent on medium projects. Construction accounts for about 75 percent of the errors on small projects and 50 to 75 percent on medium and large projects. Any activity that accounts for 50 to 75 percent of the errors presents a clear opportunity for improvement.

    The irony of the shift in focus away from construction is that construction is the only activity that’s guaranteed to be done. Requirements can be assumed rather than developed, architecture can be short changed rather than designed, and testing can be abbreviated or skipped rather than fully planned and executed. But, if there’s going to be a program, then there must be construction and that makes construction a uniquely fruitful area in which to improve development practices.

    Problems in System Development

    Many problems are encountered during a system development process. Before the system is launched, it is abandoned. The reasons for a system failure could be from either side of the development house or the user. An experienced developer having foresightedness can apprehend a problem much earlier and can take remedial action before it is surfaced during development. The developer and the user should work in groups so that they understand each other’s problems and solve them amicably. In developing a large and complex software project, many problems are associated as follows:

    Time schedule overlap: Sometimes, a large project becomes very much time-consuming. There may be a drastic change in the system that has been desired at the beginning. The originally designed concepts to solve the scope of the project is no longer valid during development. It causes time delay to deliver the system. The user may lose interest in further developing the project to implement.

    User interface: The man-machine interaction is sometimes not considered initially surfaced in due course of development. This causes further additions of controls and displays. New hardware and software are felt necessary to be included later.

    Test and integration: Often the project find deficiencies during testing and integration of the software project. The inadequate parts are included in the latter part of the development process. This happens due to inadequate thoughts are given at the initial stage.

    Maintenance problem: Many problems are surfaced at this phase after handing over the system to the client. The user intends to include many additions and changes to the system when he operates independently. The developer allows the user to handle the system and takes the modification activity as the user experiences many technological, functional, and performance problems. Therefore, at the time of implementation, a warranty period is considered to set right the teething problems by the developer without any additional cost that is encountered by the user.

    Solutions to the Problems

    The problems faced at a later stage can be avoided if proper analysis and design are done initially. This may avoid unnecessary cost escalation during the development process. Some of the possible solutions are discussed as follows:

    Time schedule overlap: The problem can be prevented by postponing the technology decisions for as long as possible or reducing the system development cycle time. Since the financial impact is to be ascertained initially, detailed analysis and design are made early in the development process. The detailed cost estimates are made based on the analysis and design. Technology decisions are taken on maturity issues. It is better to use the available software and hardware so that the development time cycle can be reduced. A phased development approach is a better solution. The system is analyzed, designed, developed, tested, and implemented in segments. Any problem encountered in a segment can be settled down immediately referring to the previous phase.

    User interface: Associate the users in the development process who will be finally using the system. Take their views to simplify the system operation. Many interface activities can be simplified and streamlined during the development process.

    Test and integration: Define a comprehensive test program. Assign to a member of the system team having good testing experience. Include a member from the user side during the acceptance test. Obtain agreement from the user step by step after module testing, integration testing, and system testing.

    Maintenance problem: Design the system to accommodate the changes at a later stage. The changes may include additional hardware to increase accuracy and speed, changes in the software to increase the computing power. Have proper documentation of the system so that it can be referred for making a change at a later stage during its life cycle.

    Qualities of the Software

    Higher the quality of a software product and process, the software produces more serviceability, less problematic and longer life. The user wants the software product to be reliable, efficient and easy to use. At the same time, the software producer wants the product to be verifiable, maintainable, portable and extensible. The external qualities are visible to the users of the system where the internal qualities concern the developers. The qualities of the software product are associated closely. Some of the software qualities are tabulated in Table 1.1:

    Table 1.1: Software Qualities

    System Analysis and Design

    The development of a good system needs proper system analysis and design. The objective of an analysis is to find the customer requirements, to create a base to develop software, and to define various requirements which are to be developed subsequently. A good system analyst can break up the system into various modules for development and integrate them finally into a flawless workable product.

    A system engineer or a system analyst performs the following technical tasks:

    Analyze the existing system and make a requirement list by discussing the users.

    Prepare a conceptual (logical) design for the system based on the requirements.

    Establish the boundaries of the system to use the inputs, outputs, and interfaces.

    Define the functions to be performed and the parameters to measure performance.

    Find out the internal structures of the system and their dependencies.

    Prepare mathematical models to support the evaluation of system performance.

    Make alternative solutions and their weighted evaluation to choose the best.

    Decompose the system into various logical sub-systems to be integrated later.

    Participate in system development, testing, integration, and implementation.

    Associate with the users, developers, and management for steering the project.

    Work as a change agent and catalyst for process development.

    Act as a leader in all the phases during the system development.

    Prepare the project plan and schedule for phase-wise project completion.

    Determine the system reliability, availability, and quality.

    Prepare system development a cost estimates and perform cost-benefit analysis.

    System Analysis

    System analysis is the process of gathering and interpreting the facts, solving the problem and using the information to recommend improvements to the system. System analysis involves the study of an application area to fully understand the problem being posed. This study includes interviews, observations, hands-on experience, consultations, and many other forms of data gathering. Activities are focused on developing a comprehensive knowledge of the existing system, its strengths and weaknesses, and the underlying reasons for the need to restructure, replace, or automate the existing system. The analyst produces a problem statement as a result of this activity.

    A system analyst is a designated person who is responsible to study and design a system. A system analyst has many roles to play as an investigator, planner, designer, modulator, communicator, implementor, trainer, change agent, architect, psychologist, salesperson, motivator, politician, conflict resolution, persuader, and imposer. An efficient system analyst can take the entire responsibility to take up the software project from initiation to implementation. A successful analyst can dream for a successful software project.

    The analyst, during system analysis, has to carry out the following tasks:

    Understand the existing system, its merits and demerits.

    Planning the new application or modification of the existing one.

    Scheduling the activities to be performed during the development.

    Consider alternative candidate solutions.

    Emphasize the re-engineering process and method study.

    Carry out the operations like backup procedure, audit, quality check, and security procedures.

    Lay down the plans and cost reduction activities.

    Give importance to system enhancement and recycling.

    System Architecture and Design

    The system design involves the development of a structure or architecture of the system. The design is an ongoing process from the stage of inception. The system design begins from what is to be built to how it is to be built. The involvement of the software engineer begins with attending the meetings with the users, reading preliminary documents, and participating in system-level reviews and walkthroughs. This helps the software engineer to gain a deeper understanding of the system. He has to prepare the process modeling that focuses on the design of the software resources, i.e., the programs and procedures needed by the proposed system. It concentrates on developing the detailed specifications for the program modules with specifications and procedures needed to meet user interface and data design specifications. The software engineer should be well versed with the application area. With his knowledge, various software functions and specifications can be designed. The system and sub-system performance requirements can be ascertained by the software engineer. The software engineer can participate in system architecture development.

    Summary

    Software engineering brings the logical concept of a system into an operational physical system by converting the dreams into a stream. A well experienced and committed software engineer is very much required who works as a driving force in the development team. The system should be implemented well in time and fulfill user requirements. The system should give visible benefits that can be accepted by the user. To have a long life of the software product, it should have proper quality and reliability. The system should be easy to understand and change, so that it can be maintained effectively for sustained use.

    Questions and Answers

    Define system? What are the characteristics of a system?

    A system is an ordered set of interdependent components linked together based on some plan, to achieve a specific objective.

    Explain briefly the functions of the following business sub-systems. (Production, Finance, Personnel)

    Deployment of manpower and machines, working principle, job allotment, and completion, scheduling, job costing, incentive scheme, raw material requirement planning, work-in-progress, and finished good status.

    Accounts payable, accounts receivable, ledger posting, cash section payments and receipts, salary and wages, trial balance, profit and loss accounts, balance sheet, and bank transactions.

    Manpower recruitments, training, deployment of manpower, retirements, performance assessment and promotions, employee database, skill database, payrolls, provident fund, leave record, and administrative functions.

    Exercises

    What are the advantages of involving a software engineer or a system analyst in software development?

    What are the problems encountered during system development?

    In your view, what is system-level architecture?

    Do you think a successful system analyst must be an experienced programmer? Give reasons for your answer.

    What are the qualities necessary to incorporate during the development of software?

    Describe the tasks of a system analyst during a software development process?

    CHAPTER 2

    Modelling Software Development Life Cycle

    Objectives

    Application software, when it becomes large and complex, then there is a need to look into different aspects like readability, reliable, security, repairability or maintainability, and usability. Many analysts, designers, and developers get involved in the process of software development. It becomes essential to breakdown the tasks into clear cut phases of development and assigns to various development groups. There is a dependency among the phases. On completion of specific tasks, the next task can only be taken up. Therefore, a structured development process needs to be adopted.

    In this chapter, we are going to discuss:

    Software development models

    Concept of reliability, performance, safety, and security being used in a life cycle model

    Activities that are involved in a software development process

    System Analysis and Design

    Information is power. An organization having all the information is considered to be more pragmatic. To make the information available, a computerized system is developed which not only provide information but helps the management to take decisions quickly. It is an organizational improvement process. The analysis and design of an information system are based on the objectives, structures, and processes that help to exploit the information technology for the advantage.

    Data and Process

    An information system consists of data, data flow, and processing logic. Data are raw facts that describe an entity (e.g. people, place, or an object). The data form the system produces information. The relationships among the data are described using various techniques. Data flows are the groups of data that move and flow in a system, including the source and destination. Processing logic describes the steps in the transformation of data. The steps are triggered by calling certain events.

    Process oriented approach

    The importance is given on the process where the emphasis is given on flow, use, and data transformation. How and when the data moves from source to destination, through intermediate steps, is tracked. How the processes use the data and transform the data into information are considered. This approach takes care of the sequence of the processes. The data files are used when they are required by the process. Several data files are created for different applications. It causes duplication of data in various files. The same data element in different files needs to be changed or updated during the process. It becomes more cumbersome to have specialized data files. The same data elements in different files have different names. The standardization of data for the organization is felt necessary since the data plays a vital role in the process.

    Data oriented approach

    More focus is given on data than the processes. Many techniques are used to simplify the data and their related problems like data redundancy, data indexing, and establishing their relationships. The data model describes the rules and policies of a business organization. A systematic data organization is becoming more essential. The process may change from time to time but the data remains the same for the organization. Data files are becoming larger and complex day by day. Therefore, more care is given to data and data normalization rather than the process. In this approach, the process and data are handled separately. Data handling software is available to handle the queries more efficiently. A database is used for every software application system. The database can be used by many application systems, simultaneously. Designing a database becomes important that can be used by different applications. A data repository can be used for the current and future systems without inviting problems in changing the data. Many organizations maintain a central database for various applications.

    Types of Systems and System Developments

    The users are many in an organization with their respective usage. With a broad range of people and interests, different types of information systems are required to be developed. The people who are directly or indirectly associated with an information system are system managers, system analysts, programmers, end users, auditors, business managers, heads of the organization, and support technicians. There are different classes of an information system that can be used effectively by different people.

    Transaction processing system

    A Transaction Processing System (TPS) is a set of information that processes the data transaction in a database system that monitors transaction programs. The essence of a transaction program is that, it manages data that must be left in a consistent state. For example, if an electronic payment is made, the amount must be either withdrawn from one account with the addition to the other, or none. In case of a failure preventing transaction completion, the partially executed transaction must be 'rolled back' by the TPS. While this type of integrity must be provided also for batch transaction processing, it is particularly important for online processing: e.g., if an airline seat reservation system is accessed by multiple operators, after an empty seat inquiry, the seat reservation data must be locked until the reservation is made, otherwise another user may get the impression a seat is still free while it is actually being booked at the time. Without proper transaction monitoring, double bookings may occur. Other transaction monitor functions include deadlock detection and resolution, and transaction logging (in 'journals') for 'forward recovery' in case of massive failures. The features are:

    Rapid response: Fast performance with rapid response time is critical. Businesses cannot afford to have customers waiting for a TPS to respond, the turnaround time from the input of the transaction to the production for the output must be a few seconds or less.

    Reliability: Many organizations rely heavily on their TPS; a breakdown will disrupt operations or even stop the business. For a TPS to be effective its failure rate must be very low. If a TPS does fail, then quick and accurate recovery must be possible. This makes well–designed backup and recovery procedures essential.

    Inflexibility: A TPS wants every transaction to be processed in the same way regardless of the user, the customer or the time for the day. If a TPS were flexible, there would be too many opportunities for non-standard operations, for example, a commercial airline needs to consistently accept airline reservations from a range of travel agents, accepting different transaction data from different travel agents would be a problem.

    Controlled processing: The processing in a TPS must support an organization's operations. For an example, if an organization allocates roles and responsibilities to particular employees, then the TPS should enforce and maintain this requirement.

    Management information system

    A management information system (MIS) is a subset of the overall internal controls of a business covering the application of people, documents, technologies, and procedures by management accountants to solve business problems such as costing a product, service or a business-wide strategy. Management information systems are distinct from regular information systems in that they are used to analyze other information systems applied in operational activities in the organization. Academically, the term is commonly used to refer to the group of information management methods tied to the automation or support of human decision making, e.g. decision support systems, expert systems, and executive information systems.

    MIS combines technology with business to get people the information they need to do their jobs better, faster, and smarter. MIS often requires data from several TPSs. Information is the lifeblood of all organizations. MIS professionals work as systems analysts, project managers, systems administrators, etc., communicating directly with staff and management across the organization."

    An 'MIS' is a planned system of collecting, processing, storing and disseminating data in the form of information needed to carry out the functions of management. In a way it is a documented report of the activities those were planned and executed. The terms MIS and information system are often confused. Information systems include systems that are not intended for decision making. The area of study called MIS is sometimes referred to, in a restrictive sense, as information technology management. That area of study should not be confused with computer science. IT service management is a practitioner-focused discipline. MIS has also some differences with enterprise resource planning (ERP) as ERP incorporates elements that are not necessarily focused on decision support.

    Decision support system

    Decision Support Systems (DSS) are a specific class of computerized information systems that supports business and organizational decision-making activities. A properly designed DSS is an interactive software-based system intended to help decision-makers compile useful information from raw data, documents, personal knowledge, and/or business models to identify and solve problems and make decisions.

    Typical information that a decision support application might gather, and present would be:

    An inventory of all of your current information assets (including legacy and relational data sources, cubes, data warehouses, and data marts),

    Comparative sales figures between one week and the next,

    Projected revenue figures based on new product sales assumptions;

    Beginning in about 1990, data warehousing and on-line analytical processing (OLAP) began broadening the realm of DSS. As the turn of the millennium approached, new Web-based analytical applications were introduced. DSS belongs to an environment with multidisciplinary foundations, including (but not exclusively) database research, artificial intelligence, human-computer interaction, simulation methods, software engineering, and telecommunications.

    The advent of better and better reporting technologies has seen DSS start to emerge as a critical component of management design. Examples of this can be seen in the intense amount of discussion of DSS in the education environment.

    A passive DSS is a system that aids the process of decision making, but that cannot bring out explicit decision suggestions or solutions. An active DSS can bring out such decision suggestions or solutions. A cooperative DSS allows the decision-maker (or its advisor) to modify, complete, or refine the decision suggestions provided by the system, before sending them back to the system for validation. The system again improves, completes, and refines the suggestions of the decision-maker and sends them back to her for validation. The whole process then starts again, until a consolidated solution is generated.

    Expert system

    An expert system is software that attempts to reproduce the performance of one or more human experts, most commonly in a specific problem domain, and is a traditional application and/or subfield of artificial intelligence. A wide variety of methods can be used to simulate the performance of the expert however common to most or all are the creation of a so-called "knowledgebase" which uses some knowledge representation formalism to capture the Subject Matter Experts (SME) knowledge and a process of gathering that knowledge from the SME and codifying it according to the formalism, which is called knowledge engineering. Expert systems may or may not have learning components but a third common element is that once the system is developed it is proven by being placed in the same real-world problem-solving situation as the human SME, typically as an aid to human workers or a supplement to some information system. Problem-solving is accomplished by applying specific knowledge rather than a specific technique. This is a key idea in expert systems technology. It reflects the belief that human experts do not process their knowledge differently from others, but they do possess different knowledge. With this philosophy, when one finds that their expert system does not produce the desired results, work begins to expand the knowledge base, not to re-program the procedures.

    There are various expert systems in which a rule-base and an inference engine cooperate to simulate the reasoning process that a human expert pursues in analyzing a problem and arriving at a conclusion. In these systems, to simulate the human reasoning process, a vast amount of knowledge needed to be stored in the knowledge base. Generally, the knowledge base of such an expert system consisted of a relatively large number of if-then type of statements that were interrelated in a manner that, in theory at least, resembled the sequence of mental steps that were involved in the human reasoning process. Because of the need for large storage capacities and related programs to store the rule-base, most expert systems have, in the past, been run only on large information handling systems. Recently, the storage capacity of personal computers has increased to a point where it is becoming possible to consider running some types of simple expert systems on personal computers.

    In some applications of expert systems, the nature of the application and the amount of stored information necessary to simulate the human reasoning process for that application is just too vast to store in the active memory of a computer. In other applications of expert systems, the nature of the application is such that not all of the information is always needed in the reasoning process. An example of this latter type application would be the use of an expert system to diagnose a data processing system comprising many separate components, some of which are optional. When that type of expert system employs a single integrated rule-base to diagnose the minimum system configuration of the data processing system, much of the rule-base is not required since many of the components which are optional units of the system will not be present in the system.

    Overview of SDLC

    The Systems Development Life Cycle (SDLC) is a conceptual model used in project management that describes the stages involved in an information system development project from an initial feasibility study through maintenance of the completed application. Various SDLC methodologies have been developed to guide the processes involved including the waterfall model (the original SDLC method), rapid application development (RAD), joint application development (JAD), the fountain model, and the spiral model. Mostly, several models are combined into some sort of hybrid methodology. Documentation is crucial regardless of the type of model chosen or devised for any application and is usually done in parallel with the development process. Some methods work better for specific types of projects, but in the final analysis, the most important factor for the success of a project may be how closely a plan was followed. Figure 2.1 is the classic Waterfall model methodology, which is the first SDLC method and it describes the various phases involved in development.

    Figure 2.1: Classic Waterfall model

    Brief Description on Different Phases

    Brief descriptions of each phase and their utilities are outlined below. These phases are used for the development of a software system irrespective of the different models discussed in this section.

    Feasibility study

    The feasibility study is used to determine if the project should get the go-ahead after analyzing the business problems and opportunities. If the project is to proceed, the feasibility study will produce a project plan and budget estimates for the future stages of development. Conduct a study to determine whether a new or improved information system is needed. Develop a project management plan and obtain management approval.

    During the feasibility study, the problem/opportunity definition is crystallized. The aspects of the problem are determined to be included in the system. The cost-benefits are estimated accurately, and a formal proposal is made on the nature and scope of problem solution

    The feasibility study includes:

    Statement of problem.

    Summary of findings and recommendations.

    Details of finding (methods, procedures, output reports, file structure, cost and benefit analysis).

    Recommendations and conclusions (personal assignment, costs, project schedule, and target dates).

    Requirement analysis and design

    This stage includes a detailed study of the business needs of the organization. Options for changing the business process may be considered. Analysis gathers the requirements for the system. Analyze in detail the information needs of end-users, the organizational environment, and any system presently used. Develop the logical input, processing, output, storage, and control requirements of a system that can meet the needs of the users. Develop specifications for the hardware (machines and media), software (programs and procedures), people (specialists and end-users), data resources, and information products that will satisfy the information needs of end-users.

    The design focuses on a high-level design like, what programs are needed and how are they going to interact, low-level design (how the individual programs are going to work), interface design (what are the interfaces going to look like) and data design (what data will be required). During these phases, the software's overall structure is defined. Analysis and Design are very crucial in the whole development cycle. Any glitch in the design phase could be very expensive to solve in the later stage of software development. Much care is taken during this phase. The logical system of the product is developed in this phase.

    Coding

    In this phase, the designs are translated into code. Computer programs are written using a conventional programming language or an application generator. Programming tools like Compilers, Interpreters, and Debuggers are used to generate the code. Different high-level programming languages like C, C++, Pascal, and Java are used for coding. Concerning the type of application, the right programming language is chosen.

    Testing

    In this phase, the system is tested along with the coding. Normally programs are written as a series of individual modules, these subjects to a separate and detailed test. The system is then tested as a whole. The separate modules are brought together and tested as a complete system. The system is tested to ensure that interfaces between modules work (integration testing), the system works on the intended platform and with the expected volume of data (volume testing) and that the system does what the user requires (acceptance/beta testing).

    Maintenance

    Use a post-implementation review process to monitor, evaluate, and modify the system as needed. Before handing over the software to the user, the necessary training and documentation are provided. Inevitably the system will need maintenance. The software will change once it is delivered to the customer. There are many reasons for the change. The change could happen because of some unexpected input values into the system. Also, the changes in the system could directly affect the software operations. The software should be developed to accommodate changes that could happen during the post-implementation period.

    Types of Models

    As a product development life cycle, from its inception to maturity, the software product also passes through different phases. The phases are from the investigation stage to the maintenance phase through which the sequence of operations is carried out by proving different resources. As per the size of the system, its complexity and the user requirement various development models are used.

    Developing computer software can be a complicated process, and in the last 25 years, researchers have identified numerous distinct activities that go into software development. They include

    Problem definition

    Requirements development

    Construction planning

    Software architecture or high-level design

    Detailed design

    Coding and debugging

    Unit testing

    Integration testing

    Integration

    System testing

    Corrective maintenance

    All these activities are not very specifically shown while discussing various models. However, all these are considered more or less while developing the software using different models.

    The Iterative Waterfall Model

    This is the classical model of system development. An alternative name for this model is a one-shot approach. As can be seen from figure 2.2, there is a sequence of activities working from top to bottom. The diagram shows some arrows pointing upwards and backward. This indicates that a later stage might reveal the need for some extra work at an earlier stage, but this should be the exception rather than the rule. After all, the flow of a waterfall should be downwards with the possibility of just a little splashing back. The limited scope for iteration is, in fact, one of the strengths of this process model. With a large project, you want to avoid having to go back and rework tasks that you thought had been completed.

    For a start, having to reopen what was previously thought to be a completed activity plays havoc with a promised completion date.

    Feasibility study: It the initial study before the system analysis and design is started. Many feasibility studies are disillusioning for both users and analysts. The feasibility study is to serve as a decision document to answer three key questions. Is there a new and better way to do the job that will benefit the user? What are the costs and benefits of the alternatives? What is recommended? Three key considerations are involved in the feasibility analysis: economic, technical and behavioral. The feasibility report is generally prepared by a senior person who has got a sound knowledge of the system and organization. Depending on the results of the initial investigation, the survey is expanded to a detailed feasibility study. The study summarizes what is known and what is going to be done. It consists of:

    Statement of the problem

    Summary of findings and recommendations

    Details of findings

    Recommendations and conclusions.

    Requirement analysis and definition: The system’s services, constraints and goals are established by consultation with system users. They are then defined in detail and serve as a system specification. The analysis is a detailed study of the various operations performed by a system and their relationships within and outside of the system. The solution to this phase is what must be done to solve the problem. In this phase the system boundaries are determined. Data flow diagrams, entity-relationship diagrams, interviews, on-site observations, and questionnaires are used. Once the analysis is complete, the system analyst has a firm understanding of what is to be done in the next phase.

    System and software design: The systems design process partitions the requirements to either hardware or software systems. It

    Enjoying the preview?
    Page 1 of 1