Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Organizacja projektu, co najpierw, a co później
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
Kabraxis
Witam poszukuje materiałów, które pokazywały by schematy budowt i zarządzania projektem. Dla większego zrozumienia przedsawie o co mi np. chodzi:
Jest zadanie do wykonania, trzeba przygotować oskryptowanie zarządzające bazą klientów w hostingu łącznie z autoresponderem, fakturamy, danymi klienta, programem partnerskim, wyświetlaniem strony oraz innymi.
Trzeba zaprojektować bazę danych i wprowadzić obsługę wszystkiego w php.

Już raz robiłem coś takiego (wraz z drugą osobą) i wiem już jakie problemy mnie napotkają oraz wiem co będzie potrzebne co nie zostało zrobione za pierwszym razem.
Moje doświadczenie z poprzedniego razu mówi mi, że trzeba przygotować jednak na początek dobry projekt wszystkiego bo inaczej znów wszystko odbiegnie od założeń.

Od czego zacząć? Na czym skończyć? Teraz prawdopodobnie stane przed zadaniem napisania tego wszystkiego samemu bazując na poprzednim kodzie (copy and past ze zmianami, zresztą pewnie dużymi bo zmieniły się mocno założenia).

W tej chwili zacząłem od zaprojektowania jak najbardziej optymalnie bazy danych MySQL ale jest tak wiele zależności, że się troche w tym gubię...

Potrzebował bym jakiś standardów organizacji pracy. Najlepiej aby standardy te były zatwierdzone i wykładano by je np. dla studentów na uczelniach lub byłyby ogólnie przyjęte przez programistów na świecie.
Dlatego też proszę o tylko poważne odpowiedzi, a nie przemyślenia Pana Kowalskiego jak on by to zrobił.

Ze wszelką pomoc dziękuje,
pozdrawiam Kabraxis
Ociu
Proponuję projekt silnika, pomte moduły i wykończeniówki.
w skład wszystkich projektów będą wchodzić of course projekty baz danych winksmiley.jpg .
Na koniec wykończeniówki, czyli opprawienie czasu jeśli to możliwe i zabawa wyglądem smile.gif
Kabraxis
Potrzebuje czegoś zdecydowanie bardziej szczegółowego winksmiley.jpg
Napewno jest jakaś standaryzacja pracy w projektach. Chociażby szefowie grup programistów napewno muszą takie przechodzić. Chodzi mi o porządne zorganizowanie tego, a organizację w trakcie pisania bo to jest za duży projekt. A z poprzedniego razu już wiem jak to się skończy winksmiley.jpg

Pozdrawiam, Kabraxis
SongoQ
Zorganizowanie kodu to nie wszystko. Dla zwyklego usera liczy sie wyglad to co nie widzi przewaznie to go nie obchodzi. Jesli chodzi o usera to powiem tak ze warto przygotowac poszczegolne ekrany aplikacji i miec dobrze je opisane. Idac w kierunku bazy danych po zaprojektowanie formularzy mozesz stworzyc odpowiednia strukture. Wedlug formularzy jestes w stanie sobie wszystko wyobrazic. No i oczywiscie zostaje rozpisanie kodu. Jesli naprawde projekt jest duzy i wymaga rozpisanie na szczegoly to polecam UML.

Wiem ze duzo osob zanim cos do konca zaprojektuje pisze kod, ale dla klienta wazny jest efekt i czasami warto posiedziec kilka godzin nad samym zobrazowaniem projektu niz ciagle go przerabiac.
MrMag
jesli ekipa tworzaca jest wieksza to mozesz uzyc dotProjecta do zarzadzania projektem: co, kto, do kiedy itp, choc doczytalem, ze bedziesz sam, wiec nie wiem czy Ci sie przyda.
SongoQ
Jesli juz mowimy o narzedziach to systemy wersjonowania i narzedzia do projektowania baz danych.
Kabraxis
Widze, że nie do końca mnie zrozumieliście. Wiem co liczy sie dla klienta ale to ma się nijak do MySQL i php. To już design i odpowiednie wywołanie funkcji z includowanych plików w php w odpowiednim czasie. To już nie jest problem. Problemem jest stworzyć całe jądro oskryptowania i zarządzać informacją oraz na jej podstawie dokonywać odpowiednich działań.

Ja ciągle potrzebuje jakiegoś schematu organizacji pracy. Co ma zostać przemyślane i co stworzone, a co do czego dostosowane. Co ma być całością, a co oddzielnym modułem. Ponieważ nie wiem czy moje wszystkie przemyślenia są słuszne. Ale najbardziej potrzebuje jakiejś standaryzacji tego co mam pisać. Przykładowo czy najpierw powinienem stworzyć całą baze danych, później stworzyć jądro skryptu w php, a w nim umieścić poszczególne funckje, proste, które mają jedne działanie tak jak np. wyślij maila, dodaj klienta, dodaj serwer, usuń..., sprawdź okres ważności konta. Później stworzyć moduły korzystające z tych funkcji i np. sprawdzające ilość dni od zakupienia konta oraz ilość dni do daty wygaśnięcia abonamentu i na tej podstawie wysyłać emaila i blokować konta itp.
Bo taką wersję przyjąłem teraz... być może w praktyce bardziej optymalne okazuje się tworzenie po kolei każdej części czyli np. zaczynam od zarządzania bazą klientów. Tworze kwałek bazy danych potrzebny tylko do tego i kawałek jądra, który obsługuje tylko to i ruszam z następnym.
A może w praktyce sprawdza się jeszcze coś innego? (liczy się również czas pisania oraz ilość zmian w kodzie w trakcie dopisywania następnego).

