Theory SDLC
Theory SDLC
SDLC or Software Development Life Cycle is the life cycle literally of the development of a system or software. This life cycle details all the processes that a system undergoes while it is being designed. That is the basic layman understanding of what SDLC stands for. The steps of the System Development Life Cycle are detailed as below. They show the detailed working of how a system is developed for a particular project. The Software Development Life Cycle (SDLC) starts when a client expresses the need to start a new project. Once the project is in hand, the steps of the SDLC work as:
Project Planning: Planning is the core of every process and only effective planning can make a Business Analyst realize if the intended system can really be developed or not. A feasibility study is conducted in this stage to determine if the actual system intended is indeed possible to work upon or not. System Analysis and Requirements Definition: Here, the requirements of the client in the system to be developed are properly analyzed and then a final requirement definition is written by the Business Analyst in consultation with the client, who will be the end- user of the project. This requirements definition is used by the software team of programmers and developers to start the project. BRD Business Requirement Document. System Design: This is the process of SDLC where the system is actually designed as per the requirements. The process of database design, structure design, nuances of the client/server technology, defining tiers of package architecture are all defined properly in this phase. System Development: This is the phase where the actual project is made. The systems softwa re is coded in this phase. Code generation makes the system machine-readable. The code is generated by the technical team of software developers and programmers. The code is generated with the help of languages like C, C++, Java, VB, SQL and tools like debuggers and compilers System Implementation Here, the system developed is incorporated in the design of the project. The developers assemble their creations in the previous phases of the SDLC. System Integration and Testing/analysis The system generated is now checked for errors and bugs so to as to ascertain how workable the system developed really is. The System Testing/analysis phase shows whether the timelines of the project can be adhered to or how much work is still pending, depending on the number of errors and bugs found. System Acceptance and Installation Testing/analysis in live conditions is an acid test for the systems success. Testing/analysis the project in a replica of live environment will enable the softwa re developing team to ascertain whether the software developed will actually work in live conditions and as per how it was envisioned to work. System Maintenance - Once system is implemented in live conditions, it has to be maintained properly. The software developed may face some changes due to some unexpected inputs or changes due to new personnel in the organization. Hence any problems arising need to be fixed to maintain the system well. Load Balancer: A load balancer is a device that acts as a reverse proxy and distributes network or application traffic across a number of servers. Load balancers are used to increase capacity (concurrent users) and reliability of applications. They improve the overall performance of applications by decreasing the burden on servers associated with managing and maintaining application and network sessions, as well as by performing application-specific tasks.
Load balancers are generally grouped into two categories: Layer 4 and Layer 7. Layer 4 load balancers act upon data found in network and transport layer protocols (IP, TCP, FTP, UDP). Layer 7 load balancers distribute requests based upon data found in application layer protocols such as HTTP. Requests are received by both types of load balancers and they are distributed to a particular server based on a configured algorithm. Some industry standard algorithms are: Round robin Weighted round robin Least connections Least response time Layer 7 load balancers can further distribute requests based on application specific data such as HTTP headers, cookies, or data within the application message itself, such as the value of a specific parameter. Load balancers ensure reliability and availability by monitoring the "health" of applications and only sending requests to servers and applications that can respond in a timely manner. Web Server: Hypertext Transfer Protocol ( HTTP ), serves the files that form Web pages to Web users (whose computers contain HTTP clients that forward their requests). Two leading Web servers are Apache , the most widely-installed Web server, and Microsoft's Internet Information Server ( IIS ).The primary function of a web server is to deliver web pages on the request to clients using the Hypertext Transfer Protocol (HTTP). This means delivery of HTML documents and any additional content that may be included by a document, such as images, style sheets and scripts. Application Server: An application server is a server program in a computer in a distributed network that provides the business logic for an application program. The application server is frequently viewed as part of a three-tier application, consisting of a graphical user interface (GUI) server, an application (business logic) server, and a database and transaction server. More descriptively, it can be viewed as dividing an application into:
A first-tier, front-end, Web browser-based graphical user interface, usually at a personal computer or workstation A middle-tier business logic application or set of applications, possibly on a local area network or intranet server A third-tier, back-end, database and transaction server, sometimes on a mainframe or large server. Common ones are Websphere,Weblogic,Jboss.
Database Server: Database server is the term used to refer to the back-end system of a database application using client/server architecture. The back-end, sometimes called a database server, performs tasks such as data analysis, storage, data manipulation, archiving, and other non-user specific tasks. Common ones are Oracle,DB2,Mysql,Sybase. IT Designations:
Project Manager: Produce a progress report monthly Review the risk register monthly Weekly communication meetings with Team Principals Review weekly progress reports of Team Principals Approval of purchase order requisitions Approval of supplier invoices for payment Weekly telephone updates to the sponsor Induct new Team members into the project Market the project internally Produce a monthly project newsletter Maintain a project blog Overlooks the project with resource management, escalations and budgeting.
Architect: In systems design, the architects is responsible for: Interfacing with the user(s) and sponsor(s) and all other stakeholders in order to determine their (evolving) needs. Generating the highest level of system requirements, based on the user's needs and other constraints such as cost and schedule. Ensuring that this set of high level requirements is consistent, complete, correct, and operationally defined. Performing cost-benefit analyses to determine whether requirements are best met by manual, software, or hardware functions; making maximum use of commercial off-the-shelf or already developed components. Developing partitioning algorithms (and other processes) to allocate all present and foreseeable requirements into discrete partitions such that a minimum of communications is needed among partitions, and between the user and the system. Partitioning large systems into (successive layers of) subsystems and components each of which can be handled by a singleengineer or team of engineers or subordinate architect. Interfacing with the design and implementation engineers and architects, so that any problems arising during design or implementation can be resolved in accordance with the fundamental design concepts, and user needs and constraints. Ensuring that a maximally robust design is developed. Generating a set of acceptance test requirements, together with the designers, test engineers, and the user, which determine that all of the high level requirements have been met, especially for the computer-human-interface. Generating products such as sketches, models, an early user guide, and prototypes to keep the user and the engineers constantly up to date and in agreement on the system to be provided as it is evolving. Ensuring that all architectural products and products with architectural input are maintained in the most current state and never allowed to become obsolete. Developer:
Application developers use programming languages and source code to create software that meets client requirements. Developers may work with multiple programming languages and operating systems. Requirements and duties vary for developers depending on employer or client needs.
Application development involves the process, life cycle and creation of the software aimed at helping users complete a computer task or program. Developers work closely with computer analysts and engineers in using languages such as Java, C++ or ORACLE to develop the necessary specifications for software. Developers may also test, debug and improve generally faulty applications for clients. Responsibilities vary for developers based on level of experience, type of application platform and employer. Application developers often have the duty of creating, maintaining and implementing the source code that makes up the application or program. Application developers may also be responsible for designing the prototype application, indicate program unit structure, and coordinate application plans with the development team or client.
Database Administrator: A database administrator (short form DBA) is a person responsible for the installation, configuration, upgrade, administration,monitoring and maintenance of databases in an [1] organization. The role includes the development and design of database strategies, system monitoring and improving database performance and capacity, and planning for future expansion requirements. They may also [2] plan, co-ordinate and implement security measures to safeguard the database.
A database administrator's responsibilities can include the following tasks: Installing and upgrading the database server and application tools
[6]
Allocating system storage and planning future storage requirements for the database system Modifying the database structure, as necessary, from information given by application developers Enrolling users and maintaining system security Ensuring compliance with database vendor license agreement Controlling and monitoring user access to the database Monitoring and optimizing the performance of the database Planning for backup and recovery of database information Maintaining archived data Backup|Backing up and restoring databases Contacting database vendor for technical support Generating various reports by querying from database as per need.
Network Administrator:
Under general direction designs, supports, maintains, and evaluates computer networking and telecommunication systems; installs, configures, and maintains both physical and virtual computer servers; maintains employee network, e-mail and card key access accounts; performs other related duties as assigned.
Oversees the day-to-day operation of computer networks including hardware/software support, training, and special projects; plans, designs and implements data connectivity for local area network (LAN) and wide area network (WAN) systems; assists in coordinating special projects including network related wiring plans, LAN/WAN hardware/software purchases, and system installation, backup, maintenance and problem solving; assists in providing network and remote connectivity hardware/software support; maintains LAN user documentation including hardware/software applications, support logs and other related information; researches and recommends network and server hardware and software; assists in installing, designing, configuring, and maintaining system hardware and software; analyzes and troubleshoots the network logs and tracks the nature and resolution of problems; monitors usage to ensure security of data and access privileges; installs, supports and maintains both physical and virtual network servers and appliances; installs, maintains, and troubleshoots the Storage Area Network (SAN); establishes and maintains user accounts, profiles, file sharing, access privileges and security; performs daily server tape backups; researches, analyzes, monitors, troubleshoots and resolves server or data network problems; develops, maintains and implements network support, and archiving procedures; researches and evaluates new technologies related to computer networking; assists in planning, coordinating and consulting with vendors and clients for hardware/software purchases, product services and support; recommends and specifies the purchase of related products and services; keeps current regarding new hardware/software products for system enhancements; assists and provides support to the Coordinator, WAN/LAN, and other technology staff as requested including performing scheduled network tasks, updating anti-virus definition files, monitoring network servers, and providing internet and intranet user support, and specialized training. QA Tester: A quality assurance tester, or QA tester, is tasked with testing/analysis software and finding errors and bugs to report back to a development team. These software testers are a vital part of releasing stable, bug-free software. A tester will be presented with a piece of software and certain testing/analysis criteria. They will evaluate, troubleshoot and test the software repeatedly in search of bugs and errors. These problems with the software are then logged, prioritized and tracked by the programmers. Essentially, the QA tester simulates an end user and seeks out problems they may encounter. Business Analysts: What Is A Business Analyst ?
A business analyst is an individual who works with the management of a company in order to help them do a better job of organizing the company and making it as profitable as it possibly can be. The business analyst will use a variety of methods to make this possible.
General Responsibilities of a Business Analyst
The business analyst has various general responsibilities concomitant to their job role. The business analyst must review the data of a company as well as their current work habits and make suggestions for doing a more efficient job. Business analysts are also responsible for training employees from time to time and developing standards and procedures for
the work force to follow. At the end of their training sessions and analysis, they will provide the company with a detailed report of how the company is doing and what it should be like in the future.
Performance Engineer/Tester: You only want to test business critical, high volume and performance risk transactions. Business critical transaction: These are transactions that will have an impact on the financial side of the business. E.x checking out a product from walmart.com. It will loose business and hurt the revenue. High volume transactions: Any transaction that gets executed for a high number compared to other transactions. E.x Gmail you are sending lot of emails and receiving emails. So the volume count is very high with multiple users. When that happens performance degrades. Performance Risk transaction: Any transaction that has a performance impact on the application. Like searching, saving, pulling reports. In short any transaction that takes longer than usual to get executed. Developers or database admin will provide these. Performance engineering within systems engineering, encompasses the set of roles, skills, activities, practices, tools, and deliverables applied at every phase of the Systems Development Life Cycle which ensures that a solution will be designed, implemented, and operationally supported to meet the nonfunctional performance requirements defined for the solution. It may be alternatively referred to as software performance engineering within software engineering; however since performance engineering encompasses more than just the software, the term performance engineering is preferable. Adherence to the non-functional requirements is validated by monitoring the production systems. This is part of IT service management (see also ITIL). Performance engineering has become a separate discipline at a number of large corporations, with tasking separate but parallel to Systems Engineering. It is pervasive, involving people from multiple organizational units; but predominantly within the information technology organization.