Introduction To Software Engineering and Process Models

 UNIT 1

Introduction to Software Engineering and Process Models

 

Definition of Software

Software is: (all three (3) inclusive)

1.   Instructions (computer programs) that when executed provide desired features, function, and performance;

2.   Data structures that enable the programs to adequately(satisfactory) manipulate information;

3.   Documents i.e. descriptive information in both hard copy & virtual form (soft copy) that describes the operation and use of the programs.

Software Engineering Definition

      Definition:

      It is a systematic, scientific and disciplined approach to the development, operation & maintenance of software.

      Primary goal:

      To provide the quality software with low cost.

Changing Nature of Software

    Stand-alone programs for specific business needs. 

    E.g. Manufacturing Process Control System, Payroll System etc.

 Engineering/scientific software:

Characterized by “number crunching”algorithms

    Applications such as automotive stress analysis, molecular biology, orbital dynamics, automated manufacturing (CAD/CAM), MATLAB etc.

 Embedded (Intelligent) software:

    Resides within a product or system.

    Used to implement and control features & functions for the end user

    E.g. key pad control of a microwave oven or washing machine, digital functions in automobile /car such as dashboard  display, fuel control, braking systems

Product-line/Personal Computer software:

    Focus on a limited marketplace to address mass consumer market.

    e.g. Word Processing, spreadsheet, graphics, multimedia, DBMS

Web Apps (Web applications):

    Network based software.

    Support more sophisticated(complex) computing environments that

      provide stand alone features, computing functions & content to the end user

      Integrated with remote database and business applications.

     E.g. Online forms, Shopping Carts, email programs (Gmail, yahoo etc.)

AI (Artificial Intelligence) software:

     Uses non-numerical algorithm to solve complex problem.

     E.g. Robotics, expert system, artificial neural networks, pattern recognition (image & voice) ,game playing

 

Basic Activities of Software Engineering

      Analyzing  the product

    (Describing, Defining ,Managing  S/w development project /product )

      Designing the product

      Developing/Implementing the product

      Testing the product

      Maintaining the product.

Need of software Engineering

      To Reduce Complexity

    Divides Big problem into small problems( S/w Design)

    Focus on solving most relevant problems

      To minimize software cost

    Using Soft. Engg., programmers plan everything & reduce all those efforts that are not required

      To decrease time

    By avoiding to run many codes to get the ultimate running code.

      For Handling Big Projects

    Require lots of patience, planning & management  to complete the project by many resources(staff, h/w, s/w)

Software Processes

u The term software specifies to the set of computer programs, procedures and associated documents (Flowcharts, manuals, etc.) that describe the program and how they are to be used.

u A software process is the set of activities and associated outcome that produce a software product. Software engineers mostly carry out these activities. These are four key process activities, which are common to all software processes. These activities are:

u Software specifications: The functionality of the software and constraints on its operation must be defined.

u Software development: The software to meet the requirement must be produced.

u Software validation: The software must be validated to ensure that it does what the customer wants.

u Software evolution: The software must evolve to meet changing client needs.

Software Process Framework

Software Process Framework is an abstraction of the software development process. It details the steps and chronological order of a process. Since it serves as a foundation for them, it is utilized in most applications. Task sets, umbrella activities, and process framework

u activities all define the characteristics of the software development process.

u Software process includes:

u Tasks – focus on a small, specific objective.

u Action – set of tasks that produce a major work product.

u Activities – group of related tasks and actions for a major objective.



Process Framework Activities:

u Communication: By communication, customer requirement gathering is done. Communication with consumers and stakeholders to determine the system’s objectives and the software’s requirements.

u Planning: Establish engineering work plan, describes technical risk, lists resources requirements, work produced and defines work schedule.

u Modeling: Architectural models and design to better understand the problem and for work towards the best solution. The software model is prepared by:
       o Analysis of requirements
       o Design

u Construction: Creating code, testing the system, fixing bugs, and confirming that all criteria are met. The software design is mapped into a code by:
       o Code generation
       o Testing 

u Deployment: In this activity, a complete or non-complete product or software is represented to the customers to evaluate and give feedback. On the basis of their feedback, we modify the product for the supply of better products.

