6.1 Software Project Concept
Software Project: Software project is group of tasks that need to be accomplishes in order to get a fully functional software product. Software projects can vary from small to large and can be operated by one or more person. Software projects are usually led by Software Project Manager who ensures the completion of software project on time fulfilling the requirements of the targeted clients.Software Development Process
Software development process defines a sequence of tasks that must be carried out to build new software.
- It groups the development activities into a sequence of phases.
- A phase in sequence can only commence on the previous phase has been completed.
- A report is produced at the end of each phase, describing what has been achieved and outlining the plan for the next phase.
- Software design and implementation: The software to meet the specifications must produce.
- Software validation: The software must be validated to ensure that it does what the customer wants.
- Software evolution: The software must evolve to meet changing customer needs.
SDLC
(Software/System Development Life Cycle) is an organized way to develop a
software/system. System Development Phase or System Development Life Cycle or
Software Development Life Cycle (SDLC) is a methodology used to develop,
maintain, and replace software/information systems.
- It is a systematic process of developing any software. It helps in establishing a system, or software or project, or plan. It gives an overall list of processes and sub-processes required for developing a system.
- SDLC consists of a set of development activities that have a prescribed order. It is the development of software in chronological order.
1.
It helps to determine the needs of the user.
2.
It supports constant communication between the developer and the user.
3.
SDLC helps for easy identification of missing requirements.
4.
It ensures that the software meets the needs of its users.
5.
It supports proper analysis and design of the software.
6.
It ensures proper development and testing.
7.
Proper documentation support for future upgrade and maintenance.
8.
It provide flexibility for adding features even after the software is
developed.
SDLC Phases
1. System study:It is the preliminary way of handling the user request to change, improve or enhance existing system. The objective is to determine the user requirement, whether the request is valid and feasible. In this phase, problem definition is well understood, as system intended to meet the need of an organization. Thus, the first step in the design is to specify these needs for requirements. The top manager of an organization takes the basic decision to use a computer-based information system for managing the organization. During this phase the objective of the system are identified. In general system Investigation studies, the following questions. What is to be done in the future?
How to do it?
When to do it?
Who will do it?
2. System analysis: The process of analyzing a system and trying to find a way to modify it or create a new system to meet the users need. In other words, the investigation into system operation and possible changes to the system is called system analysis. The system is made up of many interrelated task, change to any one of this task to the addition of new task may affect the existing one. Therefore, it is necessary to understand the system and its problem which will help to reduce the failure due to any risk and uncertainties. Main activities which are undertaken in this phase.
- Definition of output requirements such as content, layout design etc.
- Specification of input data such as source, format etc.
- Development of overall logic.
- Develop step by step algorithm and flowchart.
- Develop a general test requirement.
- Logical Design: Theoretically designing of the system is called logical design. The system could be designed based on the requirements.
- Physical Design: The conversion of logical design into designing tools and techniques is called physical design. It is more detail and complex jobs describing the solution of the problem. It uses algorithms, flowcharts, pseudo codes, decision table, decision tree, E-R diagram, Data flow diagram etc.
Theoretically designing of the system is called logical design. The system could be designed based on the requirements. The conversion of logical design into designing tools and techniques is called physical design. It is more detail and complex jobs describing the solution of the problem.
To create the logical design different kinds of tools are used.
Algorithm Decision
Table
Flowchart Decision
Tree
Pseudo codes Data
flow diagram
Structured English
E-R diagram
4. System Development: the process of writing programs using actual programming language is called system development. This is also called the programming phase in which the programmer converts the program specification into computer instruction, which we refer to as program. The programs co-ordinate the data movement and control the entire process in a system. A well written code reduces the testing and maintenance effort. This helps in fast development, maintenance and future changes if required programming tools like compiler, interpreter and languages like C, C++, Java script, PHP etc. are used for coding. With respect to the type of application, appropriate programming language should be chosen.
5. System testing: This steps includes whether the developed system can fulfill the user requirement or not. The testing is the process of validating the correctness of program. It's objective is to demonstrate that the program meets its designed specification. It is an investigation conducted to provide stake holder with information about the quality of the product or service under test. Some of the objective of system testing are :
- To check whether developed system fulfills the user requirement or not.
- To check whether developed system works as expected.
Some testing methods are:
a) Black box testing: Black box testing treats the
software as a black box without any knowledge of internal implementation. It is
also called functional testing because it tests whether a system is functioning
or not. Here in this type of testing several known input is provided and
checked whether the system generates expected output or not.
b) White box testing: In white box testing, procedural
details are checked logical path through the software and between several components
are tested through codes, statements and syntax analysis. White box testing is
used when the tester has to the internal data structure and algorithms
including the code that implement this. It is also called glass box testing.
6. System implementation: Implementation involves testing the installed system, converting from the old system to the new one and training the users. This phase consists of implementation of the system into a production environment, and resolution of the problem identified in testing phase.
Types of System Implementation:
- Direct Conversion: All users stop using old system at the same time and then begin using the new. This option is very fast, less costly but more risky.
- Parallel conversion: Users continue to use old system while an increasing amount of data is processed through the new system. Both the systems operate at the same time until the new system works smoothly. This option is costly but safe approach.
- Phased conversion: Users start using the new system component by component. This option works only for systems that can be compartmentalized. This option is safe and conservative approach.
- Pilot conversion: Personnel in a single pilot-site use the new system, and then the entire organization makes the switch. Although this option may take more time, it is very useful in big organizations where a large number of people make the conversion.
- Corrective Maintenance: it corrects the run time errors during the operation.
- Adaptive Maintenance: It modifies or adds new features in the system.
- Perfective Maintenance: It makes the system perfect, up-to-date and improve the life of the system.
A software process model is a representation or abstraction of the software development process. It defines the various stages and activities involved in developing software, as well as the relationships between these stages and activities. Different process models exist, each with its own set of characteristics, advantages, and disadvantages. Here are some common software process models:
- waterfall model
- prototype model
- agile model
- spiral model(The Spiral model is a risk-driven software development process model that combines elements of both iterative and waterfall models. )
figure: waterfall model
Different phases of waterfall model.
- Requirements: Gathering and documenting the requirements for the software system.
- Design: Creating a detailed design of the software based on the gathered requirements.
- Implementation: Writing and coding the software based on the design specifications.
- Testing: Conducting various tests to identify and fix defects or issues in the software.
- Deployment: Deploying the software to the production environment for actual use by end-users.
- Maintenance: Maintenance in software development refers to the ongoing process of supporting, updating, and improving software products after they have been deployed.
Advantages
- It is simple model suitable for small size project.
- It is less expensive.
- Provides a structured approach to software development.
- Emphasizes documentation, aiding in project understanding and maintenance
Disadvantages
- It has no back track mechanism.
- It is not suitable for large size project.
- It has lack of proper documentation.
- lack of client involvement until late in the process.
- Higher risk of delivering a product that doesn't meet user needs.
Prototyping Model: It is the iterative process of system development which is more appropriate for developing new system where there is no clear idea of requirements, inputs and outputs. These systems are then continuously modified until the user is satisfied. This model is applied when there is an absence of detail information regarding input and output requirement of a software. It doesn't cover any risk management.
- Identify user problem: The system analyst interviews the user to obtain an idea of what is required from the system.
- Develop a prototype: The system analyst, working with other information specialist uses one or more prototyping tool to develop a prototype.
- Determine if prototype is acceptable: The system analyst educates the user in prototype and provides an opportunity becoming familiar with the system. The user advises the analyst whether the prototype is satisfactory or not. If yes then the prototype will be used if not again the loop continues from beginning.
- Use the prototype: The prototype becomes operational system.
Advantages
- The users get a better understanding of the system being developed.
- Errors can be detected much earlier as the system is made side by side.
- Quicker user feedback is an available leading to better solutions of the system.
Disadvantages
- It leads to implementing and repairing way of building systems.
- It may increase the complexity of the system as scope of the system may expand beyond original plans.
In the Agile model, the requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams. Customer satisfaction is the highest priority, and the team works closely with the customer or product owner to ensure that the product meets their needs.
steps involved in agile model
- planning
- requirement analysis
- designing
- building/coding
- testing
here are the key principles of Agile software development
- Deliver working software frequently, in short iterations.
- Embrace changing requirements, even late in development.
- Collaborate closely with customers and stakeholders throughout the project.
- Build projects around motivated individuals and trust them to get the job done.
- Prioritize face-to-face communication within the team.
- Measure progress by working software rather than documentation.
- Maintain a sustainable pace to ensure long-term productivity.
- Focus on technical excellence and simplicity to enhance agility.
- Flexibility and adaptability to changes in requirements and market conditions
- Increased customer satisfaction through regular feedback and working software delivery
- Improved collaboration, communication, and decision-making among team members and stakeholders
- Faster time to market through smaller, more frequent releases of working software
- Early and continuous testing for improved quality and defect identification
- Greater transparency and visibility into the development process and progress
- Empowered, self-organizing teams with a sense of ownership and motivation
The disadvantages of the Agile Model are as follows −
- Lack of predictability in terms of cost, schedule, and scope
- Dependency on team dynamics and collaboration
- Need for experienced team members
- Documentation challenges for compliance or regulatory reasons
- Potential for scope creep
- Customer availability and engagement challenges
The characteristics (attribute
s) of system analyst are as follows:
1.
Knowledge of organization.
2.
Technical Knowledge.
3.
Interpersonal Communication Skill.
4.
Character and Ethics.
5.
Problem-Solving Skill.
1.
Defining the problem
2. Analyzing the problem
3. Considering Many alternatives
4. Evaluating many alternative
5.
Choosing the best alternatives
6.
System analysis and Design skills
Dutie
s and Responsibilities of System
Analyst
1.
Defining Requirements
2. Prioritizing Requirements
3.
Analysis and Evaluation
4. Solving Problems
5.
Drawing up functional specification
6.
Designing System
7. Evaluating System
System Analyst vs Software Engineer
The major difference between a software engineer and a
software analyst is that the engineer’s responsibilities lie with developing and
programming the software. In some cases, the term software engineer and
programmer or developer are interchangeable. An analyst, meanwhile, is more
responsible for documenting the progress of a project for quality control and
relaying information about the end users’ preferences to the engineer or
programmer. A software analyst may also not be as technically gifted or
proficient with programming as the engineer.
|
1. Interviews:
2.
Surveys and Questionnaires: Surveys and questionnaires can be
sent out to a large group of stakeholders to gather information about their
needs and preferences. This method can be useful when collecting information
from a large number of people.
3.
Workshops and Focus Groups: Workshops and focus groups are
interactive sessions where stakeholders can collaborate and brainstorm ideas.
These sessions can be facilitated by a system analyst and can result in
valuable insights into user needs and preferences.
4.
Observation:
5.
Prototyping: Creating a prototype or mock-up of the system can
help users visualize the end product and provide feedback on what they like and
dislike about the design. This approach can be useful when collecting
requirements for a new system or feature.
6.
Document Analysis: Examining existing documentation, such as
business plans, user manuals, or technical specifications, can provide valuable
insights into the requirements for a system.
7.
Use Cases: Use cases are scenarios that describe how users
interact with the system. They can be used to identify user needs and
requirements, as well as potential areas for improvement.
8. Brainstorming: is a technique used to generate ideas and solve problems by encouraging free
and open discussion among a group of people. During a brainstorming session,
participants are encouraged to share any ideas that come to mind, no matter how
unconventional or unrealistic they may seem. The goal is to generate as many
ideas as possible, without judgment or criticism.
Software and Quality:
Software quality refers to the degree to which a software product meets its intended requirements, meets the needs of its users, and is free from defects and errors. Quality software is reliable, efficient, maintainable, and scalable, and it satisfies the functional and non-functional requirements specified by stakeholders. The quality of software is typically measured by evaluating its performance, functionality, usability, reliability, security, and maintainability.
Good software is characterized by several key attributes, including:
- Functionality: The software meets the requirements and specifications that it was designed for, and it behaves as expected when it is used in its intended environment.
- Usability: The software is easy to use and understand, and it provides a positive user experience.
- Reliability: The software is free of defects and it performs consistently and accurately under different conditions and scenarios.
- Performance: The software runs efficiently and quickly, and it can handle large amounts of data or traffic.
- Security: The software is protected against unauthorized access and it keeps the data and functions safe from malicious attacks.
- Maintainability: The software is easy to change and update, and it is well-documented, so that it can be understood and modified by other developers.
- Reusability: The software can be reused in other projects or applications, and it is designed in a way that promotes code reuse.
- Scalability: The software can handle an increasing workload and it can be easily extended to meet the changing requirements.
- Testability: The software is designed in a way that makes it easy to test and validate, and it has a comprehensive test coverage.
Feasibility study:
Feasibility
study is the most important activity in the system analysis phase. It analyses
the proposed system from different aspects so that it makes us clear that how
practical or beneficial the system will be to the organization. So it tells us
whether the system is feasible to design nor not. Thus it is necessary before
system design.
The different(types) levels of feasibility study are as:
1. Economic feasibility: it concerns with cost effectiveness of the system. The main objective of economic feasibility is to calculate approximate cost-both the development cost and the operational cost and the benefits from the system.
2. Technical feasibility: it concerns with the availability of the hardware, software and the support equipment for the complete development of the system.
3. Operational feasibility: it concerns with smooth operation of the system. It is all about the problems that may occur during operation of the system after its development.
4. Behavior feasibility: it concerns with behavior of the users and the society towards the new system. Generally, most of the traditional employees are not easily ready to upgrade them with the new system.
5. Schedule feasibility: it is the process of splitting project into tasks and estimate time and resources required to complete each task. It determines the deadline to complete a system and schedule the task accordingly.
6. Legal feasibility: it concerns with legal issue of the system. If the system is illegal then the system designing is meaningless. Everything is measured whether it is legal or illegal. It considers copyright law, foreign law, foreign trade, tax, etc.
System Design Tools:
The tools which are used to design the system in known as system design tools. They are used during system analysis and design phase of the system development.
1. Algorithm: An algorithm is defined as the finite sequences of instructions for solving a problem.
2. Flowchart: A flowchart is the pictorial representation of an algorithm which is classified into two types’ system flowchart and program flowchart.
I) System flowchart: System flowchart describes the internal architecture of a system that describes how data are moved inside the internal components of a system.
II) Program flowchart: Program flowchart describes to solve the application types of real world problem.
3. DFD (Data flow diagram):
4. Context Diagram: It is combination of many other DFD. It is the highest level of DFD. It contains only one process, representing the entire system, the process is given the symbol circle. The external entities are denoted by rectangle. The flow of data is described by arrow.
5. ER (Entity Relationship) diagram: The E-R diagram is an overall logical structure of a database that can be expressed graphically. It was developed to facilitated database design and the simplicity and pictorial clarity of this diagramming technique have done great help in the designing part of database. The main components are attributes, entities and relationship.
6. Case diagram: Computer aided software engineering tool is automatic computer based program that helps for software engineering and SDLC process. It is very fast and effective tools for the development of big scale software. It helps in analysis, design, implementation, testing and maintenance.
7. UML: Unified Modeling Language is a standardized general purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created by, the object management group. UML includes a set of graphic notation techniques to create visual models of object-oriented software.
8. Decision Table: A table allows us to identify the exact course of actions for given conditions in tabular form. Decision table is a tabular representation of the logic of a decision, which specifies the possible conditions for the decision and the resulting actions.
9. Decision Tree: Decision tree is also a technique to represent condition and actions in a diagrammatic form in computer. A decision tree allows us to identify the exact course of actions for given conditions in tree structures.
10. Pseudo Code: It is a kind algorithm for solving a problem and the instructions of pseudo code are written by using English phrase and mathematical expressions.
|
|
||||
|
No comments:
Post a Comment