Jak rozpisać te założenia? Tak jak np. na pierwszym semestrze studiów informatycznych uczy się zapisywania algorytmów za pomocą schematów blokowych aby były czytelne i było wiadomo jakie kroki będą wykonywane w skrypcie tak zapewne i tutaj ktoś mądrzejszy odemnie wymyślił pewnego rodzaju standaryzację ułatwiającą pracę i chciałbym się w tym zakresie podszkolić. Nie wiem czy istnieją takie materiały w sieci ani gdzie są dlatego zwracam się z prośbą do Was o pomoc smile.gif

Pozdrawiam, Kabraxis
bela
To o co pytasz zwie się inżynierią oprogramowania i zostało o tym napisane kilka książek (WNT ma kilka fajnych, chyba nawet serię). Najlepiej zajdź do Empiku i popatrz smile.gif
Kabraxis
Ok to już jakiś ślad tego czego mam szukać, zobaczymy co mi powie google smile.gif
Thx i czekam na jakieś inne wskazówki co i jak smile.gif

Pozdrawiam, Kabraxis

----
Dodane:
Chyba jutro wybiore się do empiku winksmiley.jpg
NoiseMc
Najprostszy ogólny schemat:
1. Określenie wymagań i funkcjonalności.
2. Scenariusz.
3. Zdefiniowanie aktorów i przypadków użycia (UML - Use Case)
4. Budowa diagramu klas na podstawie przypadków użycia.
5. Budowa struktury magazynu danych.
6. Podział prac pomiędzy ludzi.
7. Kodowanie i testowanie modułów.
8. Składanie całości z modułow.
9. Testowanie.
Ociu
Myśle, że warto przeczytać http://webcity.pl/webcity/artykuly.php/t/69 .
pozdrawiam
wojto
Ja mam zawsze podobny schemat dzialania.
Najpierw rozmowa z klientem i dokladne wypisanie wszystkich modulow i elementow serwisu, bardzo szczegolowe (lacznie z lista pol w konkretnych formularzach) tak, aby pozniej nie bylo nieporozumien i robienia czegos ponad program za darmo. Okreslamy takze przewidywane natezenie ruchu serwisu. Nastepnie rozmowa grafika z klientem odnosnie wygladu calej strony i wszystkich modulow.
Po zakonczeniu rozmow i wkonaniu designu przez grafika zabieramy sie za projektowanie. Najpierw najlepiej wszystko sobie poukladac w glowie i zapisac w pliku lub na kartce.
Programowanie zaczynamy od stworzenia struktury bazy danych (ktora prawie zawsze ulega malym modyfikacjom w pozniejszym czasie). Nastepnie tworzymy moduly, oczywiscie korzystamy z wczesniejszego swojego kodu i stworzonych wczesniej klas. Ja zawsze jako pierwsze robie obsluge uzytkownikow (rejestracja -> logowanie -> edycja profilu -> inne pomniejsze), nastepnie tworze inne moduly (newsy, artykuly, sondy itp.) na poczatku zawsze dodawanie elementow, pozniej edycje i na koncu usuwanie. Pomocne przydaje sie tutaj wzesniejsze zapisanie na kartce pol jakie maja byc w konkretnych formularzach. Jezeli projekt tworzy kilku programistow, to mozna te moduly podzielic tak, ze jedna osoba tworzy cale jadro systemu, a druga oddzielne moduly.
Na koncu przychodzi czas na optymalizacje (dodawanie indexow, keszowanie zapytan) i testowanie.

o ile dobrze pamietam, to ktorys z forumowiczow napisal kiedys artykul na temat etapow projektowania aplikacji
krzysztof f.
Temat który poruszyłeś, to temat rzeka i możnaby go zgłębiać prawdopodobnie przez całe życie. W prowadzenie projektu IT zaangażowanych jest wiele elementów: od analizy potrzeb, marketingu, budżetowania, planowania, analizy wymagań, tworzenia struktury podziału pracy, projektowania, kontrolowaniu przebiegu prac, kalkulacji ryzyka… itp. itd. po marketing oczywiście włącznie. Rozumiem, że Twoje zainteresowanie koncentruje się głównie na metodologii pracy nad kodem i samym sposobie programowania.

Cytat
To o co pytasz zwie się inżynierią oprogramowania i zostało o tym napisane kilka książek (WNT ma kilka fajnych, chyba nawet serię). Najlepiej zajdź do Empiku i popatrz