·         Framework Activities:

Generic process models often include key activities like communication, planning, modeling (analysis and design), construction (coding and testing), and deployment. 

·         Umbrella Activities:

These are supporting activities that occur throughout the process, such as project tracking, risk management, and quality assurance. 

Umbrella activities

u Umbrella Activities are that take place during a software development process for improved project management and tracking.

u Software project tracking and control: This is an activity in which the team can assess progress and take corrective action to maintain the schedule. Take action to keep the project on time by comparing the project’s progress against the plan.

u Risk management: The risks that may affect project outcomes or quality can be analyzed. Analyze potential risks that may have an impact on the software product’s quality and outcome.

u Software quality assurance: These are activities required to maintain software quality. Perform actions to ensure the product’s quality.

u Formal technical reviews: It is required to assess engineering work products to uncover and remove errors before they propagate to the next activity. At each level of the process, errors are evaluated and fixed.

u Software configuration management: Managing of configuration process when any change in the software occurs.

u Work product preparation and production: The activities to create models, documents, logs, forms, and lists are carried out.

u Reusability management: It defines criteria for work product reuse. Reusable work items should be backed up, and reusable software components should be achieved.

Measurement: In this activity, the process can be defined and collected. Also, project and product measures are used to assist the software team in delivering the required software.

Process adaptation refers to the dynamic modification of a process to better suit changing needs or environments. This involves adjusting process designs, workflows, or even the overall approach based on feedback, new information, or evolving requirements. It's a key aspect of agile methodologies and is crucial for optimizing performance, improving efficiency, and ensuring relevance in dynamic contexts.

A generic process is a foundational, adaptable framework that outlines the fundamental steps of a process, often used as a blueprint for more specific, project-based implementations. 

It's a generalized approach applicable to various situations, offering a high-level structure that can be customized for different needs.  a generic process model provides for developing software, encompassing activities like communication, planning, modeling, construction, and deployment. 


·          Communication:

This involves gathering requirements from stakeholders, understanding their needs, and establishing clear communication channels. 

·         Planning:

This phase focuses on defining the scope of the project, creating a schedule, allocating resources, and identifying potential risks. 

·         Modeling:

This activity involves creating representations of the software, such as diagrams, prototypes, or mockups, to help visualize and refine the design. 

·         Construction:

This is where the actual coding and development of the software takes place, building the product based on the design and specifications. 

·         Deployment:

This final phase involves releasing the software to users, installing it, and providing support. 

 

      TYPES PRESCRIPTIVE PROCESS MODELS
 The Waterfall Model

      Incremental Process Models

      Evolutionary Process Models

      Concurrent Models

The Waterfall Model

      Winston Royce introduced the Waterfall Model in 1970.

      This model has five phases: Requirements analysis and specification, design, implementation, and unit testing, integration and system testing, and operation and maintenance. The steps always follow in this order and do not overlap.

      The developer must complete every phase before the next phase begins. This model is named "Waterfall Model", because its diagrammatic representation resembles a cascade of waterfalls.

The waterfall model, sometimes called the classic life cycle, suggests a systematic, sequential approach to software development that begins with customer specification of requirements and progresses through planning, modeling, construction, and deployment

      When to use SDLC Waterfall Model?

      Some Circumstances where the use of the Waterfall model is most suited are:

      When the requirements are constant and not changed regularly.

      A project is short.

      The situation is calm.

      Where the tools and technology used is consistent and is not changing.

      When resources are well prepared and are available to use.

      Requirements analysis and specification phase: 

      The aim of this phase is to understand the exact requirements of the customer and to document them properly. Both the customer and the software developer work together so as to document all the functions, performance, and interfacing requirement of the software.

       It describes the "what" of the system to be produced and not "how."In this phase, a large document called Software Requirement Specification (SRS) document is created which contained a detailed description of what the system will do in the common language.

      System Design Phase: 

      This phase aims to transform the requirements gathered in the SRS into a suitable form which permits further coding in a programming language. It defines the overall software architecture together with high level and detailed design. All this work is documented as a Software Design Document (SDD).

      Implementation  : 

      During this phase, design is implemented. If the SDD is complete, the implementation or coding phase proceeds smoothly, because all the information needed by software developers is contained in the SDD.

      Testing

      During testing, the code is thoroughly examined and modified. Small modules are tested in isolation initially. After that these modules are tested by writing some overhead code to check the interaction between these modules and the flow of intermediate output. 

      This phase is highly crucial as the quality of the end product is determined by the effectiveness of the testing carried out. The better output will lead to satisfied customers, lower maintenance costs, and accurate results. Unit testing determines the efficiency of individual modules.

       However, in this phase, the modules are tested for their interactions with each other and with the system.

      Deployment of system −

      Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market.

      maintenance phase:

       Maintenance is the task performed by every user once the software has been delivered to the customer, installed, and operational.

      Advantages of Waterfall model

      This model is simple to implement also the number of resources that are required for it is minimal.

      The requirements are simple and explicitly declared; they remain unchanged during the entire project development.

      The start and end points for each phase is fixed, which makes it easy to cover progress.

      The release date for the complete product, as well as its final cost, can be determined before development.

      It gives easy to control and clarity for the customer due to a strict reporting system.

      Disadvantages of Waterfall model

      In this model, the risk factor is higher, so this model is not suitable for more significant and complex projects.

      This model cannot accept the changes in requirements during development.

      It becomes tough to go back to the phase. For example, if the application has now shifted to the coding phase, and there is a change in requirement, It becomes tough to go back and change it so backtracking or any changes are not done.

Incremental Model

Incremental Model is a process of software development where requirements divided into multiple standalone modules of the software development cycle. In this model, each module goes through the requirements, design, implementation and testing phases. Every subsequent release of the module adds function to the previous release. The process continues until the complete system achieved.



      When the requirements are superior.

      A project has a lengthy development schedule.

      When Software team are not very well skilled or trained.

      When the customer demands a quick release of the product.

      You can develop prioritized requirements first.

      Note :-

      The incremental model is also called an iterative model in which a particular project or software is broken down into large numbers of iterations; where each iteration is a complete development loop resulting in a release of executable product or software.

      The various phases of incremental model are as follows:

      1. Requirement analysis: in the first phase of the incremental model, the product analysis expertise identifies the requirements. And the system functional requirements are understood by the requirement analysis team. To develop the software under the incremental model, this phase performs a crucial role.

      2. Design & Development: in this phase of the Incremental model of SDLC, the design of the system functionality and the development method are finished with success. When software develops new practicality, the incremental model uses style and development phase.

      3. Testing: in the incremental model, the testing phase checks the performance of each existing function as well as additional functionality. In the testing phase, the various methods are used to test the behavior of each task.

      4. Implementation: Implementation phase enables the coding phase of the development system. It involves the final coding that design in the designing and development phase and tests the functionality in the testing phase. After completion of this phase, the number of the product working is enhanced and upgraded up to the final system product.

      Advantage of Incremental Model

      Errors are easy to be recognized.

      Easier to test and debug

      More flexible.

      Simple to manage risk because it handled during its iteration.

      The Client gets important functionality early.

      Disadvantage of Incremental Model

      Need for good planning

      Total Cost is high.

      Well defined module interfaces are needed.

Evolutionary Process Models

      Evolutionary models are iterative type models. They allow to develop more complete versions of the software.

      Following are the evolutionary process models.

1.   The prototyping model

2.   The spiral model

       1. The Prototyping model

1.    Prototype is defined as first or preliminary form using which other forms are copied or derived.

2.   Prototype model is a set of general objectives for software.

3.   It does not identify the requirements like detailed input, output.

4.   It is software working model of limited functionality.

5.   In this model, working programs are quickly produced.

The Prototyping model

      1. Communication In this phase, developer and customer meet and discuss the overall objectives of the software.

      2. Quick design

• Quick design is implemented when requirements are known.

• It includes only the important aspects like input and output format of the software.

• It focuses on those aspects which are visible to the user rather than the detailed plan.

• It helps to construct a prototype.

      3. Modeling quick design

• This phase gives the clear idea about the development of software because the software is now built.