Dokładnie tak. W obecnych czasach inżynieria oprogramowania dostarcza nam wiele opracowań gotowych obiektowo zorientowanych metodologii tworzenia oprogramowania (OOA&D - Object Oriented Analysis and Design), które cały czas się zmieniają. Kiedyś kładło się nacisk na dokumentację i tzw. metodologie wodospadowe, które charakteryzowały się następującymi po sobie etapami (koniec jednego etapu oznaczał możliwość rozpoczęcia drugiego). Obecnie królują zdecydowanie metodologie iteracyjne, nastawione na szybkie efekty i wydajną pracę, popularne Agile Methodologies http://www.martinfowler.com/articles/newMethodology.html Z reguły niezależnie od wybranego procesu wyróżnić można kilka wspólnych i niezbędnych faz takich jak: zbieranie wymagań, analiza, projektowanie, implementacja, testowanie, utrzymanie gotowego produktu.
Na każdym etapie korzysta się oczywiście z innych narzędzi, pamiętając jednak, że najważniejszym jest zawsze kartka i ołówek : )
Podczas zbierania wymagań korzystasz z Use Cases (przypadki użycia) języka UML http://www.uml.org/. W wyniku fazy projektowania otrzymujesz diagramy klas, diagramy baz danych (ERD - Entity Relationship Diagram), pierwsze zestawy testów jednostkowych http://junit.sourceforge.net/doc/testinfected/testing.htm. Podczas implementacji powstaje kod i testy.

Zgodnie z http://agilemanifesto.org/ i eXtreme Programming http://www.extremeprogramming.org/
  • kod musi być czytelny i pisany zgodnie z przyjętymi standardami
  • kod jest własnością wspólną, a każdy jego fragment pisany jest przez pary programistów
  • częste integracje kodu, wypuszczanie nowych wersji
  • ściśle określone i przestrzegane terminy oraz krótkie czasy iteracji
  • optymalizację kodu odkładamy na sam koniec
  • ciągły kontakt z klientem, który uczestniczy w procesie powstawania aplikacji
  • elastyczność
  • testy, testy i jeszcze raz http://xprogramming.com/xpmag/testFirstGuidelines.htm czyli TDD http://www.testdriven.com/modules/news/
Czego będziesz napewno potrzebował?To dopiero początek…

Powodzenia,
kf
SongoQ
Odnosnie Agile prowadzone byly wyklady w firmie i naprawde bylem pod wrazeniem, wiec czytaj, czytaj i jeszcze raz czytaj i staraj sie dostosowywac.
evo
Cytat(krzysztof f. @ 2005-12-02 10:30:25)
[*]narzędzia do tworzenia diagramów uml http://www.gnome.org/projects/dia/


Sorry ale IMO DIA to nienajlepszy wybor!

Osobiscie polecam ArgoUML (niezalezne od platformy) albo StartUML

...oba sa otwartymi projektami!
halfik
sa narzedzia do zarzadzania projektami. ja mialem stycznosc jedynie z MS project ktory jest w hu hu drogi, ale pewnie sa identyczne tansze lub darmowe. trzeba troszke czasu poswiecic na przygotowanie projektu, ale w nim dokladnie rozpiszemy co kiedy i kto ma zrobic, kiedy i gdzie jakie wydatki itd. system wykryje ew. kolizje dzialn i inne takie bajery. na taki projekt trzeba powaznie czasu, ale pozniej wystarczy sie go trzymac a wszystko skonczy sie sukcesem. dopiero po przygotowaniu projektu prac mozna zaczac sobie projektowac apliakcje, modelowac baze, tworzyc grafem szablony itd.
anas
Hej.

Po prześledzeniu wątku widziałem że wyczerpująco opisał go krzysztof f., więc nie dublując dodam tylko kila sugestii odnośnie samego problemu hostingu i narzędzia z jakich ja korzystam i poleciłbym.

Ad. hosting - skupiłbym się tutaj dość mocno na sprawach zarządzania usługami - dziś większość serwerów www, db, poczta, ftp, itd. pozwalają na zarządzanie z poziomu bazy danych - najzwyczajniej w świecie dodając nowego użytkownika ftp, wrzucasz jego dane do odpowiedniej tabeli, z której korzysta serwer, podbnie z pocztą - np. qmail + vpopmail, jeżeli chodzi o serwer www, całą jego konfiguracją możesz zarządzać również z poziomu db.

Ad. narzędzia - do modelowania diagramów ER (bazy danych) poleciłbym CASE STUDIO - jest płatny, ale warty swojej ceny.

Ja osobiście korzystam z: papier, ołówek, tablica, mazak, MS VISIO, CASE STUDIO, MS PROJECT, SUBVERSION, ZEND STUDIO

GRAFIKA I SZABLONY POWSTAJĄ PRZY UŻYCIU - ADOBE PHOTOSHOP, MM DREAMWAVER, FIREFOX + WTYCZKI DLA DEV - dlaczego o tym pisze? Bo użyteczność, przemyślany, ładny, czytelny interfejs jest bardzo istotną częścią każdej aplikacji. http://www.usabilityfirst.com/ - można trochę informacji wykopać.

pozdrawiam

anas
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.