• It allows the developer to better understand the exact requirements.

      4. Construction of prototype The prototype is evaluated by the customer itself.

      5. Deployment, delivery, feedback

• If the user is not satisfied with current prototype then it refines according to the requirements of the user.

• The process of refining the prototype is repeated until all the requirements of users are met.

• When the users are satisfied with the developed prototype then the system is developed on the basis of final prototype.

      Advantages of Prototyping Model:

      Prototype model need not know the detailed input, output, processes, adaptability of operating system and full machine interaction.

      In the development process of this model users are actively involved.

      The development process is the best platform to understand the system by the user.

      Errors are detected much earlier.

      Gives quick user feedback for better solutions.

      It identifies the missing functionality easily. It also identifies the confusing or difficult functions.

      Disadvantages of Prototyping Model:

      The client involvement is more and it is not always considered by the developer.

      It is a slow process because it takes more time for development.

      Many changes can disturb the rhythm of the development team.

      It is a thrown away prototype when the users are confused with it.

Spiral Model


      The spiral model, initially proposed by Boehm, is an evolutionary software process model that couples the iterative feature of prototyping with the controlled and systematic aspects of the linear sequential model.

       It implements the potential for rapid development of new versions of the software. Using the spiral model, the software is developed in a series of incremental releases.

      During the early iterations, the additional release may be a paper model or prototype.

During later iterations, more and more complete versions of the engineered system are produced.

      Objective setting: Each cycle in the spiral starts with the identification of purpose for that cycle, the various alternatives that are possible for achieving the targets, and the constraints that exists.

      Risk Assessment and reduction: The next phase in the cycle is to calculate these various alternatives based on the goals and constraints. The focus of evaluation in this stage is located on the risk perception for the project.

      Development and validation: The next phase is to develop strategies that resolve uncertainties and risks. This process may include activities such as benchmarking, simulation, and prototyping.

      Planning: Finally, the next step is planned. The project is reviewed, and a choice made whether to continue with a further period of the spiral. If it is determined to keep, plans are drawn up for the next step of the project.

      The development phase depends on the remaining risks. For example, if performance or user-interface risks are treated more essential than the program development risks, the next phase may be an evolutionary development that includes developing a more detailed prototype for solving the risks.

      The risk-driven feature of the spiral model allows it to accommodate any mixture of a specification-oriented, prototype-oriented, simulation-oriented, or another type of approach. An essential element of the model is that each period of the spiral is completed by a review that includes all the products developed during that cycle, including plans for the next cycle. The spiral model works for development as well as enhancement projects.

      Advantages

      High amount of risk analysis

      Useful for large and mission-critical projects.

      Disadvantages

      Can be a costly model to use.

      Risk analysis needed highly particular expertise

      Doesn't work well for smaller projects.

Concurrent development model


      The concurrent development model is called as concurrent model.

      The communication activity has completed in the first iteration and exits in the awaiting changes state.

      The modeling activity completed its initial communication and then goes to the underdevelopment state.

      If the customer specifies the change in the requirement, then the modeling activity moves from the under development state into the awaiting change state.

      The concurrent process model activities moving from one state to another state.

      Advantages of the concurrent development model

      This model is applicable to all types of software development processes.

      It is easy for understanding and use.

      It gives immediate feedback from testing.

      It provides an accurate picture of the current state of a project.

      Disadvantages of the concurrent development model

      It needs better communication between the team members. This may not be achieved all the time.

      It requires remembering the status of the different activities.

Unified Process

The Unified Process (UP) is an iterative and incremental software development methodology focused on building complex enterprise systems. It emphasizes an object-oriented approach, using the Unified Modeling Language (UML) and incorporates best practices like risk-driven development and iterative lifecycles. 











 










 

SHARE

Milan Tomic

Hi. I’m Designer of Blog Magic. I’m CEO/Founder of ThemeXpose. I’m Creative Art Director, Web Designer, UI/UX Designer, Interaction Designer, Industrial Designer, Web Developer, Business Enthusiast, StartUp Enthusiast, Speaker, Writer and Photographer. Inspired to make things looks better.

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment

Agile development

                                               2. Agile development Agility means the ability to move quickly and easily or to adapt to c...